Finance Mcp

io.github.AdityaSBisht由 GitHub 账号 AdityaSBisht 发布v0.1.2更新于 Oct 24, 2026

Live stock, crypto, SEC filings, FX and macro data for LLM agents. No API keys.

发布方自己的服务:Finance Foundation

已验证STDIO仅桌面金融数据与分析

概览

AI 生成的概览

本地 MCP 服务器,让助手从免费公开来源获取股票、加密货币、汇率、SEC 文件、内部人交易和世界银行宏观数据。

可以做什么
查询股票、ETF 和指数报价、价格历史,并把公司名解析为股票代码;获取加密货币现货价格与市值排行;按欧洲央行参考汇率换算货币;搜索、列出并全文检索 SEC EDGAR 文件,读取按原始申报的 XBRL 财务数据;查看 Form 4 内部人交易,并把公开市场决策与归属、扣税等机械性记录分开;获取世界银行 GDP、通胀、失业率等宏观序列。
适用场景
适合让助手用实时公开数据回答行情、申报或宏观问题,例如查询报价、比较币种、读取公司已披露营收,或判断内部人卖出是否真实。
运行要求
以 stdio 在本地运行,通常通过 npx finance-data-mcp 或本地构建的克隆配合 Node.js 启动。无需 API 密钥或账号。三个 SEC 工具需要在客户端配置中设置 SEC_USER_AGENT 环境变量,内容为姓名和邮箱;其他工具无需该变量。需要访问 Yahoo Finance、CoinGecko、SEC EDGAR、ECB/Frankfurter 和世界银行的网络。
安装前请注意
SEC_USER_AGENT 包含真实姓名和邮箱,会在每次请求时发送给 SEC EDGAR;应在客户端配置中设置,而非 shell。报价可能延迟约 15 分钟且非交易所官方数据;世界银行数据为年度且滞后;内部人结果只覆盖所请求的时间窗口。输出仅供参考,不构成投资建议,也不保证准确性。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Finance Mcp,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

finance-mcp

Live financial data for any LLM agent. Stock quotes · crypto · SEC filings · insider trades · XBRL financials · FX · macro

[CI] [npm] [License: MIT] [Node] [MCP] [API key] [Tools]

[Animated terminal demo: an agent calls get_stock_quote and get_price_history and gets live Apple and NVIDIA market data back]

Why

Most finance APIs want a signup, a key, and a credit card before your agent can answer "what's Apple trading at?"

finance-mcp wraps five genuinely free public sources behind eleven MCP tools. No key for any of them. The only configuration is an email address, and only because the SEC insists on one.

The one you can't get anywhere else

Company insiders — officers, directors, 10% owners — must report every trade in their own stock to the SEC within two business days. It's public, it's structured, and essentially nobody reads it.

The catch is that most of it means nothing. Options vest. Shares get withheld to pay the tax on that vesting. None of it is a decision, and all of it gets reported as "insider selling."

get_insider_activity separates the two. Real output, Apple, one week in June:

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

Same company, same month. One of those is a signal; the other is payroll. Every row links to the filing it came from.

It reports what was disclosed and does not interpret it. Insider buying and selling both have innocent explanations, and neither predicts the share price.

So we measured how often it matters

That claim is testable, so we tested it: every Form 4 filed by an insider at an S&P 100 company over twelve months — 2,969 filings — classified by whether the filing contains an actual decision to trade.

[Chart: 71.9% of insider Form 4 filings contain no decision to trade at all. 69.2% are vesting, option exercises and tax withholding; 26.2% contain an open-market sale; 2.7% are gifts only; 1.9% contain an open-market purchase.]

Roughly seven in ten insider filings contain no decision to trade at all. At the median company it's 83%.

A second result surprised us more. Corporations file Form 4s too, as 10% owners — and 53 filings, 1.8% of the sample, accounted for 65% of every disposed share. The largest single "insider" in the data was Honeywell International Inc, disposing of 317M shares of a company it was spinning off. Rank insiders by share count and the top of the list isn't people.

Method, caveats and the raw data are in analysis/. It re-runs from scratch with two commands.

Tools

ToolWhat it does
get_stock_quoteCurrent price, day/52-week range, volume — stocks, ETFs, indices
get_price_historyOHLCV candles plus period return and high/low summary
search_symbolsResolve a company name to a ticker
get_fx_rateCurrency conversion at ECB reference rates
get_crypto_priceSpot price, 24h change, market cap, volume
get_crypto_marketTop coins ranked by market cap
get_insider_activityForm 4 insider trades — open-market decisions separated from vesting/tax noise
get_sec_filingsRecent EDGAR filings with direct document URLs, filterable by form
get_sec_financialsAs-filed XBRL line items as a time series
search_sec_filingsFull-text search across every EDGAR filing since 2001
get_economic_indicatorWorld Bank macro series — GDP, inflation, unemployment, debt, trade

How it fits together

mermaid
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>"]

The shared HTTP layer paces requests per host, retries 429/403/5xx with exponential backoff, honours Retry-After, and caches responses in memory — 30s for quotes, hours for filings and macro series.

Quickstart

Claude Code — no clone needed
bash
claude mcp add finance -e SEC_USER_AGENT="Your Name [email protected]" -- npx -y finance-data-mcp
From source
bash
git clone https://github.com/adididitagain/finance-mcp.gitcd finance-mcpnpm installnpm run buildclaude mcp add finance -e SEC_USER_AGENT="Your Name [email protected]" -- node "$(pwd)/dist/index.js"
Claude Desktop

Add to claude_desktop_config.json — on macOS, ~/Library/Application Support/Claude/claude_desktop_config.json — then restart the app:

json
{  "mcpServers": {    "finance": {      "command": "npx",      "args": ["-y", "finance-data-mcp"],      "env": {        "SEC_USER_AGENT": "Your Name [email protected]"      }    }  }}

To run from a local clone instead, use "command": "node" with "args": ["/absolute/path/to/finance-mcp/dist/index.js"].

Any other MCP client

The server speaks MCP over stdio. Run node dist/index.js and point your client at it.

Try it

What's Apple trading at?

Compare BTC and ETH over the last 24 hours.

Show me Microsoft's revenue for the last 5 years from their filings.

What 8-Ks has Tesla filed recently?

Which companies mention "quantum computing" in their 10-Ks?

What's India's GDP growth been over the past decade?

Convert 5000 USD to JPY.

Are Apple insiders actually selling, or is that just vesting?

Data sources

SourceUsed forKey required
Yahoo FinanceEquities, ETFs, indices, exotic FXNo
CoinGeckoCryptocurrencyNo
SEC EDGARFilings, XBRL financials, Form 4 insider tradesNo (User-Agent required)
Frankfurter / ECBFX reference ratesNo
World BankMacroeconomic indicatorsNo

Configuration

Env varRequiredPurpose
SEC_USER_AGENTFor SEC toolsEDGAR requires a User-Agent with a real name and email on every request, and returns 403 without one. Format: "Your Name [email protected]".

[!IMPORTANT] MCP clients do not pass your shell environment to the server. Set SEC_USER_AGENT in the client config shown above, not in .zshrc.

Development

bash
npm run dev      # tsc --watchnpm test         # 66 offline tests, stubbed fetch + real EDGAR fixtures, no networknpm run smoke    # drives all 11 tools against the live APIs

Notes and limitations

  • Yahoo rate-limits by IP, and it cares what you claim to be. Sending a spoofed desktop-browser User-Agent gets you throttled hard — measured 0/8 successful requests with a Chrome UA versus 8/8 with an honest finance-mcp/0.1 one, alternating back to back. This server identifies itself honestly for that reason; don't "fix" it by pretending to be a browser. FX is served from the ECB instead, which has no rate limit.
  • Quotes may be delayed up to ~15 minutes and are not exchange-official.
  • SEC XBRL figures are as-filed. get_sec_financials labels each row by the period it covers, not the fiscal year of the filing it came from — EDGAR's own fy field describes the filing, so a 10-K restating a prior year would otherwise mislabel it.
  • search_sec_filings ranks by EDGAR's relevance, which favours companies with your query in their name.
  • World Bank data is annual and typically lags one to two years.
  • Insider data is only as complete as the window you read. get_insider_activity reads the most recent limit Form 4s and reports how many it skipped — a large company files hundreds a year, so a small limit shows a recent slice, not a full picture. Form 4s are due within two business days of the trade, so there is a short reporting lag.

Disclaimer

An informational data tool. Nothing it returns is investment advice, and the data carries no accuracy or availability guarantee. Verify anything you intend to act on against an official source.

License

MIT © Aditya Bisht

来源:README.md,提交 7466fbb

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v0.1.2最新Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分

其他 Finance 集成