AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Official remote MCP server for FinancialFilings: regulatory filings, XBRL/ESEF financials and company data from securities regulators worldwide, inside Claude, ChatGPT, Cursor & co.
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗English | 简体中文
Official Model Context Protocol (MCP) server for the FinancialFilings API. Direct access from Claude (and any MCP-compatible client) to regulatory filings, financial data, and corporate information from listed companies worldwide. 17 curated tools by default (set
MCP_FULL_SURFACE=1for the full 55-tool surface). Free for any FinancialFilings account. Sourced from official regulators.
If you're an analyst, researcher, or anyone who wants to ask Claude about public-company filings:
https://mcp.financialfilings.com/mcpclaude mcp add --transport http financialreports https://mcp.financialfilings.com/mcpFull setup walkthrough with screenshots: financialfilings.com/integrations/claude/.
This is a remote MCP server — Streamable HTTP with OAuth (PKCE + Dynamic Client Registration). There is no API key to copy and no secret to store: connecting opens a browser sign-in with your FinancialFilings account.
Endpoint: https://mcp.financialfilings.com/mcp
Find your client below. If it isn't listed, use the Generic block at the end — the endpoint and OAuth flow are identical everywhere; only the config file differs.
Settings → Connectors → Add custom connector → URL: https://mcp.financialfilings.com/mcp. Sign in when prompted.
claude mcp add --transport http financialreports https://mcp.financialfilings.com/mcp
Run /mcp in-session to complete the browser sign-in.
Or install the plugin, which adds the same server plus the financial-filings-research skill (tool cheat-sheet and research workflows):
/plugin install financialfilings --marketplace financial-reports/financial-reports-mcp-server
On Claude Code before 2.1.275, add the marketplace first: /plugin marketplace add financial-reports/financial-reports-mcp-server, then /plugin install financialfilings@financialfilings. Either way, run /mcp once to sign in.
Codex uses TOML. Add to ~/.codex/config.toml (or a project .codex/config.toml):
[mcp_servers.financialreports]
url = "https://mcp.financialfilings.com/mcp"
Then authenticate — Codex runs the OAuth browser flow for servers that support it:
codex mcp login financialreports
One-click install from Cursor Directory, or add it by hand to ~/.cursor/mcp.json (global) or .cursor/mcp.json (per project):
{
"mcpServers": {
"financialfilings": { "url": "https://mcp.financialfilings.com/mcp" }
}
}
OAuth runs in the browser on first use.
Project .kilocode/mcp.json (or the global MCP settings file):
{
"mcpServers": {
"financialreports": {
"type": "remote",
"url": "https://mcp.financialfilings.com/mcp"
}
}
}
opencode.json:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"financialreports": {
"type": "remote",
"url": "https://mcp.financialfilings.com/mcp",
"enabled": true
}
}
}
~/.gemini/settings.json:
{
"mcpServers": {
"financialreports": { "httpUrl": "https://mcp.financialfilings.com/mcp" }
}
}
mcp_servers in your Hermes config (YAML):
mcp_servers:
financialreports:
url: "https://mcp.financialfilings.com/mcp"
auth: oauth
Most MCP-aware harnesses accept a mcpServers object. Point it at the endpoint over Streamable HTTP:
{
"mcpServers": {
"financialreports": {
"type": "streamable-http",
"url": "https://mcp.financialfilings.com/mcp"
}
}
}
Clients with native remote-MCP OAuth (Claude, Cursor, Windsurf, VS Code, opencode, Codex via codex mcp login) run the sign-in in a browser automatically. For OpenClaw and other MCP-aware harnesses, use this block with the connector URL and complete OAuth when prompted — see your client's own MCP configuration docs for the exact file location.
If signing in sends you to a page titled Client Not Registered — "The client ID … was not found in the server's client registry" — your client is presenting a registration this server no longer has.
Remove the connector and add it again. That is the only thing that resolves it, and it takes a few seconds:
| Client | What to do |
|---|---|
| ChatGPT / OpenAI | Settings → Connectors → remove FinancialFilings (listed as FinancialReports if you connected before the rename) → add it back with https://mcp.financialfilings.com/mcp and sign in again. |
| Claude.ai / Claude Desktop | Settings → Connectors → remove FinancialFilings (listed as FinancialReports if you connected before the rename) → re-add and sign in again. |
| Claude Code / Codex / Cursor / opencode | Remove and re-add the server (e.g. claude mcp remove financialreports, then re-add), or run the client's login command again (codex mcp login financialreports). |
Two things the error page itself doesn't tell you:
If you were affected on or after 14 July 2026: a cache failover dropped stored client registrations. Sign-ins have worked normally since — only connectors added before that date need the remove-and-re-add above.
17 LLM-callable tools by default — the curated surface analysts actually use:
| Domain | Tools | Use cases |
|---|---|---|
| Companies | 5 | Search by name/ticker/ISIN, retrieve full company profiles, get normalized financials, predict next annual report, batch-resolve a list of identifiers to company IDs |
| Filings | 4 | List, retrieve, fetch markdown content (capped at 150K chars), keyword-search inside a single filing |
| ISINs | 2 | Lookup by ISIN, list dual-listings |
| Reference taxonomy | 2 | Filing categories and filing types |
| Account | 1 | What your API and MCP usage has cost this cycle, spend caps and free credits left (free, never billed) |
| Guides | 3 | Filing-type taxonomy, ISIC industry classification, and markdown-fetch strategy — callable references for tool-only clients that can't read MCP resources |
Set MCP_FULL_SURFACE=1 to restore the full 55-tool surface: the ISIC section/division/group/class hierarchy, the rest of the reference data (countries, languages, sources, line-item definitions, filing history), per-user watchlists, webhook subscriptions, the company-merge audit feed, per-exchange security listings, the agent account-onboarding endpoints (sign-up, key claim, key rotation, checkout link, owner confirmation, status), the raw filings_markdown_search_retrieve endpoint behind filings_markdown_search, and filings_document_retrieve (returns a file, not JSON).
The shipped surface is generated from a committed, reviewed snapshot of the FinancialFilings OpenAPI schema (scripts/openapi.snapshot.json, pinned via FR_PIN_SCHEMA=1 in CI and the Docker build), so it's deterministic and never drifts silently on a rebuild.
The repository ships an Agent Skill — financial-filings-research — that teaches Claude how to compose these tools into the workflows analysts actually run: company lookup, filing summarization, multi-company financial comparison, ISIC industry screening, and filings monitoring. It activates automatically when the user mentions a company name, ticker, ISIN, filing type, or financial metric.
┌──────────────────┐ OAuth (PKCE + DCR) ┌──────────────────┐
│ Claude / MCP │ ───────────────────────► │ AWS Cognito │
│ client │ │ (user pool) │
└────────┬─────────┘ └────────┬─────────┘
│ Streamable HTTP /mcp │
│ + bearer token │
▼ │
┌──────────────────┐ verify subscription tier │
│ This server │ ───────────────────────────────────► │
│ (FastAPI + │ ▼
│ FastMCP) │ proxy bearer token ┌──────────────────┐
│ │ ─────────────────────────► │ api. │
│ 17 tools │ │ financial- │
│ generated from │ │ reports.eu │
│ OpenAPI schema │ │ (first-party) │
└──────────────────┘ └──────────────────┘
Key design decisions:
scripts/generate_mcp_tools.py reads the OpenAPI schema — pinned to a committed snapshot via FR_PIN_SCHEMA=1 in CI and the Docker build — and emits src/financial_reports_mcp.py. The default surface is curated to a focused 17-tool set; MCP_FULL_SURFACE=1 emits the full surface. Note that _PRUNED_EXCLUDE in the generator is a denylist, so a new upstream endpoint joins the curated surface unless the snapshot-refresh PR explicitly excludes it.sub → tier mappings to avoid hammering the FR API on every tool call./favicon.ico, /icon.png, /icon-{32,192,512}.png are served from this origin (proxied + cached from CDN) so connector UIs and the /consent page render without cross-origin CSP friction.Compliant with the MCP 2025-11-25 specification:
POST /mcp with MCP-Protocol-Version echo, 400 on unsupported versions/.well-known/oauth-protected-resource and /.well-known/oauth-protected-resource/mcptitle plus readOnlyHint or destructiveHintoutputSchema — six structured-content tools (companies_list, companies_retrieve, companies_financials_retrieve, filings_list, filings_retrieve, isins_list)WWW-Authenticate header for unauthenticated requestsinitialize responseCI verifies all of the above on every PR.
The list below is regenerated by scripts/generate_mcp_tools.py on every build. Do not hand-edit between the markers.
usage_retrieve — Get API Usage and Spendcompanies_financials_retrieve — Retrieve Company Financialscompanies_list — List Companiescompanies_next_annual_report_retrieve — Predict Next Annual Reportcompanies_resolve_create — Resolve Companies by Identifier (Batch)companies_retrieve — Retrieve Company Detailsfiling_categories_list — List Filing Categoriesfiling_types_list — List Filing Typesfilings_list — List Filingsfilings_markdown_retrieve — Retrieve Filing Markdownfilings_retrieve — Retrieve Filing Detailsisins_list — List ISINsisins_retrieve — Retrieve ISINOnce connected, try:
Self-hosting requires standing up your own AWS Cognito user pool and is primarily useful for forking + adapting to a different upstream API. For the FinancialFilings API specifically, the hosted server at mcp.financialfilings.com is the supported path.
Detailed self-hosting docs (Docker, Cognito setup, env vars, CDN/icon configuration): docs/SELF-HOSTING.md.
One-shot bootstrap (venv → deps → env check → generate → run):
cp .env.example .env # fill in Cognito values first; see docs/SELF-HOSTING.md
make dev # creates .venv, installs, validates env, regenerates, serves on :8000
# MCP endpoint: http://localhost:8000/mcp
Or step by step:
# 1. Setup
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt -r requirements-test.txt
# 2. Configure
cp .env.example .env # then fill in Cognito values; see docs/SELF-HOSTING.md
# 3. Generate the MCP module from the OpenAPI schema
python scripts/generate_mcp_tools.py
# 4. Run tests
pytest
# 5. Run locally
python -m uvicorn src.financial_reports_mcp:app --host 0.0.0.0 --port 8000
# MCP endpoint: http://localhost:8000/mcp
CI runs the full unit suite plus a Docker-Compose end-to-end test (with Redis) on every PR. See .github/workflows/ci.yml.
For iterating on the generator, tools, or prompts against a real backend without going through the Cognito OAuth dance every restart, the server supports a dev-only DEV_MODE_API_KEY env var. When set, JWT validation is skipped on the existing /mcp endpoint (both the subscription_required and _authorize_or_raise paths) and the key is forwarded as X-API-Key to API_BASE_URL.
This is a maintainer convenience, not a production auth path. The module refuses to import if MCP_BASE_URL contains a production hostname (mcp.financialfilings.com).
.env:
DEV_MODE_API_KEY=fr_pat_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
MCP_BASE_URL=http://localhost:8000
make regen
python -m uvicorn src.financial_reports_mcp:app --host 0.0.0.0 --port 8000 --reload
claude mcp add --transport http financialfilings-local http://localhost:8000/mcp
Add it per developer like this rather than to the repo's .mcp.json: that file lists the production server only, because directories that scan this repo (e.g. Cursor Directory) advertise every entry in it as a public install.Production headless / API-key auth (parallel /mcp/apikey endpoint with per-request X-API-Key) is tracked in #28 and is a separate feature from this dev-mode shortcut.
# Regenerate tools after the OpenAPI schema changes
python scripts/generate_mcp_tools.py
# Run only fast unit tests
pytest tests/test_*.py
# Run end-to-end tests with Redis (requires Docker)
make e2e
This server is benchmarked by financial-reports/mcp-evals (private). Cross-model scorecards (task success, tool-selection accuracy, path consistency, tokens/turns/latency) live there, not here. Before merging changes to tool descriptions, Prompts, or the generator, run the harness against either prod or a local dev MCP and compare the scorecard.
What lives in this repo: deterministic prompt-registration tests at tests/eval/ — fast, no API keys, run on every PR. See tests/eval/README.md for the cross-repo workflow.
This server handles OAuth flows and bearer tokens. Found a vulnerability? Please don't open a public issue. See SECURITY.md for the responsible-disclosure process.
Server-side guarantees:
default-src 'none', only same-origin assets allowed).Contributions welcome. See CONTRIBUTING.md for development setup, the regenerate→test→PR workflow, and what kinds of changes are welcome (tests, docs, generator improvements, hand-tuned tool descriptions in scripts/generate_mcp_tools.py) versus what gets rejected (hand-edited src/financial_reports_mcp.py — it's auto-generated and overwritten on every build).
https://mcp.financialfilings.com/mcpMIT — © FINANCIALREPORTS PTE. LTD.
Special thanks to @itisaevalex for the original community-built MCP server, which served as the proof-of-concept that motivated this official version.
Built on FastMCP, FastAPI, and the Model Context Protocol.