local-datasource
将akshare、yfinance、wbgapi、arxiv等免费公开接口封装为4个标准MCP工具,使支持MCP的智能体无需第三方账号和云额度即可直接查询金融市场、宏观经济和学术论文数据。
README
Local Datasource
一个本地运行的 MCP(Model Context Protocol)数据服务器。它让任何支持 MCP 的 Agent(Claude Code、Codex、Cursor、OpenCode 等)都能直接查询金融市场、宏观经济和学术论文数据,而无需第三方账号、不消耗云额度、不经过外部中继。
一句话介绍
local-datasource 把 akshare、yfinance、wbgapi、arxiv 等免费公开接口封装成 4 个标准 MCP tool,Agent 只需要像调用本地函数一样请求数据,即可获得结构化 CSV 输出。
为什么需要这个项目
在日常投研、尽调、学术检索或自动化报告生成中,Agent 经常需要实时数据:
- 查一只股票过去一年的走势
- 对比黄金、美股、A股等多资产表现
- 拉取某个国家的 GDP/CPI 数据
- 检索某个领域的 arXiv 论文
这些需求本身并不复杂,但常见方案要么需要登录某个平台并消耗额度,要么把查询请求发到云端。local-datasource 希望提供一种透明、可控、低成本的替代方案:
- 数据请求不出本机:适合对合规、隐私敏感的场景。
- 无需账号和额度:基于公开接口,安装完就能用。
- 标准 MCP 协议:不绑定任何特定 Agent,可被多家产品复用。
- 源码可见、可扩展:增加新数据源或调整输出格式都很直接。
核心特点
- ✅ A股 / 港股 / 美股:日线行情,支持前复权/后复权。
- ✅ 美股 / ETF / 全球资产:默认
akshare美股接口,可回退yfinance。 - ✅ 世界银行宏观指标:GDP、CPI、人口等。
- ✅ arXiv 论文搜索:标题、作者、摘要、PDF 链接结构化输出。
- ✅ 统一 CSV 输出:每个 tool 都把结果写到
file_path,并返回前 5 行预览。 - ✅ 零 API Key:所有默认数据源均免费使用。
- ✅ 跨 Agent 复用:标准 MCP Server,配置一条
command即可接入。
适用人群
- 需要在 Agent 工作流里频繁查数据的投研、分析师、开发者。
- 不希望把查询请求发送到云端的本地优先用户。
- 想学习/定制 MCP 数据服务器实现的开发者。
快速开始
# 1. 克隆并安装
pip install -e .
# 2. 启动 MCP 服务
local-datasource
# 3. 在 Agent 的 MCP 配置中添加
{
"mcpServers": {
"local-datasource": {
"command": "local-datasource"
}
}
}
覆盖范围
| 数据类型 | 工具 | 底层接口 | 是否需 API Key |
|---|---|---|---|
| A股 / 港股 / 美股 历史行情 | query_stock |
akshare |
否 |
| 美股 / ETF / 全球资产 | query_yfinance |
akshare(默认)/ yfinance(备选) |
否 |
| 世界银行宏观指标 | query_worldbank |
wbgapi |
否 |
| arXiv 学术论文 | query_arxiv |
arxiv |
否 |
架构
Agent(Claude Code / Codex / Cursor / OpenCode 等)
↓ MCP stdio
local-datasource(本仓库)
↓ 直接调用
akshare / yfinance / wbgapi / arxiv
↓ 原始数据源
同花顺 / Yahoo Finance / World Bank / arxiv.org
文件结构
.
├── SKILL.md # Agent 执行手册
├── README.md # 项目介绍(本文档)
├── pyproject.toml # Python 包配置与依赖
├── config.yaml # 可选配置文件
├── src/local_datasource/ # MCP server 源码
│ ├── server.py # 服务入口:注册 tools、处理调用
│ ├── config.py # 加载 config.yaml / 环境变量
│ ├── formatters.py # 统一 CSV 输出与预览
│ └── providers/ # 各数据源适配器
│ ├── stock.py # A/HK/US 股票
│ ├── yahoo.py # 美股/全球资产
│ ├── worldbank.py # 世界银行
│ └── arxiv.py # arXiv 论文
└── demos/ # 示例脚本
└── mcp_query_demo.py # 多资产查询 + 归一化走势图
依赖
- Python >= 3.10
mcp:MCP 服务器框架akshare:A股/港股/美股/ETF 行情yfinance:Yahoo Finance 备选接口wbgapi:世界银行数据arxiv:arXiv 论文搜索pandas:数据处理pyyaml:配置文件解析
可选:
matplotlib:运行demos/mcp_query_demo.py绘图
安装
pip install -e .
安装完成后,local-datasource 命令会被加入 PATH。
启动 MCP 服务
local-datasource
服务通过标准输入输出(stdio)与 Agent 通信。可以用以下命令快速验证是否启动成功:
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}' | local-datasource
若返回初始化结果,说明服务正常。
Agent 配置示例
任何支持 MCP 的 Agent 都可以通过 command 方式调用本服务。
Claude Code
claude_mcp_settings.json:
{
"mcpServers": {
"local-datasource": {
"command": "local-datasource"
}
}
}
Codex
.codex/config.json:
{
"mcpServers": {
"local-datasource": {
"command": "local-datasource"
}
}
}
Cursor / Windsurf / OpenCode
在对应 MCP 配置中添加:
{
"mcpServers": {
"local-datasource": {
"command": "local-datasource"
}
}
}
调用数据案例
查询 A 股:贵州茅台
{
"ticker": "600519",
"market": "a",
"start_date": "2025-06-01",
"end_date": "2026-06-24",
"file_path": "/tmp/moutai.csv"
}
Tool:query_stock
查询港股:腾讯
{
"ticker": "00700",
"market": "hk",
"start_date": "2025-06-01",
"end_date": "2026-06-24",
"file_path": "/tmp/tencent.csv"
}
Tool:query_stock
查询美股/ETF:黄金 GLD
{
"ticker": "GLD",
"period": "1y",
"file_path": "/tmp/gld.csv"
}
Tool:query_yfinance
默认使用 akshare 的美股日线接口;若需要 Yahoo Finance 数据,添加 "use_yfinance": true:
{
"ticker": "AAPL",
"period": "1y",
"use_yfinance": true,
"file_path": "/tmp/aapl_yahoo.csv"
}
查询世界银行:中国 GDP 现价
{
"indicator": "NY.GDP.MKTP.CD",
"country": "CHN",
"start_year": 2020,
"end_year": 2023,
"file_path": "/tmp/china_gdp.csv"
}
Tool:query_worldbank
搜索 arXiv 论文
{
"query": "large language model retrieval augmented generation",
"max_results": 10,
"sort_by": "relevance",
"file_path": "/tmp/llm_rag.csv"
}
Tool:query_arxiv
多资产归一化对比
参考 demos/mcp_query_demo.py:它通过 MCP 调用多个工具,读取生成的 CSV,计算归一化价格,并绘制对比图。
python demos/mcp_query_demo.py
输出:
demos/outputs/*.csv:各资产原始行情demos/outputs/normalized_returns.png:归一化走势图demos/outputs/summary.csv:汇总表
配置
项目根目录的 config.yaml:
providers:
yahoo:
# 默认使用 akshare。设为 true 则默认使用 yfinance。
use_yfinance: false
也可通过环境变量指定配置文件:
LOCAL_DATASOURCE_CONFIG=/path/to/config.yaml local-datasource
扩展新数据源
src/local_datasource/providers/ 下的每个文件都是一个独立适配器,新增数据源的步骤:
- 在
providers/新增一个 Python 文件,实现query_xxx(...)函数,返回tuple[str, str](文件路径 + 预览文本)。 - 在
server.py的build_tools()中注册新 tool。 - 在
handle_call_tool()中增加路由。 - 更新
SKILL.md和README.md的 tool 说明。
测试
测试文件位于本地 tests/ 目录(未提交到 GitHub):
python -m pytest tests/ -v
包含配置加载、格式化、4 个 provider 的集成测试、MCP server 工具注册。
注意事项
yfinance容易被 Yahoo Finance 限流,因此默认优先使用akshare。akshare的接口可能随时间变化,建议定期更新到较新版本。- World Bank 和 arXiv 通常稳定且无需 API key。
与 kimi-datasource 的异同
| 维度 | local-datasource | kimi-datasource |
|---|---|---|
| 运行位置 | 本机 | Kimi Code 云端 |
| 登录/账号 | 不需要 | 需要 Kimi Code 账号 |
| 费用 | 免费(受公开接口限额影响) | 消耗 Kimi Code 额度 |
| 数据源 | A/HK/US 股票、美股/ETF、World Bank、arXiv | 更多,包括天眼查、Google Scholar、元典法律等 |
| 数据链路 | Agent → 本地 Server → 公开接口 | Agent → Kimi 云服务 → 后端数据源 |
| 可定制性 | 源码本地可见,可修改/扩展 | 黑盒,只能使用官方暴露的 tool |
| 跨 Agent 复用 | 标准 MCP Server,可被多家 Agent 复用 | 仅限 Kimi Code 内部 |
本项目的设计思路是:把常见的免费/公开数据查询能力做成一个本地、透明、可扩展的 MCP 服务。它并不复制 kimi-datasource 的具体实现(其接口实现并不公开),而是基于公开库重新组合出一套可用的本地替代方案。
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
mcp-server-qdrant
这个仓库展示了如何为向量搜索引擎 Qdrant 创建一个 MCP (Managed Control Plane) 服务器的示例。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器