AI agents & LLMs

Is there an MCP server for fund and ETF data?

Yes: https://fundfactsapi.com/api/mcp is a remote MCP server with seven read-only fund and SCPI tools and interactive cards in Claude and ChatGPT. Sign in with your account (OAuth) there, or send a bearer API key elsewhere. Setup for every client.Published September 12, 2026 · Updated October 13, 2026 · by FundFacts API

Short answer

Yes. FundFacts API runs a remote MCP server over Streamable HTTP at https://fundfactsapi.com/api/mcp. It authenticates with your FundFacts account (OAuth 2.1) or the same bearer API key as the REST API, and exposes get_fund (ISIN → full factsheet JSON), search_funds (name → ISINs, free), compare_funds, analyze_portfolio, fund_overlap, get_scpi and search_scpi. In ChatGPT and in Claude on the web and desktop, results render as interactive cards. Cursor, Codex, VS Code and any MCP-capable framework use it with a URL and one header; Claude Code signs in with /mcp or takes the header; claude.ai, Claude Desktop and ChatGPT sign in with the account.

The MCP server guide is the complete reference: every tool with its inputs and cost, the cards, setup for each client, billing, privacy and troubleshooting. In short:

The server

URLhttps://fundfactsapi.com/api/mcp
TransportStreamable HTTP (stdio clients: npx -y mcp-remote https://fundfactsapi.com/api/mcp --header "Authorization: Bearer ffk_...")
AuthAuthorization: Bearer ffk_... header (free key at /signup); connectors without a header field (claude.ai, Claude Desktop, ChatGPT) sign in with the FundFacts account (OAuth 2.1, PKCE)
CostOne request per fund found, as for REST, on every plan including Free; searches and the example fund are free
CardsInteractive cards (MCP Apps) in ChatGPT and in Claude on the web and desktop; text in Claude Code

The MCP server exposes seven tools, each counted like the REST endpoint it wraps: get_fund (ISIN → the full factsheet payload), search_funds (name → ISINs, free), compare_funds (side-by-side table for several ISINs), analyze_portfolio (weighted look-through of a list of positions, Starter and above), fund_overlap (shared holdings between funds, Starter and above), get_scpi (French SCPI data by name or ISIN) and search_scpi (SCPI name → matches, free), plus a tour prompt that explains the service on the example fund IE00B4L5Y983, which is not counted. Every tool only reads data. Authentication is either your FundFacts account (OAuth 2.1 with PKCE, the sign-in the claude.ai, Claude Desktop and ChatGPT connectors run) or the same bearer API key as the REST API, sent as an Authorization header by editors, CLIs and frameworks. The MCP server guide has the full tool reference, setup for every client and troubleshooting.

Universal configuration

Most code editors and agent frameworks accept this JSON (Cursor, Claude Code, Cline and others; Windsurf names the key serverUrl). Claude Desktop and claude.ai use the Connectors screen instead (Customize → Connectors), with the plain URL https://fundfactsapi.com/api/mcp and an account sign-in. The connector signs in with your FundFacts account (OAuth 2.1, PKCE): a consent screen opens in the browser, the connection then counts against the same plan and quota as an API key, and it appears in the dashboard, where you can disconnect it at any time. In ChatGPT and in Claude on the web and desktop, tool results also render as cards (fund, comparison, portfolio look-through, overlap, SCPI) next to the answer. No API key goes into the URL; for code and CLIs the Authorization header stays the recommended form.

json
{
"mcpServers": {
"fundfacts": {
"url": "https://fundfactsapi.com/api/mcp",
"headers": { "Authorization": "Bearer ffk_..." }
}
}
}

Client-specific steps: ChatGPT, Claude, Claude Code, Cursor, Codex, VS Code / Copilot, LangChain, OpenAI Agents SDK, Vercel AI SDK, n8n.

What a tool call returns

get_fund returns the same envelope as GET /funds/{isin}: name, cached, expiresAt and a data object with key facts, fees, the 1–7 risk indicator, a rule-based profile, holdings, sector, country and asset breakdowns, calendar and annualised returns, a monthly series, risk statistics, SFDR article, PRIIPs costs and dataAsOf. compare_funds flattens several payloads into one table so the model can answer "which is cheaper / more concentrated / more US-heavy" without arithmetic on its side.

Why an MCP server rather than scraping in the agent

Agents that browse fund-house sites hit cookie walls, PDFs and per-issuer layouts, and they burn tokens on parsing. The MCP server returns one normalised JSON shape for every fund house, with a date, and the companion kit gives coding agents the same reference for writing code against it.

Paid plans include an AI companion kit generated from the live field reference: an AGENTS.md with every endpoint, field, rule and a reference client; a Cursor rule; a Claude Code skill; the OpenAPI spec and TypeScript types, with your key baked in or read from an environment variable. Download it from the dashboard; the public edition without a key is at /llms-full.txt.

Verify it yourself

The demo endpoint returns the live payload for a fund that is already in the store, without a key. Everything on this page can be checked against it.
bash
curl -s https://fundfactsapi.com/api/v1/demo/funds/IE00B4L5Y983 | jq '{name, asOf: .data.dataAsOf, ter: .data.headlineMetrics.ter, risk: .data.riskRating, top: .data.topHoldings[:3]}'

Frequently asked questions

Is it listed in MCP registries?

Not yet. The server is public at the URL above, and the URL plus the bearer header (or the account sign-in for claude.ai, Claude Desktop and ChatGPT) is all a client needs.

Does it support OAuth?

Yes: claude.ai, Claude Desktop and ChatGPT connectors sign in with your FundFacts account (OAuth 2.1 with PKCE and dynamic client registration); editors, CLIs and frameworks send Authorization: Bearer ffk_... instead. OAuth tokens only work on the MCP server, never on the REST API, and each connection is listed in the dashboard, where it can be disconnected.

Do I need a credit card to try it?

No. The Free plan is 5 lookups per month with no card; sign up with an e-mail address or Google and the key is shown in the dashboard.

Try it on your own ISINs

One request returns key facts, holdings, risk and performance as JSON. Free plan, no card.