金融数据查询平台

Wind金融终端MCP Server与Web数据查询平台,通过Python Bridge将Wind终端数据暴露给LLM和Web UI,支持多种金融数据查询和ETL功能。

  • by pixeleishen
  • TypeScript
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 pixeleishen/wind-mcp-server

使用说明

wind-mcp-server

Wind 金融终端 MCP Server + Web 数据查询平台。通过 Python Bridge 将 Wind 终端数据暴露给 LLM(MCP 协议)和 Web UI。

架构

┌─────────────┐     ┌──────────────┐     ┌───────────────┐     ┌───────────────┐
│  React UI   │────▶│ Express API  │────▶│ Python Bridge │────▶│ Wind Terminal │
│  :5173      │     │ :3001        │     │ wind_bridge.py│     │ (WindPy)      │
└─────────────┘     └──────────────┘     └───────────────┘     └───────────────┘
                           │
┌─────────────┐            │
│  LLM Client │────────────┘  (MCP stdio transport via index.js)
│  (Claude等) │
└─────────────┘

支持的 Wind API 函数

函数 说明 多codes 多fields 备注
WSD 日期序列数据 ✓ ✓ 多codes+多fields时自动逐个查询
WSS 日截面数据 ✓ ✓ 单时间点,支持多品种多指标
WSQ 实时行情快照 ✓ ✓
WST 日内Tick数据 ✗ 单品种 ✓ 近7个交易日
WSET 数据集报表 — — 板块成分/指数成分等
WSES 板块日序列 ✓ ✗ 单指标
WSEE 板块日截面 ✓ ✓
EDB 宏观经济数据库 ✓ — codes即指标代码
TDAYS 交易日历 — —
TDAYSOFFSET 日期偏移 — —
TDAYSCOUNT 交易日计数 — —

前置条件

  • Wind 终端已安装并登录
  • Python 3.7+(WindPy 可访问)
  • Node.js 18+

安装

npm install
pip install openpyxl
npm run build

运行

# 启动后端 API 服务
npm run server

# 启动前端开发服务
npm run dev:ui

# 启动 MCP Server(stdio,供 LLM 客户端使用)
npm start

功能特性

Web UI 数据查询

  • 11 个 Wind API 函数的可视化查询表单
  • 每个函数带中文说明和推荐参数提示
  • Tab 键快速填充 placeholder 内容
  • 前端校验多维查询限制(WST 单品种、WSES 单指标)

Excel 批量导入

  • 支持从 Excel 文件导入证券代码和时间范围
  • 自动识别中英文表头(code/股票代码/Wind代码、开始日期/结束日期)
  • 上传 Excel 后 codes/beginTime/endTime 字段自动变为可选

数据入库(ETL)

  • 交易日历、日度行情、基本面指标、宏观数据入库
  • 支持增量更新
  • SSE 实时日志流

LLM 数据清洗

  • 聊天式交互界面
  • 支持 OpenAI / Anthropic / DeepSeek / Gemini / Ollama
  • 自动读取数据库 schema 作为上下文

LLM 设置

  • 多 Provider 支持,服务端密钥 + 客户端密钥双模式
  • 连接测试

MCP 客户端配置

{
  "mcpServers": {
    "wind": {
      "command": "node",
      "args": ["C:/Users/Pixel/Projects/wind-mcp-server/dist/index.js"]
    }
  }
}

项目结构

src/
├── index.ts                 MCP Server 入口(stdio transport)
├── server.ts                Express API 服务(HTTP :3001)
├── bridge/
│   ├── runner.ts            Python 子进程调用
│   └── types.ts             请求/响应类型定义
├── python/
│   ├── wind_bridge.py       CLI 分发器:解析 JSON → 路由到 handler
│   ├── excel_reader.py      Excel 文件读取(openpyxl)
│   ├── utils.py             WindData 序列化、错误码映射、结果合并
│   └── handlers/
│       ├── wsd.py           日期序列(多codes+多fields自动拆分)
│       ├── wss.py           日截面
│       ├── wsq.py           实时行情
│       ├── wst.py           日内Tick
│       ├── wset.py          数据集报表
│       ├── wses.py          板块日序列
│       ├── wsee.py          板块日截面
│       ├── edb.py           宏观经济
│       ├── tdays.py         交易日历
│       ├── tdaysoffset.py   日期偏移
│       └── tdayscount.py    交易日计数
└── ui/                      React 前端
    ├── App.tsx              主页面(查询/ETL/清洗/设置 四个 Tab)
    ├── api/client.ts        API 客户端(支持 JSON 和 FormData 上传)
    ├── config/
    │   ├── windFunctions.ts Wind 函数配置(字段、提示、校验规则)
    │   └── llmConfig.ts     LLM Provider 配置
    ├── components/          表单、结果表格、状态指示器等
    └── pages/               ETL、数据清洗、LLM 设置页面

db/                          PostgreSQL DDL
etl/                         数据入库脚本
docus/                       Wind API 文档
testdata/                    测试用 Excel 文件
config/                      LLM 密钥配置(已 gitignore)

测试

# 测试 Python Bridge(需要 Wind 终端运行)
python src/python/wind_bridge.py '{"function":"tdays","params":{"beginTime":"2025-01-01","endTime":"2025-01-31"}}'

# 测试 Excel 导入
python src/python/wind_bridge.py '{"function":"wsd","params":{"fields":"close","excelPath":"testdata/sample_codes.xlsx"}}'

常见问题

错误 原因 解决
Wind start failed / ErrorCode: -2 Wind 终端未运行或未登录 启动并登录 Wind 终端
No module named 'WindPy' WindPy 不在 Python 路径 在 Wind 终端执行"插件修复"
ErrorCode: -40522018 WSD 不支持多codes+多fields 已自动处理,逐个查询
ErrorCode: -40520007 数据权限不足 检查 Wind 账号数据权限
Python bridge exited with code 1 Python 执行出错 查看后端终端日志