Claude Code 配 TaoToken:跑通 FinQ4Cn 的 A 股 MCP 量化分析
FinQ4Cn 的 fs_server.py 把 akshare 的 A 股数据封成 MCP 工具TaoTokenhttps://taotoken.net/?utm_sourcetaotoken_aicg_blog_end负责补上那条能吃 Token 的模型通道。Cherry Studio 和 MCP Inspector 都能识别 MCP 工具列表但要真正展开持续追问的量化对话还得有一个稳定的模型宿主。这次把两件事合在一起做先在 TaoToken 创建 API Key把 Base URL 填进 Claude Code 的模型配置再把 FinQ4Cn 原生的 mcpServers 配置挂到 Claude Code 上让 fs_server.py 作为 MCP 服务器跑起来。这样打开 Claude Code 后一边是走统一通道的模型调用一边是以 MCP 客户端身份连上的 A 股数据网关股票代码、财务摘要、融资融券、pybroker 止盈回测都能用自然语言追问。1. FinQ4Cn 的 fs_server.py 把 akshare 封成了哪些工具1.1 fs_server.py 启动后暴露的 MCP 工具面FinQ4Cn-mcp-server 的入口是mcp-server/fs_server.py底层用FastMCP构建服务端数据来自akshare参数校验用Pydantic回测靠pybroker。它在 MCP 协议里注册的工具不是一两个stocks_common_metrics文件夹下的get_stock_code、get_stock_zygc_em、get_stock_financial_abstract、get_stock_margin_detail、get_stock_fhps_detail新闻类的financial_news和stock_news还有回测用的strategy_buy_with_stop_loss都挂在同一个服务器上。项目结构里还有stocks_risk_alert.py处理风险提示、quant_analysis.py做量化指标、backtesting.py承接策略回测、news_report.py管新闻。这些模块不用你逐个打开但心里有个数工具调用返回的数据口径是分布在这几个文件里的。如果你想先看清楚工具清单可以在装完依赖后直接跑fs_server.py再用 MCP Inspector 连一下。但那个界面只负责列出工具和手动调用真正想连续追问「这家公司主营构成是什么、最近融资余额变化多少、拿过去三年数据跑一遍止盈回测」还是得换一个能长期维持上下文的客户端。1.2 MCP 只管工具发现模型通道得另找MCP 解决的是工具发现和调用不解决模型从哪来、Token 怎么计。FinQ4Cn 把 akshare 的取数逻辑封成标准接口之后MCP 客户端负责把工具描述塞给模型模型再决定调哪个工具、传什么参数。这一步必须有一个能稳定响应的模型通道。Cherry Studio 和 MCP Inspector 各自有集成方式但它们要么绑定自家配置要么偏调试向。Claude Code 本身是命令行里的编程代理天然支持 MCP 服务器也能通过环境变量指向自定义的 Anthropic 兼容通道。把 FinQ4Cn 挂上去就等于给这个 MCP 数据网关配了一个能持续对话的量化分析工作台。2. 装依赖venv、requirements.txt 与 lib-pybroker 的回测补丁2.1 克隆 FinQ4Cn-mcp-server 并隔离虚拟环境原始仓库的安装步骤很直接克隆、建 venv、装依赖。这一步不要跳因为 akshare 和 pybroker 对 pandas 版本有各自的要求混在全局环境里容易出问题。git clone https://github.com/jinhongzou/FinQ4Cn-mcp-server.git cd FinQ4Cn-mcp-server python -m venv venv source venv/bin/activate pip install -r requirements.txtWindows 下激活命令换成venv\Scripts\activate。虚拟环境建好之后后面写 mcpServers 配置时要用的 python 解释器路径就从这个 venv 里取不要指向系统 python。2.2 回测依赖单独补一遍 lib-pybrokerrequirements.txt 里不一定锁死了回测包。原文给的建议是换一个索引装 lib-pybrokerpip install lib-pybroker -i https://pypi.tuna.tsinghua.edu.cn/simple装完之后可以在同一个 venv 里import pybroker验证一下避免后面调strategy_buy_with_stop_loss时才报缺包。2.3 顺带确认 fs_server.py 能起来依赖装完先单独跑一次 fs_server.py确认 MCP 服务器本身不报错python mcp-server/fs_server.py如果这一步就崩先看 akshare 的取数接口是否被限流、pybroker 是否装到了 venv 里。等 Claude Code 那边挂上之后再排这个错会多一层干扰因为你不容易分清是 MCP 服务器没起来还是客户端配置不对。3. Claude Code 的 settings.json 里把模型通道指到 TaoToken3.1 去 TaoToken 创建 API Key 并确认模型 ID这一步对应原文「与 Cherry Studio 集成」里申请密钥的动作只是换成 Claude Code 的配置方式。打开 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 注册并进入控制台在 API Keys 页面创建一把 Key拿到之后用YOUR_API_KEY占位替换。同一时间在模型广场看一眼当时可用的模型 ID下一步的ANTHROPIC_MODEL就填它不要凭印象写一个带日期后缀的名字。Key 只在创建时完整显示复制好之后就存到本地的密码管理里后面写配置文件时别把真实 Key 直接贴进博客或聊天记录。3.2 ~/.claude/settings.json 的 env 段Claude Code 读的是~/.claude/settings.json里的 env。Base URL 一律填https://taotoken.net/api末尾不要加/v1Token 用刚才创建的 Key模型 ID 填模型广场上确认过的那一个。{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_AUTH_TOKEN: YOUR_API_KEY, ANTHROPIC_MODEL: YOUR_MODEL_ID } }注意ANTHROPIC_AUTH_TOKEN不是ANTHROPIC_API_KEY。Claude Code 在接入兼容通道时读的是前者写错了会直接返回 401。3.3 用 taotoken cc 先跑一次最小调用如果不想手改配置文件也可以走命令行。先装 CLInpm install -g taotoken/taotoken然后用一把 Key、同一个 Base URL、一个确认过的模型 ID 起一次taotoken cc -k YOUR_API_KEY -u https://taotoken.net/api -m YOUR_MODEL_ID这条命令会拉起 Claude Code 并把通道参数透传进去。能看到 Claude Code 正常出提示符、能回答一句「你好」就说明模型通道这一段已经通了。注意-u后面跟的是接口 Base URL不要写成落地页。4. mcpServers 挂上 FinQ4Cn让 Claude Code 连上 fs_server.py4.1 在 Claude Code 的 MCP 配置里写 FinQ4Cn 供应块Claude Code 支持项目级或用户级的 MCP 配置。最贴近原文 mcpServers 写法的做法是在项目根目录放一个.mcp.json或者用claude mcp add让 Claude Code 自己写入。原始 Cherry Studio 的配置里 command 指向your_path/python.exeargs 指向fs_server.py这里把路径换成本机 venv 的 python 和实际克隆位置{ mcpServers: { FinQ4Cn: { command: /absolute/path/to/FinQ4Cn-mcp-server/venv/bin/python, args: [ /absolute/path/to/FinQ4Cn-mcp-server/mcp-server/fs_server.py ] } } }Windows 下 command 换成.../venv/Scripts/python.exe路径里的反斜杠在 JSON 里转义成双反斜杠。这里不要再塞 Base URL 和 API KeyMCP 服务器只管数据模型通道已经由上一节的 settings.json 负责。4.2 启动后确认工具已经挂上配置存盘之后在 Claude Code 里跑/mcp或者查看它的 MCP 状态应该能看到 FinQ4Cn 这个服务器已被识别工具列表里有get_stock_code、get_stock_financial_abstract、get_stock_margin_detail这些名字。如果列表为空先看fs_server.py手工能不能跑起来再看.mcp.json的路径是不是绝对路径、venv 里的解释器是否真的有 akshare 和 pybroker。5. 用自然语言查股票代码、财务摘要和融资融券5.1 get_stock_code 与 get_stock_financial_abstract 的提问方式工具挂上之后提问不需要刻意照着函数名来。比如「帮我查一下贵州茅台的股票代码然后拉最近三期财务摘要里的营收和净利润」Claude Code 会自己决定先调get_stock_code拿到代码再调get_stock_financial_abstract取指定报告期的数据。如果第一次回答里字段不全可以追问「按季度拆开」「把 ROE 和毛利率单独列一行」让模型重新组织调用参数。这一步不需要你手写 SQL 或 PythonMCP 服务器把参数校验交给 Pydantic模型负责把自然语言映射到工具参数上。5.2 get_stock_margin_detail 和分红配股明细融资融券和分红配股这两个口径平时查起来要切好几个页面。挂上 FinQ4Cn 之后可以直接问「这家公司近半年融资余额的变化趋势」「历史上分红配股记录按年度列一下」。get_stock_margin_detail取融资融券明细get_stock_fhps_detail取分红配股详情两者都会回一段结构化数据。如果模型返回里出现「获取失败」或空数据先确认股票代码是不是正确、日期区间是否落在交易日范围内再用 MCP Inspector 单独调一次同一个工具把客户端问题和数据源问题分开。5.3 新闻类工具和主营业务构成financial_news和stock_news走的是日期区间查询get_stock_zygc_em拿的是主营业务构成。这三者适合配合用先让 Claude Code 拉一段财经新闻再问「上面提到的那家公司主营构成里哪块占比最高」模型会接着调主营业务结构的工具。这里有个边界要说清楚Claude Code 和 FinQ4Cn 组合起来负责的是把自然语言转成 MCP 工具调用、把返回数据解释成人话。不要让它直接连生产数据库或交易系统执行操作诊断性 SQL、脚本计算仍然由你在本地跑把结果贴回对话即可。6. pybroker 止盈回测strategy_buy_with_stop_loss 怎么问6.1 先让 Claude Code 解释策略参数回测工具叫strategy_buy_with_stop_loss内置逻辑是「未持仓则按指定持仓比例买入并设置止盈百分比」。第一次用的时候不建议直接跑结果先让 Claude Code 把工具的参数描述读一遍持仓比例percent是多少、止盈百分比stop_profit_pct怎么传、回测区间是哪两个日期。这一步本质上是让模型把 MCP 工具的描述转成人话避免参数填错之后拿到一段看似合理但实际用错口径的回测输出。6.2 回测结果里该看什么回测跑完返回的是策略表现不是未来预测。重点看三项交易次数、单笔收益率分布、止盈触发次数。如果止盈百分比设得很小触发次数会明显偏高但每笔收益也薄设得大触发次数少样本不足时统计意义有限。需要提醒的一点Claude Code 只负责生成调用、解释返回和对照参数回测本身在 FinQ4Cn 的 pybroker 引擎里跑数据来自 akshare 的历史行情。不要把回测当成实盘信号也不要在这一步让 AI 去连生产库或交易接口。6.3 同一只票换参数再跑一次回测的价值在于对照。让 Claude Code 在同一个区间里换stop_profit_pct再跑一遍比较两次的交易次数和收益率分布比单次结果更有参考价值。这一段对话上下文是连续的模型会记得上一次的股票代码和日期区间不需要每次从头复述。7. 排障MCP 握手失败、401 与模型 ID 对不上7.1 fs_server.py 在 Claude Code 里连不上典型表现是/mcp列表里看不到 FinQ4Cn或者显示连接失败。先手工跑python mcp-server/fs_server.py如果这一步就报ModuleNotFoundError说明 venv 依赖没装全回到第 2 节重新pip install -r requirements.txt和 lib-pybroker。如果手工能跑、Claude Code 里连不上检查.mcp.json里 command 是不是指向了 venv 的 python而不是系统 pythonargs 里的fs_server.py路径是不是绝对路径。JSON 里路径反斜杠没有转义也会导致解析失败。7.2 401 和模型 ID 不匹配401 一般出在模型通道这一段跟 FinQ4Cn 无关。检查三处ANTHROPIC_BASE_URL是不是https://taotoken.net/api末尾不带/v1、ANTHROPIC_AUTH_TOKEN是不是刚创建的 Key、Key 是不是已经被删掉或过期。改完 settings.json 之后需要重启 Claude Code环境变量不会热加载。模型 ID 对不上时表现通常是请求直接返回「model not found」一类错误。回到 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 打开模型广场把当时列表里的 ID 复制回ANTHROPIC_MODEL不要自己加日期后缀。7.3 工具调用成功但数据为空这类问题出在 akshare 侧股票代码写错、日期区间没有交易日、接口临时返回空。先用 MCP Inspector 单独调一次同一个工具确认是数据源的问题还是 Claude Code 的上下文问题。如果是数据源侧换一个日期区间再试如果是客户端侧重启 Claude Code 让 MCP 服务器重新连接。8. 配完去控制台看一眼这次调用Claude Code 能正常回答、FinQ4Cn 工具列表能列出来、回测能跑出一个结果之后别急着关掉终端。回到 TaoToken 模型对话 用同一把 Key 发一条测试消息确认模型 ID 和 Base URL 没有互相串台对照 控制台 API Keys 看这次 Claude Code 的调用有没有记上账。如果打算长期用 Claude Code 跑 A 股量化问答Coding Plan 可以对照一下套餐额度Claude Code 的环境变量写法如果不确定Claude Code 接入文档 里有一份可以直接对照的配置。最后留一句实操上的提醒FinQ4Cn 的 fs_server.py 和模型通道是两段独立配置一段错了不要顺手去改另一段。先手工跑 fs_server.py 确认数据面没问题再用taotoken cc单独确认模型面能通两边分别验证过之后再合到一起排障会快很多。回测和查询涉及的 SQL、Python 脚本仍由你在本地执行Claude Code 负责生成、解释和对照不替代你去连生产库或交易系统。