xcsc-tushare-mcp
by duhanjun
README.md
## 项目简介
xcsc-tushare-mcp 是一个基于 FastMCP 框架开发的 MCP(Model Context Protocol)服务器,支持 **stdio** 和 **HTTP** 两种传输方式,为 AI 助手提供湘财证券 [Tushare](http://tushare.xcsc.com:7173/document/1) 金融数据接口。
### 主要特性
- 🎯 **两种传输方式** - 支持 stdio(默认,推荐)和 HTTP 两种模式
- 🚀 **HTTP 传输协议** - 支持 streamable-http 传输,适合远程部署
- 🔐 **API Key 认证** - HTTP 模式下支持 Bearer Token 认证,保护 API 安全
- 📊 **丰富的数据类型** - 覆盖沪深股票、指数、公募基金、共同基金、期货、期权、债券等
- 🔄 **动态元数据更新** - 自动检测 references/ 目录变化,重新生成 API 元数据
- 🔧 **3 个核心工具** - 简化设计,通过 get_api_list、get_api_doc、get_api_query 完成所有操作
- 📚 **完整的接口文档** - 内置 API 列表和文档查询工具
## 项目结构
```
xcsc-tushare-mcp/
├── src/
│ └── xcsc_tushare_mcp/ # 主包目录
│ ├── __init__.py # 包初始化
│ ├── __main__.py # 命令行入口
│ ├── server.py # 服务器主模块
│ ├── tools.py # 3 个核心工具
│ ├── config.py # 配置管理
│ ├── auth.py # 认证中间件
│ ├── metadata.py # 元数据生成和加载
│ ├── api_metadata.json # 缓存的 API 元数据
│ ├── py.typed # 类型提示标记
│ └── references/ # API 文档源文件(约 90 个 .md)
│ ├── 债券/
│ ├── 公募基金/
│ ├── 共同基金/
│ ├── 指数/
│ ├── 期权/
│ ├── 期货/
│ └── 沪深股票/
├── pyproject.toml # 项目配置
├── requirements.txt # 依赖列表
└── README.md # 项目文档
```
## 安装方法
### 通过 pip 安装
```bash
pip install xcsc-tushare-mcp
```
### 通过 UVX 直接运行(推荐)
```bash
uvx xcsc-tushare-mcp
```
### 下载源码安装
```bash
git clone https://github.com/duhanjun/xcsc-tushare-mcp.git
cd xcsc-tushare-mcp
pip install -e .
```
## 配置说明
### 1. 获取 XCSC Tushare Token
到[湘财证券](https://www.xcsc.com/)开户,找客户经理开通 XCSC Tushare 服务,获取 API token。
### 2. 配置环境变量
```bash
# Linux/macOS
export XCSC_TUSHARE_TOKEN="your_token_here"
# Windows PowerShell
$env:XCSC_TUSHARE_TOKEN = "your_token_here"
# Windows CMD
set XCSC_TUSHARE_TOKEN=your_token_here
```
### 3. 传输方式配置(可选)
服务器默认使用 **stdio 模式**(推荐),也可以使用 HTTP 模式。
使用 stdio 模式(默认):
```bash
# 无需额外配置,默认就是 stdio
```
使用 HTTP 模式:
```bash
# Linux/macOS
export MCP_TRANSPORT=http
# Windows PowerShell
$env:MCP_TRANSPORT = "http"
# Windows CMD
set MCP_TRANSPORT=http
```
### 4. HTTP 模式认证配置(仅 HTTP 模式需要)
HTTP 模式默认启用 API Key 认证,未自定义 API Key 时,启动时会自动生成一个随机 API Key。
自定义 API Key(推荐):
```bash
# Linux/macOS
export MCP_API_KEY="your_api_key_here"
# Windows PowerShell
$env:MCP_API_KEY = "your_api_key_here"
# Windows CMD
set MCP_API_KEY=your_api_key_here
```
禁用认证(不推荐,仅限内网测试):
```bash
# Linux/macOS
export MCP_AUTH_ENABLED=false
# Windows PowerShell
$env:MCP_AUTH_ENABLED = "false"
# Windows CMD
set MCP_AUTH_ENABLED=false
```
### 5. 其他配置(可选)
| 环境变量 | 描述 | 默认值 |
|---------|------|--------|
| `XCSC_TUSHARE_SERVER` | XCSC Tushare 服务器地址 | `http://tushare.xcsc.com:7172` |
| `XCSC_ENV` | 运行环境 | `prd` |
| `MCP_TRANSPORT` | 传输方式,`stdio` 或 `http` | `stdio` |
| `MCP_HOST` | 服务器监听地址(仅 HTTP) | `0.0.0.0` |
| `MCP_PORT` | 服务器监听端口(仅 HTTP) | `8000` |
| `MCP_PATH` | MCP 服务路径(仅 HTTP) | `/mcp` |
| `MCP_NAME` | 服务名称 | `xcsc-tushare-mcp` |
| `MCP_AUTH_ENABLED` | 是否启用认证(仅 HTTP) | `true` |
| `MCP_LOG_LEVEL` | 日志级别 | `INFO` |
## 使用方法
### 方式一:使用 stdio 模式(推荐,最简单)
这是最简单的方式,可以直接在 MCP 客户端配置中使用,无需单独启动服务器。
#### 1. 配置 MCP 客户端:
```json
{
"mcpServers": {
"xcsc-tushare": {
"command": "uvx",
"args": [
"xcsc-tushare-mcp"
],
"env": {
"XCSC_TUSHARE_TOKEN": "your_token_here"
}
}
}
}
```
或者如果已经安装了包:
```json
{
"mcpServers": {
"xcsc-tushare": {
"command": "xcsc-tushare-mcp",
"env": {
"XCSC_TUSHARE_TOKEN": "your_token_here"
}
}
}
}
```
### 方式二:使用 HTTP 模式
如果需要远程部署或多个客户端共享,可以使用 HTTP 模式。
#### 1. 启动服务器:
```bash
# 设置必要的环境变量
export XCSC_TUSHARE_TOKEN="your_token_here"
export MCP_TRANSPORT=http
# 启动服务器
xcsc-tushare-mcp
```
启动后会显示:
```
正在启动 xcsc-tushare-mcp...
版本: 1.1.0
传输方式: http
XCSC Tushare Token: your_toke***
运行环境: prd
服务地址: http://0.0.0.0:8000/mcp
认证状态: 已启用
API Key: xxxxxxxx...xxxx
```
#### 2. 配置 MCP 客户端:
```json
{
"mcpServers": {
"xcsc-tushare": {
"url": "http://localhost:8000/mcp",
"headers": {
"Authorization": "Bearer your_api_key_here"
}
}
}
}
```
## 可用工具
本服务提供 **3 个核心工具**:
### 1. get_api_list()
获取所有可用 API 的简化列表(只包含名称和描述)。
**返回格式:**
```json
{
"success": true,
"total_apis": 91,
"data": {
"stock_basic": {
"api_name": "stock_basic",
"description": "获取中国A股基本资料",
"category": "沪深股票_基础数据"
},
...
}
}
```
### 2. get_api_doc(api_name)
获取指定 API 的详细文档(参数、输出字段、示例)。
**参数:**
- `api_name`: API 名称,如 `"stock_basic"`
**返回格式:**
```json
{
"success": true,
"data": {
"api_name": "stock_basic",
"description": "获取中国A股基本资料",
"category": "沪深股票_基础数据",
"limit": "单次最大5000条",
"permission": "基础权限",
"input_params": [
{"name": "ts_code", "type": "str", "required": false, "description": "股票代码"},
...
],
"output_params": [
{"name": "ts_code", "type": "str", "description": "股票代码"},
...
],
"example": "get_api_query('stock_basic', '{\"ts_code\": \"000001.SZ\"}')"
}
}
```
### 3. get_api_query(api_name, params)
通用查询接口,调用底层 XCSC Tushare API。
**参数:**
- `api_name`: API 名称,如 `"stock_basic"`
- `params`: JSON 格式的参数字符串,如 `'{"ts_code": "000001.SZ"}'`
**返回格式:**
```json
{
"success": true,
"data": [...],
"count": 100,
"columns": ["ts_code", "name", "industry", ...]
}
```
## 使用流程
1. **获取 API 列表**
```
调用 get_api_list() 查看所有可用 API
```
2. **获取 API 文档**
```
调用 get_api_doc("stock_basic") 获取参数说明
```
3. **执行查询**
```
调用 get_api_query("stock_basic", '{"ts_code": "000001.SZ"}') 获取数据
```
## 交互示例
安装并配置后,您可以通过 MCP 客户端用自然语言与 AI 助手交互:
**获取股票数据:**
```
获取平安银行最近 30 天的股价数据
```
**财务分析:**
```
查看招商银行最近的财务报表,分析营收和净利润
```
**指数数据:**
```
获取上证指数最近的行情数据
```
**基金数据:**
```
查询某只基金的净值和持仓情况
```
## 参数格式
- **日期格式**:YYYYMMDD(如 20241231)
- **股票代码**:ts_code 格式(如 000001.SZ, 600000.SH)
- **返回格式**:JSON 格式,包含 success、data、count、columns 字段
- **params 格式**:JSON 字符串,如 `'{"ts_code": "000001.SZ", "trade_date": "20240101"}'`
## 接口更新
项目支持动态更新XCSC Tushare API 接口:
1. 修改 `references/` 目录中的 `.md` 文件
2. 重启服务器
3. 服务器会自动检测变化并重新生成 `api_metadata.json`
这样您可以:
- 添加新的 XCSC Tushare API 文档
- 修改现有 XCSC Tushare API 的描述或参数
- 无需修改代码即可更新 XCSC Tushare API 列表
## 开发指南
### 本地开发
```bash
# 克隆项目
git clone https://github.com/duhanjun/xcsc-tushare-mcp.git
cd xcsc-tushare-mcp
# 安装开发依赖
pip install -e ".[dev]"
# 运行服务
python -m xcsc_tushare_mcp
```
### 打包发布
```bash
# 安装打包工具
pip install build twine
# 打包
python -m build
# 上传到 PyPI
twine upload dist/*
```
## 相关链接
- [XCSC Tushare 官网](http://tushare.xcsc.com:7173/document/1)
- [XCSC Tushare API 文档](http://tushare.xcsc.com:7173/document/2)
- [MCP 协议文档](https://modelcontextprotocol.io/)
- [FastMCP 框架](https://github.com/jlowin/fastmcp)
## 许可证
MIT License
## 注意事项
- 本项目仅供学习和研究使用
- XCSC Tushare API 调用有频率限制,请合理使用
- 数据来源于 XCSC Tushare,请勿用于商业用途
This server cannot be deployed
Maintenance
ActivityStale
ResponsivenessSyncing