简述
今年的工作全部精力都投入到Agent相关内容了,惊叹于AI发展过于迅速,尤其是AI编程在今年实现了商业化,自己也买了一年GLM订阅。今年也是我的投资生涯元年,看了几本书就妄想能在股市中大展手脚,好在今年是牛市,收益也超出了自己的预期,我的原则是不追求短期利益,着眼于长期投资。投资也是一个技术活,要看懂周期,看懂行业,看懂技术指标,在繁忙的工作中,这些分析会占用很大的精力,我在想,能否自己来做一个投资Agent来帮我分析呢?
接下来便投入到了研究和探索。最早接触到的是TradingAgents,它是Github一个开源的股票分析项目,多个Agent根据获取的不同信息,左右互搏,帮助投资者实现分析目的。为了深入分析这套体系,我用trpc-Agent-go重新实现了改项目,获取资源的工具统一用mcp实现,这一套下来,看起来分析的是头头是道,但是内容太多普通人难以辨别,运行一次就需要10-20分钟,并且该项目没有一个好的前端用户体验,遂作废。
从TradingAgents学到的经验,我总结了要做好一个投资助手要满足以下条件:
1.架构上要够简单,能够泛化
2.数据源要稳定,市场上开源数据很难同时一次性满足A股、港股、美股
3.要有一个好的客户端用户体验,电脑、手机设备
为此以下,我设计了这套解决方案:使用开源客户端,接入大模型,接入MCP数据源,设计提示词,只需要输入股票代码便能够分析。下面将详细记录我的做法。
graph TB
A[用户] --> B[AI客户端<br/>Cherry Studio/Kelivo/RikkaHub]
B --> C[AI Agent<br/>GLM4.6/OpenRouter]
C --> D[MCP工具层]
D --> E[LongPort MCP<br/>行情数据/交易执行]
E --> F[长桥OpenAPI<br/>A股/港股/美股]
B --> G[提示词引擎]
C --> H[投资分析逻辑]
D --> I[风险监控]
style A fill:#e1f5fe
style B fill:#f3e5f5
style C fill:#e8f5e8
style D fill:#fff3e0
style E fill:#ffebee
数据源选型
开源仓库:https://github.com/longportapp/openapi
数据源选择的是长桥,长桥是一家位于香港的券商,他们有着阿里的背景,核心创始团队很多来自阿里,在2025年5月16日便开放了mcp,据说是券商行业首个mcp,一次性可以接入A股、港股、美股数据。
他们的mcp是使用的rust实现,很多mcp客户端可能是由于协议差异原因,无法接入,后面我会详细讲解。
大模型选型
这部分其实选择最好的模型即可,需要支持Function Call。我自己付费了Openrouter和GLM,目前用的是GLM4.6较多一些。
客户端选型
以下都是开源的客户端
构建MCP服务
这部分原本我觉得会很快完成的,没想到长桥的mcp在手机的客户端无法使用,付出了很大精力寻找手机客户端,在项目Issues中提问,寻找解决方案,退而求其次web版的lobe-chat总应该行吧?连接是正常的,但是调用异常。
后来我偶然间想到是否有mcp代理服务,比如将stdio协议转换成streamable http协议,将sse协议转换成stdio等,也就是协议的互转。也许能够解决协议不兼容的部分。fastmcp proxy可以完美实现我的想法。
接下来还要解决访问权限的问题,长桥mcp并没有该功能,我的解决方案是加一层nginx,使用http用户名/密码基本身份验证,作为个人使用足够了。最后完美方案是nginx + fastmcp-proxy + longport-mcp架构。
项目目录
1
2
3
4
5
6
7
8
9
10
11
|
.
├── docker-compose.yaml
├── longport
│ ├── Dockerfile
│ ├── mcp-servers.json
│ ├── proxy_server.py
│ └── requirements.txt
└── nginx
├── .htpasswd
└── conf.d
└──api.conf
|
nginx
api.conf
1
2
3
4
5
6
7
8
9
|
server {
listen 80;
location /mcp {
auth_basic "please input password";
auth_basic_user_file /etc/nginx/.htpasswd;
proxy_pass http://longport:8000/mcp;
}
}
|
.htpasswd
1
2
3
4
|
# Debian/Ubuntu
sudo apt-get install apache2-utils
# CentOS/RHEL
sudo yum install httpd-tools
|
请特别注意 -c参数只在第一次创建文件时使用,后续添加用户时去掉 -c,以免覆盖现有文件
1
|
sudo htpasswd -c /etc/nginx/.htpasswd myuser
|
1
|
sudo htpasswd /etc/nginx/.htpasswd anotheruser
|
nginx + longport-mcp架构
这是直接使用长桥mcp服务,该方案存在大部分客户端兼容性问题
flowchart LR
A[AI客户端] --> B{HTTP请求<br/>:8080}
B --> C[Nginx<br/>Basic Auth]
C --> D[LongPort MCP<br/>HTTP服务]
D --> E[长桥证券API]
C --> F[认证失败]
F --> G[401错误]
D --> H[协议兼容性问题]
H --> I[连接异常]
style C fill:#fff3e0
style D fill:#ffebee
style H fill:#ffcdd2
longport-mcp(Dockerfile)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
FROM debian:bookworm-slim
# 安装必要的运行时依赖
RUN apt-get update && apt-get install -y \
curl \
ca-certificates \
unzip \
tar \
sudo \
&& rm -rf /var/lib/apt/lists/*
# 创建目录和日志
RUN mkdir -p /app/logs
# 下载并安装 longport-mcp
RUN curl -sSL https://raw.githubusercontent.com/longportapp/openapi/refs/heads/main/mcp/install | bash
# 暴露端口
EXPOSE 8000
# 设置工作目录
WORKDIR /app
# 启动命令 (直接使用环境变量,程序自动读取)
CMD ["longport-mcp", "--http", "--readonly", "--bind", "0.0.0.0:8000", "--log-dir", "/app/logs"]
|
docker-compose.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
version: '3.8'
services:
longport-nginx:
image: nginx:alpine
ports:
- "8080:80"
volumes:
# 挂载配置文件目录
- ./nginx/conf.d:/etc/nginx/conf.d
# 挂载Lua脚本和依赖库目录
- ./nginx/.htpasswd:/etc/nginx/.htpasswd
depends_on:
- longport
restart: unless-stopped
longport:
build: ./longport
environment:
# 中国地区配置
- LONGPORT_REGION=CN
# 认证信息 (请填入你的真实信息)
- LONGPORT_APP_KEY=your-app-key
- LONGPORT_APP_SECRET=your-app-secret
- LONGPORT_ACCESS_TOKEN=your-access-token
# 日志配置
- RUST_LOG=info
volumes:
- ./logs:/app/logs
restart: unless-stopped
|
nginx + fastmcp-proxy + longport-mcp架构
完美兼容性方案
flowchart TB
A[用户设备] --> B[AI客户端]
B --> C[HTTP请求]
C --> D{Nginx反向代理<br/>端口8080}
D --> E[Basic Auth认证]
E --> F[FastMCP Proxy<br/>协议转换]
F --> G[LongPort MCP<br/>Stdio协议]
G --> H[长桥证券API]
subgraph "安全边界"
D --> E --> F
end
subgraph "协议转换层"
F --> G
end
subgraph "数据服务层"
G --> H
end
style D fill:#ffebee
style F fill:#e8f5e8
style G fill:#e1f5fe
fastmcp-proxy + longport-mcp(Dockerfile)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
FROM python:3.11-slim
# Set working directory
WORKDIR /app
# Install system dependencies
RUN apt-get update && apt-get install -y \
curl \
ca-certificates \
unzip \
tar \
sudo \
&& rm -rf /var/lib/apt/lists/*
# Copy requirements and install Python dependencies
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
RUN mkdir -p /app/logs
# Download and Install longport-mcp
RUN curl -sSL https://raw.githubusercontent.com/longportapp/openapi/refs/heads/main/mcp/install | bash
# Copy the proxy server code
COPY . .
# Expose port
EXPOSE 8000
# Run the proxy server
CMD ["python", "proxy_server.py"]
|
proxy_server.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
#!/usr/bin/env python3
import json
from fastmcp import FastMCP
# Load config from JSON file
config_path = "/app/mcp-servers.json"
with open(config_path, 'r') as f:
config = json.load(f)
# Create and run proxy
proxy = FastMCP.as_proxy(config, name="MCP Proxy")
if __name__ == "__main__":
proxy.run(
stateless_http=True,
transport="http",
host="0.0.0.0",
port=8000
)
|
mcp-servers.json
1
2
3
4
5
6
7
8
9
10
11
12
|
{
"mcpServers": {
"longport-mcp": {
"command": "/usr/local/bin/longport-mcp",
"env": {
"LONGPORT_APP_KEY": "your-app-key",
"LONGPORT_APP_SECRET": "your-app-secret",
"LONGPORT_ACCESS_TOKEN": "your-access-token"
}
}
}
}
|
requirements.txt
docker-compose.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
version: "3.8"
services:
longport-nginx:
image: nginx:alpine
ports:
- "8080:80"
volumes:
# 挂载配置文件目录
- ./nginx/conf.d:/etc/nginx/conf.d
# 挂载Lua脚本和依赖库目录
- ./nginx/.htpasswd:/etc/nginx/.htpasswd
depends_on:
- longport
restart: unless-stopped
longport:
build: ./longport
environment:
# 日志配置
- RUST_LOG=info
volumes:
- ./logs:/app/logs
- ./longport/mcp-servers.json:/app/mcp-servers.json
restart: unless-stopped
|
编写提示词
提示词可以根据自己的投资风格进行编写,千人千面,这里就不进行分享了。
结语
工具只是辅助,万不可全部都相信工具、大V,投资需谨慎。最后,祝大家在投资的道路上都能挣大钱!
参考