Skip to main content
Glama
cnstock-mcp

cnstock-mcp

cnstock · 中国股票数据 CLI

一条命令拿到 A 股行情、财报、估值和研报。免 API Key、零配置、多源自动降级。

演示:查询行情与全市场财务排雷

上面是真实终端输出录制的动画,不是示意图。

为什么不用 akshare / tushare

akshare

tushare

cnstock

语言

Python

Python

Node / TypeScript

安装

pip install akshare(依赖重)

pip install tushare

npx @wilshi/cnstock(零安装)

API Key

不需要

需要 token

不需要

接口失效时

直接报错

直接报错

自动切换备用数据源

与 AI 集成

需要自己封装

需要自己封装

内置 MCP server

最关键的差异是第三行。这些公开接口都没有 SLA:开发期间实测过东方财富的行情接口在请求变多后所有分片同时断开连接,而 datacenter、腾讯、新浪仍然正常。只绑一个源的工具会在你不知情时静默失效,所以 cnstock 每次调用都按顺序尝试多个源,并在输出里用 source 字段告诉你这次是谁答的。

Related MCP server: stock-mcp-server

快速开始

# 直接用,不用安装
npx @wilshi/cnstock quote 600519

# 检索股票
npx @wilshi/cnstock search 茅台

# 财报 + TTM 折算
npx @wilshi/cnstock financials 600519

# 估值测算
npx @wilshi/cnstock value 600519 --growth 0.1 --discount 0.12

# 生成完整研报
npx @wilshi/cnstock report 600519 > 茅台研报.md

任何命令加 --json 都输出结构化 JSON,方便管道处理:

npx @wilshi/cnstock quote 600519 --json | jq .price

命令一览

命令

作用

search <关键词>

按代码、名称或拼音首字母检索

quote <代码>

实时行情、市值、PE/PB、行业概念

kline <代码>

前复权日 K 线(--days)

financials <代码>

财报摘要与 TTM 折算(--periods)

value <代码>

估值测算,自动选模型

report <代码>

完整 Markdown 研究简报

作为 MCP 服务使用

cnstock 同时是一个 MCP server,可以直接接进 Claude Desktop、Cursor 等支持 MCP 的客户端:

{
  "mcpServers": {
    "cnstock": {
      "command": "npx",
      "args": ["-y", "--package", "@wilshi/cnstock", "cnstock-mcp"]
    }
  }
}

提供的 6 个工具:cnstock_search、cnstock_quote、cnstock_kline、cnstock_financials、cnstock_valuation、cnstock_report。

接上之后就能直接问:

「茅台现在贵吗?按 10% 折现率帮我算一下。」

两个它做得比别家认真的地方

1. TTM 不是随便取一期

A 股财报是累计口径——三季报的净利润是 1 到 9 月的累计值,直接当年度数据用会严重失真。cnstock 按 最新累计 + 上年年报 - 上年同期 折算 TTM,并把计算依据一起输出:

TTM 归母净利    821.61 亿元
TTM 口径        TTM = 2026年 三季报累计 + 2025年报 - 2025年同期

2. 不同生意用不同估值模型

公司类型

模型

原因

一般盈利公司

两阶段 DCF

净利润可近似所有者收益

银行 / 保险 / 证券

PB-ROE

金融企业净利被存款与拨备主导,不等于自由现金流

亏损公司

明确标注不适用

应改用 PS 或重置成本

对银行套 DCF 会算出荒谬的「安全边际」——平安银行用 DCF 会显示低估 69.8%,而正确做法是用 Gordon 增长形式的 合理 PB = (ROE - g) / (r - g)。cnstock 会自动识别并切换。

此外它会反推当前股价隐含的增速:茅台现价隐含 5 年增速约 14.2%,你可以自己判断这个预期是否合理。

也支持 Docker

MCP server 以 stdio 通信,容器内不需要暴露端口:

docker build -t cnstock-mcp .
docker run --rm -i cnstock-mcp

非 root 运行,多阶段构建。


财务排雷(全市场)

cnstock 现在能做两件事:查数据,以及扫描全市场的财务风险。

# 单公司体检
npx @wilshi/cnstock audit 600519

# 全市场扫描:分「高危 / 关注」两级
npx @wilshi/cnstock scan --limit 20

# 只看高危
npx @wilshi/cnstock scan --tier red
全市场扫描:检查 5563 家,[红] 112 家,[黄] 1240 家

[红] 高危     300212 *ST易录 [ST]
    · 净资产为负:-19.53 亿
    · 连续两年亏损:-28.65 亿 / -27.17 亿
    · 经营现金流连负:-2.41 亿 / -1.59 亿

扫描 5563 家约 50 秒,之后命中本地缓存是 1 秒级。

规则是怎么选的(不是拍脑袋)

这些规则用 **313 家 ST/*ST 公司作为验证集**跑过全市场回测,按区分能力筛选:

规则

ST 命中率

正常公司误报率

提升倍数

净资产为负

28.0%

0.8%

37.14x

连续三年亏损

39.7%

10.2%

3.87x

连续两年亏损

49.8%

16.9%

2.95x

经营现金流连负

20.2%

8.3%

2.43x

高商誉 > 50%

2.3%

1.0%

2.45x

「提升倍数」= ST 公司触发概率 ÷ 正常公司触发概率。1x 等于随机,越高越有区分力。

一个被公开否定的设计

我们最初还实现了「净利现价比」(经营现金流 ÷ 净利润),直觉上是最可靠的造假信号。但全市场验证显示它的提升倍数是 0.16x —— 反而是反指标:ST 公司触发它的概率比正常公司还低。

原因:该规则只对「有盈利但现金流差」的公司生效,而 ST 公司大多处于亏损状态,直接跳过了这条规则。

所以它没有进入 scan。 相关实验代码保留在 scripts/rule-compare.ts 与 scripts/rule-combo.ts,可复现。

分层而不是打分

验证也说明了一件事:不存在又准又全的单一规则集。

组合

ST 命中

误报

标记家数

仅净资产为负

27.6%

0.8%

40

净资产+连续亏损

63.6%

17.7%

893

全部规则

73.9%

39.0%

1964

规则加得越多召回越高,但全加进去会标出 39% 的 A 股 —— 等于没标。所以产品输出分层:红灯只放高置信度信号,黄灯保留覆盖面。

它不能做什么(重要)

  • 不能识别财务造假。 造假检测需要的信号(跨期调节、虚构收入、关联交易非关联化)无法用比率分析可靠识别,且缺乏有效的统计验证方法。

  • 不能预测爆雷。 上述验证用的是「当前财务状态 vs 当前 ST 状态」的横截面区分度,不是时序预警能力。

  • 数据是重述后的。 已被处罚公司的历史报表都经过追溯调整,无法还原「事发前原始披露」的数字。

  • 不构成投资建议。 输出的是「需人工复核」,不是「卖出」。

已知局限和后续验证计划见 docs/red-flag-design.md。


项目结构

├── src/
│   ├── cli.ts                # 命令行入口
│   ├── mcp.ts                # MCP server 入口
│   ├── index.ts              # 库导出
│   ├── datasource/
│   │   ├── index.ts          # 多源降级编排
│   │   ├── eastmoney.ts      # 东方财富
│   │   ├── tencent.ts        # 腾讯(备用)
│   │   ├── sina.ts           # 新浪(兜底)
│   │   └── types.ts
│   └── analysis/
│       ├── valuation.ts      # DCF / PB-ROE / TTM
│       └── report.ts         # Markdown 研报
└── scripts/mcp-smoke.mjs     # MCP 协议冒烟测试

数据源

能力

主源

备用

行情 / 估值

东方财富

腾讯 → 新浪

日 K 线

东方财富

腾讯

财报

东方财富 datacenter

—

检索

东方财富 searchapi

—

均为公开接口,无需注册。行业与概念标签只有东方财富提供;降级到备用源时这些字段为空,输出会如实标注。

免责声明

本项目是数据工具,不构成投资建议。数据来自第三方公开接口,可能存在延迟、缺失或口径差异;估值结果对假设高度敏感。据此操作风险自担。

License

MIT © 2026 WilShi

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      Not graded
      quality
      D
      maintenance
      Provides real-time quotes, fund flows, and corporate announcements for Chinese A-share stocks. It enables users to search for stocks, analyze financial indicators, and summarize quarterly reports through natural language.
      -
    • A
      license
      A
      quality
      C
      maintenance
      Real-time A-share stock data for AI assistants. Provides real-time stock prices, K-line data, financial indicators, and sector fund flow analysis for Chinese A-share market. Multi-source data validation ensures accuracy.
      7
      4
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables users to query Chinese A-share stock data, including stock basics, historical prices, financial reports, and macroeconomic indicators.
      1
      MIT
    • A
      license
      A
      quality
      D
      maintenance
      Enables AI assistants to query real-time A-share stock data, including quotes, fund flows, sector flows, and K-line history, without needing an API key.
      5
      18
      MIT