Metadata-Version: 2.5
Name: astock-mcp-cn
Version: 0.2.8
Summary: A-share market data MCP server: realtime quotes, klines, market breadth, sector fund flow, screener. Pure HTTP, no akshare/pandas.
License: MIT
License-File: LICENSE
Keywords: a-share,china,market-data,mcp,model-context-protocol,stock
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Requires-Python: >=3.10
Requires-Dist: mcp>=1.2.0
Requires-Dist: requests>=2.28
Description-Content-Type: text/markdown

# astock-mcp-cn

A 股行情 MCP 服务。13 个工具、纯 HTTP 取数，不依赖 akshare / pandas，冷启动 1 秒内，适合本地或云端托管。

## 工具

**行情**

| 工具 | 用途 |
|---|---|
| `quote(symbols)` | 实时报价，多只逗号分隔，代码或名称均可；含涨跌幅、换手率、量比、PE、PB、总市值 |
| `kline(symbol, period, limit, adjust)` | 日/周/月 K 线，含每日涨跌幅与换手率；末尾给 MA5/10/20/60、量能倍数、20 日新高、20 日平台突破 |
| `market_overview()` | 六大指数 + 涨跌家数 + 涨停跌停 + **情绪周期一行**（封板率、晋级率、昨涨停今溢价、首板/连板家数） |
| `intraday(symbol)` | 当日分时要点：开高低现、均价、振幅、量能分布、尾盘 30 分钟、站上均价比例 |

**情绪与资金**

| 工具 | 用途 |
|---|---|
| `limit_up(limit)` | 涨停梯队：家数、最高连板、**封单额占流通市值比**、首封时间、炸板次数、所属行业、10天N板 |
| `money_flow(symbol, days)` | 个股主力资金；**表头直接给 3日/5日/10日 累计净额**，下面给每日超大单/大单/小单拆解 |
| `sector_flow(limit, direction, days)` | 行业板块主力净流入/流出排行，`days` 支持 0(今日)/3/5/10 |
| `stock_context(symbol)` | 盘外信息一次给全：两融余额及环比、最近上榜的买卖席位、未来解禁、股东户数、业绩预告 |

**筛股与基本面**

| 工具 | 用途 |
|---|---|
| `screen(...)` | **榜单交集选股**：涨幅榜、主力资金榜、涨停池（可加某行业成分股）交叉取交集，再按涨跌幅/换手/PE/市值/主力净额过滤 |
| `fundamental(symbol)` | 财务快照：加权 ROE、毛利率、资产负债率、营收及同比、EPS、BPS |
| `announcements(symbol)` | 近期公告标题（不含正文） |
| `dragon_tiger(limit)` | 最近交易日龙虎榜：净买入额、买卖额、上榜原因 |
| `abnormal(symbol, days)` | **异动监控**：交易所口径的每日偏离值、3 日滚动累计偏离、10/30 日累计偏离、10 日内同向异动次数，以及"下一交易日再涨多少就触发"；判断是否压盘绕异动、卡线躲监管 |

### 判断"这票是不是在绕异动"

`abnormal` 一条命令给全：3 日滚动偏离已用掉阈值的百分之几、10 日内同向异动攒了几次（主板 4 次、创业板/科创板 3 次升为严重异常波动）、下一交易日再涨几个点就触发。若今日窗口只用了六七成、但窗口一往后滚就爆，说明主力在"一天一天往后躲"。

### 复盘一条链

`market_overview`（情绪周期：能不能做）→ `sector_flow(days=5)`（主线在哪）→ `limit_up` / `dragon_tiger`（谁最强、谁在买）→ `stock_context` + `money_flow`（有没有雷、主力真进没进）→ `kline`（买点位置）。

### 判断"明天能不能上板"用哪些

`limit_up` 看封板质量（首封越早、封单占流通比越高、炸板越少越强）→ `money_flow` 看主力是否真进场 → `dragon_tiger` 看是游资还是机构 → `intraday` 看是否全天站上均价 → `announcements` 看消息催化 → `market_overview` 看晋级率与打板溢价。

## 安装

```bash
pip install astock-mcp-cn
# 或
uvx astock-mcp-cn@0.2.8
```

## 接入 MCP 客户端

stdio 传输，命令即 `astock-mcp`：

```json
{
  "mcpServers": {
    "astock": { "command": "uvx", "args": ["astock-mcp-cn@0.2.8"] }
  }
}
```

> **务必带版本号**（`@0.2.8` 或 `@latest`）。`uvx astock-mcp-cn` 不带版本时会复用本地已缓存的
> 旧环境，即使 PyPI 上有新版本也不会升级——实测：缓存里是 0.2.0 时，跑一次无版本号的 uvx，
> 缓存中仍然只有 0.2.0。写 `@0.2.8` 可保证每次启动都是确定版本。

服务端会在 MCP 握手的 `serverInfo.version` 里返回自身版本，可用它确认客户端实际加载的是哪一版。

## 数据源

| 数据 | 主源 | 备源 |
|---|---|---|
| 实时报价 | 腾讯 `qt.gtimg.cn` | 新浪 `hq.sinajs.cn` |
| K 线 | 东方财富 `push2his` | 东方财富 `push2` / `push2delay` → 腾讯 `web.ifzq.gtimg.cn` |
| 资金流 / 分时 / 选股 / 涨跌家数 | 东方财富 `push2his` → `push2` → `push2delay` 轮换 | — |
| 两融 / 解禁 / 股东户数 / 业绩预告 / 龙虎榜席位 | 东方财富数据中心 | — |

> 部分机房出口会把 `push2his` 整段挡掉（data 返回 null）。0.2.4 起对资金流、分时、K 线做了
> 域名轮换并按接口记住成功域名；K 线只有 `push2his` 提供数据，被挡时退到腾讯（丢换手率与成交额）。
> 资金流被挡时，实时站/延时站只给 1 日，输出会如实写"3日/5日"缺省。

数据来自公开行情接口，可能存在延迟或口径差异，仅供信息参考。

## 说明

- `screen` 不再扫全市场：它把**涨幅榜 / 主力资金榜 / 涨停池（可选行业成分股）**交叉，`min_hits`
  控制至少同时命中几个榜单（默认 2，即真交集），交集为空时自动放宽并注明。覆盖度够用且不受单页
  100 条上限影响。
- 输出做了紧凑处理以节省上下文 token，默认条数克制。
- 结果在进程内缓存 20–180 秒，避免重复请求。
- 工具描述含【场景】标签、「问法」示例与「关键词」行，用于适配麦麦等按中文子串匹配的发现层。

## 免责声明

本项目仅提供公开行情数据的读取能力，不构成任何投资建议。投资有风险，决策需谨慎。

## License

MIT
