关于 finance-mcp
finance-mcp 为 LLM Agent 提供实时市场数据、SEC 文件、内幕交易活动、外汇和宏观经济序列。其 11 个工具使用无需 API 密钥的公开数据源;访问 SEC 需配置含姓名和邮箱的 User-Agent。
主要功能
- 01股票、ETF 和指数报价
- 02历史价格与回报
- 03加密货币价格和市场排名
- 04SEC 文件、XBRL 与内幕交易活动
- 05货币汇率
- 06世界银行经济指标
适用场景
- 01查询股票或加密货币价格
- 02查看内幕文件并区分实际交易与机械性事件
- 03搜索公司文件和财务报表
- 04比较汇率或宏观经济指标
MCP 相关
它通过 stdio 向 MCP 客户端提供 11 个金融数据工具,数据来自 Yahoo Finance、CoinGecko、SEC EDGAR、Frankfurter/ECB 和世界银行等公开来源。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y finance-data-mcpSEC_USER_AGENTContact string sent to SEC EDGAR on every request, in the form "Your Name [email protected]". EDGAR returns HTTP 403 without it, so the three SEC tools need this set; all other tools work without it.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
为什么选择它
大多数金融 API 都要求注册账号、获取密钥并绑定信用卡,之后你的 Agent 才能回答“Apple 现在的股价是多少?”
finance-mcp 将五个真正免费的公共数据源封装为十一个 MCP 工具。它们都不需要密钥。唯一需要的配置是电子邮件地址,而且只是因为 SEC 要求提供。
独一无二的功能
公司内部人士——高管、董事和持股 10% 的股东——必须在两个工作日内向 SEC 报告其本人股票的每笔交易。这些信息公开、结构化,却几乎无人查阅。
问题在于,其中大多数交易都没有实际意义。期权归属。为缴纳归属产生的税款而扣留股份。这些都不是交易决定,却都会被报告为“内部人士卖出”。
get_insider_activity 会将两者区分开来。以下是 6 月某一周 Apple 的实际输出:
OPEN-MARKET (a deliberate decision to trade)
Sold: 5 filing(s) 302.92K shares ≈ $87,566,268.55
MECHANICAL (vesting, option exercises, tax withholding — no decision): 1 filing(s)
Newstead Jennifer — SVP, GC and Secretary
2026-06-15 +30.10K @ — Option exercise / conversion
2026-06-15 −16.24K @ $296.42 Shares withheld for taxes ← not a trade
LEVINSON ARTHUR D — Director
★ 2026-05-06 −149.53K @ $284.57 Open-market sale ← a real decision
★ 2026-05-06 −100.47K @ $285.04 Open-market sale
2026-05-06 −5.00K @ — Gift
同一家公司,同一个月。其中一笔是信号,另一笔则只是薪酬发放。每一行都链接到对应的申报文件。
它只报告披露的信息,不对其进行解读。内部人士买入和卖出都可能有合理的解释,二者都无法预测股价。
因此,我们测算了它有多重要
这个说法可以验证,所以我们进行了检验:统计为期 12 个月内,标普 100 指数成分公司的内部人士提交的每份 Form 4——共 2,969 份——并根据申报中是否包含实际交易决定进行分类。
大约七成的内部人士申报完全不包含交易决定。 在市值中位数的公司,这一比例为 83%。
另一个发现更让我们意外。公司也会以 10% 股东的身份提交 Form 4——而 53 份申报仅占样本的 1.8%,却占全部处置股份的 65%。 数据中最大的单一“内部人士”是 Honeywell International Inc,它处置了其正在分拆的一家公司 3.17 亿股。按股份数量对内部人士排名,榜首并不是个人。
分析方法、注意事项和原始数据见 analysis/。只需两条命令即可从头重新运行。
工具
| 工具 | 功能 |
|---|---|
get_stock_quote | 当前价格、当日/52 周价格区间、成交量——股票、ETF、指数 |
get_price_history | OHLCV 蜡烛图,以及区间回报和高低价摘要 |
search_symbols | 将公司名称解析为股票代码 |
get_fx_rate | 按 ECB 参考汇率进行货币兑换 |
get_crypto_price | 现货价格、24 小时涨跌幅、市值、成交量 |
get_crypto_market | 按市值排名的顶级加密货币 |
get_insider_activity | Form 4 内部人士交易——将公开市场决策与归属/税务相关杂项区分开来 |
get_sec_filings | EDGAR 最新文件,提供文档直达 URL,可按表格类型筛选 |
get_sec_financials | 按提交时记录的 XBRL 科目时间序列 |
search_sec_filings | 对 2001 年以来的所有 EDGAR 文件进行全文搜索 |
get_economic_indicator | 世界银行宏观数据系列——GDP、通胀、失业率、债务、贸易 |
工作原理
flowchart LR
A["Claude Desktop<br/>Claude Code<br/>any MCP client"] -->|MCP over stdio| B["finance-mcp"]
B --> C["Yahoo Finance<br/><i>equities · ETFs · indices</i>"]
B --> D["CoinGecko<br/><i>crypto</i>"]
B --> E["SEC EDGAR<br/><i>filings · XBRL · insider trades</i>"]
B --> F["ECB / Frankfurter<br/><i>FX</i>"]
B --> G["World Bank<br/><i>macro</i>"]
共享 HTTP 层会按主机控制请求速率,对 429/403/5xx 错误进行指数退避重试,遵循 Retry-After,并在内存中缓存响应——报价缓存 30 秒,文件和宏观数据系列缓存数小时。
快速开始
Claude Code — 无需克隆
claude mcp add finance -e SEC_USER_AGENT="Your Name [email protected]" -- npx -y finance-data-mcp
从源代码开始
git clone https://github.com/adididitagain/finance-mcp.git
cd finance-mcp
npm install
npm run build
claude mcp add finance -e SEC_USER_AGENT="Your Name [email protected]" -- node "$(pwd)/dist/index.js"
Claude Desktop
添加到 claude_desktop_config.json 中——在 macOS 上,路径为 ~/Library/Application Support/Claude/claude_desktop_config.json——然后重启应用:
{
"mcpServers": {
"finance": {
"command": "npx",
"args": ["-y", "finance-data-mcp"],
"env": {
"SEC_USER_AGENT": "Your Name [email protected]"
}
}
}
}
若要改为从本地克隆运行,请使用 "command": "node" 和 "args": ["/absolute/path/to/finance-mcp/dist/index.js"]。
其他 MCP 客户端
此服务通过 stdio 使用 MCP 通信。运行 node dist/index.js,并让客户端连接到它。
试试看
Apple 当前的股价是多少?
比较 BTC 和 ETH 过去 24 小时的表现。
根据 Microsoft 的文件,展示其过去 5 年的营收。
Tesla 最近提交了哪些 8-K 文件?
哪些公司的 10-K 文件提到了“量子计算”?
印度过去十年的 GDP 增长情况如何?
将 5000 USD 兑换为 JPY。
Apple 内部人士确实在抛售,还是只是在归属股票?
数据来源
| 来源 | 用途 | 是否需要密钥 |
|---|---|---|
| Yahoo Finance | 股票、ETF、指数、特殊外汇 | 否 |
| CoinGecko | 加密货币 | 否 |
| SEC EDGAR | 文件、XBRL 财务数据、Form 4 内部人士交易 | 否(需要 User-Agent) |
| Frankfurter / ECB | 外汇参考汇率 | 否 |
| World Bank | 宏观经济指标 | 否 |
配置
| 环境变量 | 是否必需 | 用途 |
|---|---|---|
SEC_USER_AGENT | SEC 工具需要 | EDGAR 要求 每个请求都携带含真实姓名和电子邮件地址的 User-Agent,否则会返回 403。格式:"Your Name [email protected]"。 |
重要
MCP 客户端不会将 shell 环境传递给服务。请在上文所示的客户端配置中设置
SEC_USER_AGENT,而不是在.zshrc中设置。
开发
npm run dev # tsc --watch
npm test # 66 offline tests, stubbed fetch + real EDGAR fixtures, no network
npm run smoke # drives all 11 tools against the live APIs
备注和限制
- Yahoo 会根据 IP 地址进行限流,而且会关注你声称的身份。 使用伪造的桌面浏览器
User-Agent会遭到严格限流——实测发现,使用 Chrome UA 时成功请求数为 0/8,而使用诚实的finance-mcp/0.1时为 8/8,两种情况交替进行。该服务出于这个原因如实标识自身;不要通过伪装成浏览器来“修复”它。外汇数据改由 ECB 提供,不受限流。 - 报价可能会延迟最多约 15 分钟,且并非交易所官方数据。
- SEC XBRL 数据按提交时的内容呈现。
get_sec_financials会根据每行所涵盖的期间标注,而不是根据其来源文件的财年标注——EDGAR 自身的fy字段描述的是文件,因此如果 10-K 重述了前一年度的数据,否则就会错误标注。 search_sec_filings根据 EDGAR 的相关性排序,因此查询词出现在公司名称中的公司会更靠前。- 世界银行数据按年统计,通常会滞后一到两年。
- 内幕交易数据的完整程度取决于你读取的时间范围。
get_insider_activity会读取最新的limit份 Form 4,并报告跳过的数量——大型公司每年会提交数百份,因此较小的 limit 只能显示近期片段,而非完整情况。Form 4 必须在交易后的两个工作日内提交,因此会有短暂的报告延迟。
免责声明
这是一款信息数据工具。它返回的内容不构成投资建议,且数据不保证准确性或可用性。对于你打算据此采取行动的信息,请通过官方来源核实。
许可证
MIT © Aditya Bisht
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。