金融数据访问服务

Tushare MCP Server 是一个提供 Tushare 金融数据访问的模型上下文协议服务器,适用于金融数据分析、策略回测和投资组合管理。

  • by cloga
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 cloga/tushare-mcp

使用说明

Tushare MCP服务器

这是一个模型上下文协议(MCP)服务器,提供对Tushare财务数据的访问。

先决条件

  • Python 3.10或更高版本
  • Tushare代币(从以下地址获取 Tushare.pro)

安装

  1. 安装依赖项:
pip install -r requirements.txt

配置

  1. 创建一个 .env 项目根目录中的文件:
    TUSHARE_TOKEN=your_tushare_token_here
    

项目布局

  • server/:MCP入口点(server.py)加上原木。
  • src/:应用程序代码拆分为 strategies/ (车轮回测等)以及 utils/ (共享数学+性能助手)。
  • temp_data/:生成的工件,如 wheel_report.html, wheel_dashboard.html,以及组合CSV/JSON输出。
  • tests/:用于战略原型设计的独立脚本(wheel_strategy.py, portfolio_rebalance.py等等)。

在VS代码中使用GitHub Copilot

要在VS Code中将此MCP服务器与GitHub Copilot一起使用,您需要配置 mcp.json 文件。

  1. 开放式配置:

    • 打开命令选项板(Ctrl+Shift+P 或 F1).
    • 搜索并选择 MCP: Configure MCP Servers.
    • 这将打开 mcp.json 文件(通常位于 %APPDATA%\Code\User\mcp.json 在Windows上)。
  2. 通过命令面板添加(快捷方式):

  • 按 Ctrl+Shift+P 再次选择 MCP: Add MCP Server.
  • 时中 输入命令 出现提示,粘贴:
```
C:\Users\lochen\AppData\Local\Microsoft\WindowsApps\python3.13.exe c:\Users\lochen\tushare-mcp\server\server.py
```
  • 接受建议的服务器名称(例如 tushare)并保存。
  1. 手动添加服务器配置: 添加 tushare-server JSON文件的配置。确保Python可执行文件和脚本都使用绝对路径。

    {
      "mcpServers": {
        "tushare-server": {
          "command": "C:\\path\\to\\your\\python.exe",
          "args": [
            "C:\\path\\to\\tushare_mcp_server\\server\\server.py"
          ]
        }
      }
    }
    
    • 替换 C:\\path\\to\\your\\python.exe 使用您实际的Python解释器路径(例如。, C:\\Users\\username\\AppData\\Local\\Programs\\Python\\Python311\\python.exe).
    • 替换 C:\\path\\to\\tushare_mcp_server\\server\\server.py 带有此项目服务器入口点的绝对路径。
  2. 重新启动VS代码: 保存后 mcp.json,重新启动VS Code以使更改生效。

用法

MCP检验员测试

您可以使用MCP检查器测试服务器:

npx @modelcontextprotocol/inspector python server/server.py

价格波动工具

服务器运行后(Inspector、Copilot等),调用 get_price_volatility 计算股票近期波动性的工具。支持 frequency 价值观 daily, monthly,或 yearly, letting you measure 波动率 on日线/月线/年线 data.

{
  "tool": "get_price_volatility",
  "args": {
    "identifier": "000001.SZ",
    "window": 30,
    "frequency": "daily",
    "annualize": true
  }
}

返回的关键字段:

  • frequency: 数据频率(daily/monthly/yearly)。
  • window_periods: 实际使用的周期数(交易日/月份/年份)。
  • period_volatility: 该频率下的标准差。
  • annualized_volatility: 根据频率自动换算后的年化波动率(252/12/1)。
  • mean_period_return: 平均单周期收益。

选项参考和每日数据

基于 Tushare 文档 #157 新增了两个期权工具:

  • get_option_basic(exchange, fields): 返回上/深交所上市期权的合约元数据(行权价、类型、到期日等)。
  • get_option_daily(ts_code, trade_date, start_date, end_date, exchange): 返回期权日线行情。

示例(通过 MCP 调用 get_option_daily 查询科创50期权在单日的 K 线):

{
  "tool": "get_option_daily",
  "args": {
    "exchange": "SSE",
    "trade_date": "20251203"
  }
}

返回值为 JSON 数组,字段与 Tushare opt_daily 接口一致,可配合 get_price_volatility 等工具进一步分析期权策略。

ETF/基金每日报价

使用新的 get_fund_daily 工具(Tushare 文档 #127 对应接口)可直接拉取 ETF/场内基金的日线行情:

{
  "tool": "get_fund_daily",
  "args": {
    "ts_code": "159915.SZ",
    "start_date": "20250101",
    "end_date": "20251203",
    "fields": "ts_code,trade_date,open,high,low,close,vol"
  }
}

当 fields 为空时会返回默认全部列。可搭配 get_option_daily、get_price_volatility 等工具构建 ETF+期权策略分析。

车轮策略回测

tests/wheel_strategy.py 利用 159915.SZ(创业板ETF)及其期权,ETF 行情通过 Tushare fund_daily 接口(文档 #127)获取,模拟“车轮饼”策略:

  1. 每个自然月首个交易日:
  • 若空仓,卖出 5%~10% OTM 的认沽合约(call_put='P')。
  • 若持仓,卖出 5%~10% OTM 的认购合约(call_put='C')。
  1. 到期日根据标的收盘价判断是否被指派,按轮动逻辑更新持仓。
  2. 统计权利金、被指派次数、最大保证金占用,并估算收益率。
  3. 报告会显示每笔交易的隐含波动率:若 Tushare 返回该字段则直接使用,否则基于 Black-Scholes(假定 2% 无风险利率)用成交价反推出一个参考值。

运行:

python tests/wheel_strategy.py

输出包含总收益、占用保证金、近10期交易记录等。所有生成的 wheel_report.html、wheel_dashboard.html 等文件都会写入 temp_data/,便于统一清理。若需调整标的、时间区间或虚值区间,可编辑脚本顶部的常量(UNDERLYING、START_DATE、OTM_RANGE 等)。

车轮策略MCP工具

无需运行脚本,也可直接通过 MCP 调用 backtest_wheel_strategy:

{
  "tool": "backtest_wheel_strategy",
  "args": {
    "underlying": "159915.SZ",
    "start_date": "20230101",
    "end_date": "20251203",
    "otm_min": 0.05,
    "otm_max": 0.10,
    "initial_capital": 30000
  }
}

返回 JSON 中包含:

  • ending_value、return_on_capital、annualized_return 等指标。
  • recent_trades:近 12 期的期权选择、权利金、行权价及是否被指派。

可通过参数更换标的(只要该 ETF 有挂牌期权)、调整虚值区间或回测时间窗。确保 Tushare Token 对 fund_daily、opt_basic、opt_daily 接口有权限。

多ETF投资组合回测

tests/portfolio_rebalance.py 按照截图中的 10 只 ETF 及固定权重构建组合,并在每个自然月首个交易日动态再平衡:

python tests/portfolio_rebalance.py

脚本会:

  • 自动获取所有 ETF 的可用历史区间,并截取重叠部分;
  • 计算每日组合净值并输出 temp_data/portfolio_equity_curve.csv,再平衡明细写入 temp_data/portfolio_rebalances.csv;
  • 生成 temp_data/portfolio_vs_benchmarks.csv,其中包含组合与沪深300/中证500/创业板指的归一化指数曲线;
  • 在 temp_data/portfolio_summary.json 中汇总收益率、年化波动率、最大回撤、Sharpe Ratio 及各基准指数的对比指标。

与Claude Desktop一起使用

将以下配置添加到您的 claude_desktop_config.json:

{
  "mcpServers": {
    "tushare": {
      "command": "python",
      "args": ["C:\\Users\\lochen\\tushare_mcp_server\\server\\server.py"],
      "env": {
        "TUSHARE_TOKEN": "your_token_here"
      }
    }
  }
}

确保更换 your_token_here 使用您的真实Tushare代币。