Bundle
dsh-industry-graph-mcp
零依赖、本地优先的 A股 产业链 / 申万行业 / 概念板块 知识图谱 MCP server —— 查询个股所属行业、同业竞品、产业链上下游、概念成分与交叉选股。无需 API key、无网络依赖。
- Source
- helibeiqi
- License
- MIT
- Updated
- Updated 2 days ago
Readme
# dsh-industry-graph-mcp
> 零依赖 · 本地优先的 **A股 产业链 / 申万行业 / 概念板块 知识图谱** MCP server。
> 无需 API key、无需联网,纯 Node.js(ESM)读取内置精选种子数据,供 DeepSeek Harness (dsh) 在对话中直接调用。
---
## 为什么做这个(定位)
在 dsh 插件生态里,办公文档生成(docx / pdf / pptx / excel)已是**红海**(竞品 30–215 个不等);
而 **中文 HR / 合规本地化**(薪酬 / 个税 / 社保 / 劳动合同,全 GitHub 检索 0 竞品)是**真正经得起复核的蓝海**。
> ⚠️ **诚实声明(2026-08-28 晚修正)**:本插件所属的「A股 产业链 / 行业 / 概念图谱」方向**并非蓝海**——全 GitHub 已有 40–61 个 A股 数据 MCP,且存在与本插件近乎同构的 `jinjunnn/tide-plugin`(产业链/概念/题材图谱)等竞品。本插件的价值在于 **local-first / 零依赖 / 无 API key / 随仓精选种子**,作为领域知识资产与 portfolio 拼图成立,但**不是首发占位**。不建议在该方向继续扩面。
本插件不比拼"再生成一个文档",而是把**A股 实体关系的领域知识**做成可被大模型实时查询的本地图谱:
当策略研究 / 投研对话中需要"这只票属于什么行业、和谁同业、处在产业链哪一环、沾哪些题材"时,
agent 不再靠记忆硬猜,而是调用本 server 拿到结构化、可追溯的答案。
## 数据规模(v0.1.0 种子)
| 维度 | 数量 |
|------|------|
| 申万一级行业 | 31(完整一级) |
| 概念板块 | 52 |
| 产业链 | 14(含上/中/下游节点) |
| 覆盖个股 | 181(去重) |
数据为**人工精选种子**,刻意小而准,覆盖主流赛道;设计为可扩展(见下文"扩展数据")。
---
## 工具清单(7 个)
| 工具 | 说明 | 关键参数 |
|------|------|----------|
| `industry_of_stock` | 查个股所属申万一级行业 + 关联概念 + 所在产业链 | `stock`(代码或名称) |
| `peers` | 同行业竞品(同业可比标的),可剔除自身 | `stock`, `exclude_self` |
| `chain_view` | 查看产业链上下游结构,可高亮某股票所在环节与上下游 | `chain`(id/名称), `stock` |
| `concept_members` | 查询某概念板块成分股 | `concept` |
| `concept_intersect` | 两个概念的交集成分股(概念交叉选股) | `a`, `b` |
| `stock_search` | 按代码/名称子串模糊搜索覆盖标的 | `query` |
| `graph_stats` | 数据集规模概览 | — |
所有工具返回 **UTF-8 JSON 文本**,便于 agent 二次推理或直接呈现。
### 调用示例(dsh 对话)
- "宁德时代在哪个产业链、处在哪一环?上下游都有谁?"
→ `chain_view({chain:"锂电池产业链", stock:"300750"})`
- "白酒板块有哪些票?"
→ `concept_members({concept:"白酒"})`
- "同时沾半导体和 CPO 的票有哪些?"
→ `concept_intersect({a:"半导体", b:"CPO"})`
- "隆基绿能的同业竞品是谁?"
→ `peers({stock:"601012"})`
---
## 安装 / 接入 dsh
本仓库是一个 **dsh bundle**。把 `cordis.patch.yml` 合并进你的 dsh profile 即可注册为一个 mcp server。
`cordis.patch.yml` 中的关键路径(部署时改成你本机实际路径):
```yaml
- insert:
- path: plugins.mcp-servers
items:
- id: mcp-industry-graph
name: A股产业链知识图谱
transport: stdio
command: !!js process.env.QUANT_MCP_NODE || process.execPath
args:
- "C:\\Users\\helib\\dsh-industry-graph-mcp\\industry-graph-mcp-server.mjs"
cwd: "C:\\Users\\helib\\dsh-industry-graph-mcp"
enabled: true
```
`command` 使用 `!!js process.env.QUANT_MCP_NODE || process.execPath` 的硬核写法,
可免疫本机 Node 版本目录漂移(如 `22.22.2` → `22.22.2-2`)。
### 本地独立验证(不依赖 dsh)
```bash
# 1) 生成数据(已生成可跳过)
python gen_graph.py
# 2) 自测 MCP 握手与各工具
python _selftest.py
```
---
## 扩展数据
种子数据集中在 `gen_graph.py`,三个列表即可扩展:
- `industries`:申万一级行业 → 代表性成分 `(code, name, [(code,name), ...])`
- `concepts`:概念板块 → 成分 `[(name, [(code,name), ...])]`
- `chains`:产业链 → 上/中/下游节点 `{id, name, nodes:[{stage, desc, members}]}`
改完运行 `python gen_graph.py` 重新生成 `data/industry-graph.json`,server 自动加载,无需改任何代码。
> 后续可导入用户自有清单(如自建题材池、自定义产业链),做到"本地优先 + 个人知识沉淀"。
---
## 架构要点
- **零依赖**:纯 Node ESM + `fs`,无 `npm install`,免疫 managed-node 漂移。
- **本地优先**:数据来自内置 `data/industry-graph.json`,不触网、不依赖第三方 API。
- **标准 MCP stdio**:`initialize → notifications/initialized → tools/list → tools/call`,协议版本 `2024-11-05`,NDJSON 行协议。
## License
MIT © helibeiqi
Install
dsh plugin --profile web add github:helibeiqi/dsh-industry-graph-mcp
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install dsh-industry-graph-mcp from the hub
- This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.