MCP server by getway
掘金量化 MCP 服务
掘金量化SDK的完整 MCP (Model Context Protocol) 服务封装,为 AI 助手提供量化交易能力。
30 个 MCP 工具 | 行情查询 | 财务数据 | 交易日历 | 持仓查询 | 交易下单 | 系统信息
gm-cli 命令行工具 | 本地快速查询 | 脚本自动化 | 数据导出
📚 文档导航
新手入门
- 安装指南 - 详细安装步骤、环境配置、常见问题
- 使用指南 - MCP 服务详细使用教程
- gm-cli 使用指南 - 命令行工具详细教程 ⭐
- 环境变量配置 - 环境变量详细说明
架构与设计
维护与开发
更新日志
- 更新日志 - 版本更新记录
功能特性
- 🔍 行情数据 - 历史行情、实时行情、标的列表、交易日历
- 📊 财务数据 - 估值指标、三大报表、市值、指数成分股
- 💹 交易操作 - 持仓/资金/委托/成交查询、买卖下单、撤单
- 🖥️ CLI 工具 - 命令行直接调用,支持表格/JSON/CSV 输出
- 🌐 Streamable HTTP - 标准 HTTP 服务模式,支持网络访问和多客户端
- 🔐 Header透传 - Token 和 Account ID 通过 HTTP Header 传递,服务端无状态
- ⚡ 生产就绪 - 统一异常处理、日志系统、ContextVar 隔离
快速开始
前置条件
- Python 3.10-3.13
- 掘金量化终端 已安装并启动
- 掘金 Token(从终端获取)
安装
目前仅支持从源码安装:
git clone https://github.com/getway/juejin-mcp.git
cd juejin-mcp
# 使用国内镜像源(推荐,速度更快)
pip install -e . -i https://pypi.tuna.tsinghua.edu.cn/simple
# 或使用官方源
pip install -e .
提示: 项目尚未发布到 PyPI,敬请期待!
启动
MCP 服务模式
⚠️ 重要:MCP 服务采用无状态设计,Token 和 Account ID 必须由客户端通过 HTTP Header 传递。
# 启动服务(只需配置数据服务器地址)
python -m gm_mcp
# 自定义监听地址和端口
python -m gm_mcp --host 127.0.0.1 --port 9000
客户端配置示例(必需):
{
"mcpServers": {
"gm-mcp": {
"url": "http://127.0.0.1:8000/mcp",
"headers": {
"X-GM-Token": "你的Token",
"X-GM-Account-Id": "你的账户ID"
}
}
}
}
注意:
- 服务端不需要配置 Token 和 Account ID
- 这些凭证由 MCP 客户端通过 HTTP Header 传递
config.env仅用于配置数据服务器地址(GM_HOST/GM_PORT)
CLI 工具模式
# 查询最新价
gm-cli price SHSE.600519
# 查询标的信息
gm-cli info SHSE.600519,SZSE.000001
# 查询历史行情
gm-cli history SHSE.600519 --start 2026-04-01 --end 2026-04-10
# 查询账户资金
gm-cli cash
# 查询持仓
gm-cli position
# 买入下单
gm-cli buy SHSE.600519 --volume 100
# 导出为 CSV
gm-cli history SHSE.600519 --format csv --output data.csv
提示: CLI 工具需要设置
GM_TOKEN环境变量或在命令中使用--token参数。
客户端配置
⚠️ 重要说明
gm-mcp 是标准的 MCP 服务,必须通过 MCP 客户端使用,不能直接用 curl 调用。
✅ 正确方式: 在 MCP 客户端(如 Hermes、Claude Desktop、Cursor 等)中配置连接。
❌ 错误方式: 直接用 curl 发送 HTTP 请求(无法正确处理会话状态)。
gm-mcp 服务采用无状态设计,Token 和 Account ID 必须由客户端传递:
| 配置项 | gm-cli | gm-mcp | |--------|--------|--------| | Token 来源 | 自动读取 config.env | 客户端 HTTP Header | | Account ID 来源 | 自动读取 config.env | 客户端 HTTP Header | | 数据服务器 | config.env | config.env |
MCP 客户端配置
必需 HTTP Headers:
X-GM-Token- 掘金认证Token(必需)X-GM-Account-Id- 掘金交易账户ID(交易功能必需)
配置示例:
{
"mcpServers": {
"gm-mcp": {
"url": "http://127.0.0.1:8000/mcp",
"headers": {
"X-GM-Token": "你的Token",
"X-GM-Account-Id": "你的账户ID"
}
}
}
}
Cursor
在 ~/.cursor/mcp.json 中添加:
{
"mcpServers": {
"gm-mcp": {
"url": "http://127.0.0.1:8000/mcp",
"headers": {
"X-GM-Token": "你的掘金Token",
"X-GM-Account-Id": "你的账户ID"
}
}
}
}
Claude Desktop
在 claude_desktop_config.json 中添加:
{
"mcpServers": {
"gm-mcp": {
"url": "http://127.0.0.1:8000/mcp",
"headers": {
"X-GM-Token": "你的掘金Token",
"X-GM-Account-Id": "你的账户ID"
}
}
}
}
CodeBuddy
在 .codebuddy/mcp.json 中添加:
{
"mcpServers": {
"gm-mcp": {
"url": "http://127.0.0.1:8000/mcp",
"headers": {
"X-GM-Token": "你的掘金Token",
"X-GM-Account-Id": "你的账户ID"
}
}
}
}
curl 测试
# 列出工具
curl -X POST http://localhost:8000/mcp \
-H "Content-Type: application/json" \
-H "X-GM-Token: 你的Token" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'
# 查询茅台实时价格
curl -X POST http://localhost:8000/mcp \
-H "Content-Type: application/json" \
-H "X-GM-Token: 你的Token" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"query_current_price","arguments":{"symbols":"SHSE.600519"}}}'
工具列表
MCP 服务工具(30个)
行情数据(10个工具)
| 工具 | 说明 |
|------|------|
| get_symbol_info | 标的基本信息(名称、上市日期、交易单位) |
| get_symbols_list | 获取标的列表(支持按类型/交易所/日期过滤) |
| get_history_symbol_info | 标的历史交易信息 |
| query_history | 历史行情(支持复权、跳过停牌) |
| query_history_n | 最近N条历史行情 |
| query_current | 当前行情快照(支持集合竞价数据) |
| query_current_price | 当前最新价 |
| get_trading_dates | 交易日历 |
| get_previous_trading_dates | 前N个交易日 |
| get_next_trading_dates | 后N个交易日 |
财务数据(9个工具)
| 工具 | 说明 |
|------|------|
| query_valuation | 估值指标(PE/PB/PS/股息率) |
| query_market_value | 市值指标(总市值/流通市值/企业价值) |
| query_basic_daily | 基础指标(收盘价/换手率/股本) |
| query_index_constituents | 指数成分股和权重 |
| query_balance_sheet | 资产负债表 |
| query_cashflow | 现金流量表 |
| query_income_statement | 利润表 |
| query_finance_prime | 财务主要指标 |
| query_finance_deriv | 财务衍生指标 |
交易操作(9个工具)
| 工具 | 说明 |
|------|------|
| get_position_query | 持仓查询 |
| get_cash_query | 资金查询(余额/可用/冻结/净值/市值) |
| get_orders_query | 委托查询(支持按标的/方向/状态过滤) |
| get_execrpts_query | 成交查询 |
| order_buy | 买入下单(支持市价/限价) |
| order_sell | 卖出下单(支持市价/限价) |
| order_cancel_by_id | 根据订单号撤单 |
| batch_order_cancel | 批量撤单(支持按标的/方向过滤) |
| get_order_by_id | 根据订单号查询委托详情 |
补充工具(2个工具)
| 工具 | 说明 |
|------|------|
| get_position_detail | 查询指定标的的持仓详情 |
| get_sdk_version | 查询掘金SDK版本号 |
gm-cli 命令行工具
gm-cli 是一个命令行工具,允许用户在本机直接调用掘金量化 SDK 的功能,无需启动 MCP 服务。
可用命令
| 命令 | 功能 | 示例 |
|------|------|------|
| price | 查询最新价 | gm-cli price SHSE.600519 |
| info | 查询标的信息 | gm-cli info SHSE.600519 |
| history | 查询历史行情 | gm-cli history SHSE.600519 |
| cash | 查询账户资金 | gm-cli cash |
| position | 查询持仓 | gm-cli position |
| buy | 买入下单 | gm-cli buy SHSE.600519 --volume 100 |
| sell | 卖出下单 | gm-cli sell SHSE.600519 --volume 100 |
输出格式
# 表格输出(默认)
gm-cli price SHSE.600519
# JSON 输出
gm-cli price SHSE.600519 --format json
# CSV 输出
gm-cli history SHSE.600519 --format csv --output data.csv
与 MCP 服务的区别
| 特性 | gm-cli | gm-mcp | |------|--------|--------| | 使用方式 | 命令行 | MCP 协议 | | 适用场景 | 本地快速查询/脚本自动化 | AI 工具调用 | | AI 集成 | ❌ | ✅ | | 输出格式 | 表格/JSON/CSV | JSON |
环境变量配置
⚠️ 配置区别
| 工具 | Token/Account ID | 数据服务器 | |------|------------------|------------| | gm-cli | 自动读取 config.env | config.env | | gm-mcp | 客户端 HTTP Header | config.env |
配置变量
| 变量名 | gm-cli | gm-mcp | 说明 |
|--------|--------|--------|------|
| GM_TOKEN | config.env | ❌ 客户端 Header | 掘金量化 Token |
| GM_ACCOUNT_ID | config.env | ❌ 客户端 Header | 交易账户 ID |
| GM_HOST | config.env | config.env | 数据服务器地址 |
| GM_PORT | config.env | config.env | 数据服务器端口 |
配置方式
gm-cli 配置(自动读取):
# 在项目根目录创建配置文件(只需一次)
copy config.env.example config.env
# 编辑配置文件,填入真实值
# gm-cli 会自动读取,无需额外操作!
gm-mcp 配置(客户端传递):
{
"mcpServers": {
"gm-mcp": {
"url": "http://127.0.0.1:8000/mcp",
"headers": {
"X-GM-Token": "你的Token",
"X-GM-Account-Id": "你的账户ID"
}
}
}
}
重要提示:
- gm-mcp 服务采用无状态设计,Token 和 Account ID 必须由客户端通过 HTTP Header 传递
- 服务端的
config.env仅用于配置数据服务器地址(GM_HOST/GM_PORT)
详细配置说明请参考:环境变量配置指南
配置说明
命令行参数
| 参数 | 默认值 | 说明 |
|------|--------|------|
| --gm-host | 127.0.0.1 | 掘金数据服务器地址 |
| --gm-port | 7001 | 掘金数据服务器端口 |
| --host | 0.0.0.0 | MCP服务监听地址 |
| --port | 8000 | MCP服务监听端口 |
| --workers | 1 | worker进程数 |
环境变量
| 变量 | 说明 |
|------|------|
| GM_HOST | 掘金数据服务器地址 |
| GM_PORT | 掘金数据服务器端口 |
| MCP_HOST | MCP服务监听地址 |
| MCP_PORT | MCP服务监听端口 |
| LOG_LEVEL | 日志级别 (DEBUG/INFO/WARNING/ERROR) |
Symbol 格式规范
| 类型 | 格式 | 示例 |
|------|------|------|
| 股票 | 交易所.代码 | SHSE.600519(贵州茅台) |
| ETF | 交易所.代码 | SZSE.159915(创业板ETF) |
| 指数 | 交易所.代码 | SHSE.000300(沪深300) |
| 期货 | 交易所.合约 | SHFE.au2506(黄金期货) |
交易所代码
| 代码 | 交易所 | |------|--------| | SHSE | 上海证券交易所 | | SZSE | 深圳证券交易所 | | CFFEX | 中国金融期货交易所 | | SHFE | 上海期货交易所 | | DCE | 大连商品交易所 | | CZCE | 郑州商品交易所 | | INE | 上海国际能源交易中心 | | GFEX | 广州期货交易所 |
项目结构
juejin-mcp/
├── src/
│ ├── gm_mcp/ # MCP 服务源代码
│ │ ├── __init__.py
│ │ ├── __main__.py
│ │ ├── server.py # MCP服务器主入口
│ │ ├── config.py # 全局配置管理
│ │ ├── helpers.py # 工具函数
│ │ ├── middleware.py # HTTP Header中间件
│ │ ├── exceptions.py # 异常处理装饰器
│ │ └── tools/ # MCP工具模块
│ │ ├── market.py # 行情数据工具
│ │ ├── finance.py # 财务数据工具
│ │ ├── trading.py # 交易操作工具
│ │ └── extra.py # 补充工具
│ │
│ └── gm_cli/ # CLI 工具源代码
│ ├── __init__.py
│ └── __main__.py # CLI 主入口
│
├── skills/ # AI 技能文档
│ ├── gm-mcp/ # MCP 服务技能
│ ├── gm-cli/ # CLI 工具技能
│ └── quant-juejin-sdk/ # SDK 技能文档
│
├── tests/ # 测试
├── .env.example # 环境变量模板
├── pyproject.toml # 项目配置
├── CHANGELOG.md # 更新日志
├── CONTRIBUTING.md # 贡献指南
├── LICENSE # MIT许可证
└── README.md # 本文件
开发指南
本地开发
# 克隆仓库
git clone https://github.com/getway/juejin-mcp.git
cd juejin-mcp
# 创建虚拟环境
python -m venv .venv
source .venv/bin/activate # Linux/Mac
.venv\Scripts\activate # Windows
# 安装开发依赖
pip install -e ".[dev]"
# 运行测试
pytest
# 代码格式化
ruff format .
ruff check .
添加新工具
- 在
src/gm_mcp/tools/对应模块中添加工具函数 - 使用
@mcp.tool()和@safe_tool装饰器 - 在函数文档字符串中说明参数
- 更新 README.md 工具列表
已知限制
财务数据工具超时问题
部分财务工具(query_market_value, query_balance_sheet 等)可能出现超时,原因:
- 模拟账户未订阅财务数据包 - 需要在掘金终端订阅
- 数据量大 - 财务数据查询耗时较长
- 免费版限制 - 部分财务数据需要付费版本
解决方案:
- 检查掘金终端是否开通财务数据权限
- 减少查询标的数量
- 增加超时时间配置
其他限制
get_contract_expire_days仅支持期货/期权/可转债,不支持股票get_trading_session查询所有标的时可能超时,建议指定具体标的
常见问题
如何获取掘金Token?
- 下载并安装掘金量化终端
- 注册并登录终端
- 在终端设置中复制 Token
交易功能需要什么配置?
交易功能(下单、撤单等)需要在 MCP 客户端配置中添加 X-GM-Account-Id Header:
- 掘金终端已开启仿真/实盘模式
- 在 MCP 客户端配置的
headers中添加"X-GM-Account-Id": "你的账户ID" - 账户已在掘金终端中绑定
免费版有什么限制?
- 历史数据仅限180天
- L2行情数据不可用
- 中证系列指数成分股权重不提供(weight=0)
如何在IDE中使用?
在 Cursor / Claude Desktop / CodeBuddy 等 MCP 客户端中配置 HTTP 连接,在 headers 中传入 Token:
{
"mcpServers": {
"gm-mcp": {
"url": "http://127.0.0.1:8000/mcp",
"headers": {
"X-GM-Token": "你的掘金Token",
"X-GM-Account-Id": "你的账户ID"
}
}
}
}
先启动服务:python -m gm_mcp