@apocdata-info/mcp-server
天启至数 ApocData 的 MCP(Model Context Protocol)Server。把 46 个 A 股数据接口包装成 MCP tools,可在 Claude Desktop / Cursor / Cline / Continue 等任意 MCP client 中直接调用。
- 数据源:
https://www.apocdata.com/api/blade-dataplatform/open/data/* - 免费体验额度:无需注册即可调用;注册解锁更高额度与更多数据能力
- 自动透传
X-Tdc-*元信息头(限流剩余/截断标志/错误码/缓存策略) - 46 工具覆盖:行情、估值、财务、股东、资金流、涨跌停、板块、公告、宏观、因子、综合画像
安装
方式 A:npx(推荐,零安装)
直接在 client 配置里写 npx -y @apocdata-info/mcp-server,无需手动 install。
方式 B:全局安装
npm install -g @apocdata-info/mcp-server
apocdata-mcp # 可执行命令
Client 配置示例
Claude Desktop
编辑 ~/Library/Application Support/Claude/claude_desktop_config.json(macOS)或 %APPDATA%\Claude\claude_desktop_config.json(Windows):
{
"mcpServers": {
"apocdata": {
"command": "npx",
"args": ["-y", "@apocdata-info/mcp-server"]
}
}
}
Cursor
~/.cursor/mcp.json:
{
"mcpServers": {
"apocdata": {
"command": "npx",
"args": ["-y", "@apocdata-info/mcp-server"]
}
}
}
Cline / Continue / 其它 stdio MCP client
同上,传 command=npx, args=["-y","@apocdata-info/mcp-server"] 即可。
CLI flags
apocdata-mcp --version # 打印版本号
apocdata-mcp --help # 显示完整用法
信号
SIGTERM/SIGINT:优雅退出。等正在进行的请求完成(最多 5 秒),再关闭 transport 退出。
调试模式
环境变量 APOCDATA_DEBUG=1 会把每次 HTTP 调用的 path/status/meta 打到 stderr:
{
"mcpServers": {
"apocdata": {
"command": "npx",
"args": ["-y", "@apocdata-info/mcp-server"],
"env": { "APOCDATA_DEBUG": "1" }
}
}
}
自定义 BASE URL
环境变量 APOCDATA_BASE_URL 可指向内网/私有部署:
"env": { "APOCDATA_BASE_URL": "https://intranet.example.com/api/blade-dataplatform/open/data" }
超时与重试
4xx 不重试(业务错误重试无意义)。重试用尽后返回最后一次的 5xx 响应,或抛 NetworkError(网络异常)。
工具清单(46 个)
每个 tool 的入参/出参/默认值在 MCP 协议层用 JSON Schema 暴露,client 会自动展示。
MCP Resources
除工具外还暴露 3 个 markdown 文档,Agent 通过 resources/list 和 resources/read 拉取:
用法示例(在 Claude 里直接问)
> 帮我看下贵州茅台最近 5 天行情
(Claude 调用 daily(symbol="600519", limit=5))
> 现在涨幅榜前 10 是哪些股票?
(Claude 调用 ranking(type="gainers", limit=10))
> 整理一下平安银行的综合画像
(Claude 调用 profile-full(symbol="000001"))
> CPI 最近一次数据是多少?
(Claude 调用 macro-latest(type="cpi"))
性能与限流
- 单 IP 限流:60 req/min(响应头
X-Tdc-RateLimit-Remaining透传剩余配额) - 缓存策略:盘中实时数据 5s、盘后日更 5min、元数据 1h(
Cache-Control头自动给) limit参数上限 50,超出会静默截断(看响应头X-Tdc-Truncated)- 大批量数据建议用
format=compact列式输出,节省 60-70% token - 字段较多的接口(如 financial、announcements)支持
fields=...裁剪
详细行为参考主 SKILL 文档:https://github.com/ApocData/ApocData-skill
开发
git clone https://github.com/ApocData/ApocData-skill.git
cd ApocData-skill/mcp-server
npm install
npm run build
npm start
源码结构:
src/
index.ts # MCP server 入口,stdio transport
client.ts # HTTP client,BASE_URL 调用 + meta 头提取
tools.ts # 46 个工具的配置表(声明式)
要加一个新接口:在 tools.ts 对应分组里加一条 ToolDef,重新 build 即可,无需改其它代码。
测试
npm test # build + 6 类测试全跑(需在 apocdata-mcp 目录执行)
npm run test:unit # client 单测:超时/重试/URL 构造,不打外网
npm run test:contract # 46 工具逐个真实 HTTP 调用(happy path)
npm run test:errors # 错误路径:非法参数 / 不存在 symbol / 日期格式
npm run test:coverage # 限流头/截断头/所有枚举值遍历
npm run test:e2e # MCP 协议层:stdio JSON-RPC + isError + compact
npm run test:integration # 集成:mock HTTP + 子进程 server,验证 retries / timeout / --version / SIGTERM
六个脚本对应六种验证:
私有部署:APOCDATA_BASE_URL=http://your.host/path npm test
生产契约基线
当前 www.apocdata.com 已提供并由测试套件持续验证:
ranking/macro/macro/latest/macro/definition/sector-flow/hot-rank/margin的非法 enum 校验X-Tdc-Error-Code响应头X-Tdc-RateLimit-Remaining响应头(限流剩余配额)X-Tdc-Truncated响应头(limit 超上限通知)format=compact列式输出/profile/full和/factor-categories两个端点本身
License
Apache-2.0