AI agents & LLMs

Is there an MCP server for fund and ETF data?

Yes: https://fundfactsapi.com/api/mcp is a remote Model Context Protocol server with get_fund, search_funds, compare_funds, analyze_portfolio, fund_overlap and get_scpi tools, authenticated with a bearer API key. Configuration for every client.Updated 12 September 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 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 and get_scpi. Claude, ChatGPT, Cursor, Claude Code, Codex, VS Code and any MCP-capable framework can use it with a URL and one header.

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_... (free key at /signup)
CostOne request per ISIN answered, as for REST; search is free

The MCP server exposes six 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, Pro and above), fund_overlap (shared holdings between funds, Pro and above) and get_scpi (French SCPI data by name or ISIN). Authentication is the same bearer API key as the REST API, sent as an Authorization header.

Universal configuration

Most clients accept this JSON (Claude Desktop, Cursor, Windsurf, Cline and others):

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?

The server is public at the URL above; registry listings (mcp.so, Smithery, Glama, PulseMCP) point to the same endpoint. The URL and the bearer header are all a client needs.

Does it support OAuth?

Authentication is a bearer API key in a header, which every current MCP client supports for remote servers. Create a dedicated key for the connector in the dashboard so you can revoke it independently.

Do I need a credit card to try it?

No. The Free plan is 15 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.