基于东方财富免费 API 的 A 股全维度行情 MCP Server,提供 22 个 Tool,覆盖行情、资金、基本面、板块、异动、风控六大场景。无需 API Key,编译即用。
cd stock
go mod tidy
go build -o stock .编辑配置文件:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"a-stock": {
"command": "/absolute/path/to/stock"
}
}
}重启 Claude Desktop,左下角出现锤子图标即表示连接成功。
claude mcp add a-stock /absolute/path/to/stockstock/
├── go.mod
├── README.md
├── main.go # 入口: server 初始化 + tool 注册
├── handlers.go # 所有 handler 函数 + 参数解析辅助
└── eastmoney/ # 东方财富 API 客户端(按领域拆分)
├── client.go # HTTP client + 6个通用查询函数 + URL常量 + 解析辅助
├── quote.go # 行情: 搜索、实时报价、K线、指数
├── flow.go # 资金: 个股资金流、北向资金、融资融券
├── fundamental.go # 基本面: 财务指标、十大股东、分红、研报
├── market.go # 市场: 板块、排行、涨停跌停、龙虎榜、大宗、解禁
├── news.go # 资讯: 个股新闻
└── eastmoney_test.go # 全量集成测试(22个Tool)
设计原则:
main.go只做 server 启动和 tool 元数据注册,不含业务逻辑handlers.go负责 MCP 协议层的参数解析和结果序列化,调用eastmoney包eastmoney/是纯粹的 API 客户端,不依赖 MCP,可独立复用eastmoney/内部按领域拆文件,每个文件职责单一- API 的 URL、参数构建、响应解析全部集中在
client.go,业务函数只声明查询参数和字段映射
| Tool | 功能 | 必填参数 | 可选参数 |
|---|---|---|---|
search_stock |
模糊搜索股票 | keyword |
— |
get_quote |
实时行情(价格/涨跌/PE/PB/市值) | code |
— |
get_kline |
K线历史数据(前复权) | code |
period(daily/weekly/monthly), limit |
get_index |
主要指数行情 + 涨跌家数 | — | — |
| Tool | 功能 | 必填参数 | 可选参数 |
|---|---|---|---|
get_money_flow |
个股当日资金流向(主力/大单/中单/小单) | code |
— |
get_money_flow_history |
个股近N日资金流向趋势 | code |
limit |
get_north_flow |
北向资金每日净买入 | — | limit |
get_north_holdings |
北向资金个股持仓排行 | — | market(sh/sz), limit |
get_margin_data |
两市融资融券余额汇总 | — | limit |
get_stock_margin |
个股融资融券数据 | code |
limit |
| Tool | 功能 | 必填参数 | 可选参数 |
|---|---|---|---|
get_financial |
核心财务指标(ROE/毛利率/净利率/营收增速) | code |
— |
get_top_holders |
十大流通股东(持股/占比/增减/性质) | code |
— |
get_dividend_history |
分红送配历史 | code |
limit |
get_analyst_ratings |
机构评级/研报(券商/目标价) | code |
limit |
| Tool | 功能 | 必填参数 | 可选参数 |
|---|---|---|---|
get_sectors |
行业/概念板块涨跌排行 | type(industry/concept) |
limit |
get_sector_stocks |
板块成分股列表 | sector_code |
limit |
使用流程:先调
get_sectors获取板块代码,再用get_sector_stocks查成分股。
| Tool | 功能 | 必填参数 | 可选参数 |
|---|---|---|---|
get_ranking |
涨跌/成交排行榜 | type(top/bottom/volume/amount/turnover) |
limit |
get_limit_stocks |
涨停/跌停分析(连板/封板/题材) | type(up/down) |
limit |
get_dragon_tiger |
龙虎榜(净买入/上榜原因) | — | limit |
| Tool | 功能 | 必填参数 | 可选参数 |
|---|---|---|---|
get_block_trades |
大宗交易(折溢价/买卖方) | — | limit |
get_lockup_expiry |
限售解禁日历 | — | limit |
| Tool | 功能 | 必填参数 | 可选参数 |
|---|---|---|---|
get_stock_news |
个股相关新闻 | code |
limit |
对 Claude 说自然语言,它会自动组合调用合适的 Tool。
搜索股票
"帮我找一下和锂电池相关的股票"
→ search_stock("锂电池")
实时行情
"茅台现在什么价?"
→ search_stock("茅台") → get_quote("600519")
返回: 价格、涨跌幅、成交量、换手率、PE、PB、总市值、流通市值
K线走势
"看看比亚迪最近一个月的日K"
→ get_kline("002594", period="daily", limit=22)
"宁德时代的周K走势"
→ get_kline("300750", period="weekly", limit=20)
"贵州茅台近一年月K"
→ get_kline("600519", period="monthly", limit=12)
大盘指数
"今天大盘怎么样"
→ get_index()
返回: 上证指数、深证成指、创业板指、科创50、沪深300、中证500,含涨跌家数
个股资金流
"宁德时代今天资金流向怎么样"
→ get_money_flow("300750")
返回: 主力/超大单/大单/中单/小单的流入流出及净额
"平安银行最近10天的资金流向趋势"
→ get_money_flow_history("000001", limit=10)
北向资金
"北向资金最近在买什么"
→ get_north_flow(limit=10) → get_north_holdings(market="sh") → get_north_holdings(market="sz")
"北向资金最近5天净流入多少"
→ get_north_flow(limit=5)
返回: 沪股通/深股通每日净买入、累计净买入
融资融券
"最近杠杆资金情绪怎么样"
→ get_margin_data(limit=10)
返回: 两市融资融券余额汇总趋势
"看看平安银行的融资融券数据"
→ get_stock_margin("000001", limit=10)
返回: 融资买入额/余额、融券卖出量/余额
财务指标
"比亚迪的财务状况怎么样"
→ get_financial("002594")
返回: ROE、毛利率、净利率、营收同比、净利润同比、资产负债率、EPS
股东分析
"宁德时代的十大流通股东是谁"
→ get_top_holders("300750")
返回: 股东名称、持股数量、占比、增减变动、股东性质(基金/个人/QFII)
分红历史
"茅台历年分红情况"
→ get_dividend_history("600519", limit=10)
返回: 分配方案、除权除息日、股息率
机构评级
"券商怎么看宁德时代"
→ get_analyst_ratings("300750", limit=10)
返回: 券商、分析师、评级(买入/增持/中性)、目标价、研报标题
板块排行
"今天哪些行业板块涨得好"
→ get_sectors(type="industry", limit=20)
"最近有什么热门概念"
→ get_sectors(type="concept", limit=20)
返回: 板块名称、涨跌幅、主力资金净流入、领涨股
板块成分股
"固态电池板块有哪些值得关注的票"
→ get_sectors(type="concept") → 找到板块代码 → get_sector_stocks("BK0477", limit=20)
返回: 成分股列表,含价格、涨跌幅、成交额、主力资金
涨跌排行
"今天涨幅最大的股票"
→ get_ranking(type="top", limit=20)
"今天跌幅最大的股票"
→ get_ranking(type="bottom", limit=20)
"今天成交额最大的股票"
→ get_ranking(type="amount", limit=20)
"今天换手率最高的股票"
→ get_ranking(type="turnover", limit=20)
涨停跌停
"今天有哪些涨停板"
→ get_limit_stocks(type="up", limit=30)
返回: 涨停股列表,含连板天数、封板时间、开板次数、所属行业
"今天有哪些跌停"
→ get_limit_stocks(type="down", limit=30)
龙虎榜
"今天龙虎榜有什么"
→ get_dragon_tiger(limit=20)
返回: 上榜股票、净买入、买卖总额、上榜原因、换手率
大宗交易
"最近有哪些大宗交易"
→ get_block_trades(limit=20)
返回: 成交价、折溢价率、成交量、买卖方营业部
限售解禁
"最近有哪些股票要解禁"
→ get_lockup_expiry(limit=20)
返回: 解禁日期、解禁数量、占总股本比例、限售类型
个股新闻
"平安银行最近有什么新闻"
→ get_stock_news("000001", limit=10)
返回: 标题、来源、日期、摘要
个股全面分析
"帮我全面分析一下宁德时代"
→ search_stock → get_quote → get_financial → get_money_flow → get_kline
→ get_top_holders → get_analyst_ratings → get_stock_news
大盘情绪判断
"今天市场情绪怎么样"
→ get_index → get_north_flow → get_margin_data → get_limit_stocks(up) → get_sectors(concept)
短线机会扫描
"今天有什么短线机会"
→ get_limit_stocks(up) → get_dragon_tiger → get_ranking(turnover) → get_sectors(concept)
个股排雷
"帮我看看这只票有没有雷"
→ get_lockup_expiry → get_stock_margin → get_top_holders → get_block_trades → get_dividend_history
| 参数 | 格式 | 说明 |
|---|---|---|
code |
6位数字 | 股票代码,如 600519(茅台)、300750(宁德时代) |
keyword |
字符串 | 支持名称、代码、拼音首字母模糊匹配 |
period |
枚举 | K线周期: daily / weekly / monthly |
limit |
正整数 | 返回条数,各接口有不同上限,超出自动截断 |
sector_code |
字符串 | 板块代码(如 BK0477),从 get_sectors 返回值获取 |
market |
枚举 | 北向持仓市场: sh(沪股通) / sz(深股通) |
type |
枚举 | 各 Tool 各有不同枚举值,见上表 |
所有数据来自东方财富公开行情接口,免费无需注册。域名和基础 URL 统一定义在 client.go:
| 域名 | 用途 | 对应查询函数 |
|---|---|---|
push2.eastmoney.com |
实时行情、资金流、板块、排行、财务指标 | Push2StockGet / ClistGet / Push2DiffGet |
push2his.eastmoney.com |
历史K线、历史资金流 | Push2HisGet |
push2ex.eastmoney.com |
涨停/跌停股池 | basePush2Ex 常量 |
searchapi.eastmoney.com |
股票搜索 | baseSearch 常量 |
datacenter-web.eastmoney.com |
数据中心(龙虎榜/融资/大宗/解禁/北向持仓/股东/分红) | DatacenterGet |
reportapi.eastmoney.com |
机构评级/研报 | baseReport 常量 |
search-api-web.eastmoney.com |
新闻搜索 | baseNews 常量 |
已知限制:
- 盘后数据通常 15:30 后更新完毕
- 财务指标仅在财报发布后更新
- 高频调用可能触发限流,建议控制合理频率
- 数据仅供参考,不构成投资建议
添加新 Tool 三步走:
eastmoney/下对应文件新增 API 函数(结构体定义 + 调用通用查询 + 字段映射)handlers.go新增 handler 函数(参数解析 → 调 API → 返回 JSON)main.go的registerTools()新增s.AddTool(...)注册
client.go 通用查询函数:
| 函数 | 用途 | 适用接口 |
|---|---|---|
DatacenterGet |
datacenter-web 报表查询 | 龙虎榜、大宗、解禁、北向持仓、融资融券、股东、分红等 |
ClistGet |
push2 列表排行查询 | 板块排行、成分股、涨跌排行 |
Push2StockGet |
push2 单股数据查询 | 实时行情、财务指标、资金流向 |
Push2DiffGet |
push2 多标的 diff 查询 | 指数行情 |
Push2HisGet |
push2his K线类查询 | K线、历史资金流向 |
添加新的 datacenter 类接口只需声明 DatacenterQuery 即可,无需手写 URL:
data, err := DatacenterGet(DatacenterQuery{
ReportName: "RPT_SOME_REPORT",
SortColumns: "TRADE_DATE",
SortTypes: "-1",
PageSize: limit,
Filter: fmt.Sprintf(`(SECURITY_CODE="%s")`, code),
})可扩展方向:
- 财务报表明细(资产负债表 / 利润表 / 现金流量表)
- ETF / 可转债行情
- 港股通标的行情
- 期货 / 期权数据
- Level 2 盘口数据(需付费数据源)
MIT