What is the FundFacts MCP server?
The FundFacts MCP server puts fund, ETF and SCPI data inside Claude and ChatGPT: seven read-only tools, interactive cards, a guided tour, every plan including Free. What it does and how to connect it.Published October 1, 2026 · by FundFacts APIShort answer
It is a remote MCP server at https://fundfactsapi.com/api/mcp that puts fund data inside Claude and ChatGPT. Once connected, the assistant can look up any fund or ETF by ISIN or name, compare funds, look through a portfolio, measure holdings overlap and read French SCPIs, with the figures the fund houses publish and their as-of date. Results render as interactive cards in ChatGPT and in Claude on the web and desktop. It works on every FundFacts plan, Free included, and each fund found counts as one request, like the REST API.
What it does
The Model Context Protocol (MCP) lets an AI app call tools on a server. FundFacts runs one: connect it once and your assistant answers fund questions from current, dated figures instead of from memory. Seven tools, all read-only:
| Tool | What you get | Requests |
|---|---|---|
get_fund | The full factsheet of one fund or ETF: fees and KID costs, the 1–7 risk indicator, holdings, sector and country exposure, returns, risk statistics, dataAsOf | 1 (the example fund IE00B4L5Y983 is free) |
search_funds | ISINs from a fund name, issuer or ISIN prefix | free |
compare_funds | Several funds side by side: TER, risk, size, 1 / 3 / 5-year returns, volatility, drawdown, concentration | 1 per ISIN |
analyze_portfolio | What a portfolio of funds really holds: blended fee, exposures, combined top holdings | 1 per position |
fund_overlap | How much two or more funds hold in common, and which positions | 1 per ISIN |
get_scpi | A French SCPI: prices, distribution rate by year, occupancy, portfolio, documents | 1 |
search_scpi | SCPI slugs from a name or management company | free |
Portfolio look-through and holdings overlap are not included in every plan: Requests & rate limits and Pricing list which. The data is informational, not investment advice.
What it looks like
In ChatGPT and in Claude on the web and desktop, each result renders as an interactive card next to the answer: a fund card, a comparison table, a portfolio look-through, a holdings overlap or an SCPI card. Claude Code, a terminal, shows the same figures as text. New users can ask "what can FundFacts do?" or pick the tour prompt: the assistant explains the service and shows a live answer on the example fund IE00B4L5Y983, which is not counted.
Connect it in a minute
- Claude (web, desktop, Cowork): Customize → Connectors → Add custom connector, URL
https://fundfactsapi.com/api/mcp, Connect, sign in with your FundFacts account and approve. Team and Enterprise: an Owner adds it under Organization settings → Connectors. The Free Claude plan allows one custom connector. Step by step. - ChatGPT (Plus, Pro, Business, Enterprise, Edu; web): Settings → Security and login → Developer mode on, then Plugins (chatgpt.com/plugins) → +, the same URL, Authentication OAuth, Create, sign in. Step by step.
- Claude Code:
claude mcp add --transport http fundfacts https://fundfactsapi.com/api/mcp, then/mcpto sign in; or the plugin,/plugin marketplace add fundfactsapi/fundfacts-pluginthen/plugin install fundfacts@fundfacts. Step by step. - Cursor, VS Code, Windsurf, Codex and scripts: the URL plus an
Authorization: Bearer ffk_...header with an API key from the dashboard.
Every client, with code blocks and troubleshooting, is in the MCP server guide.
Your account stays in control
Apps that sign in with your account appear in the dashboard under Connected apps, with their last use and requests this month; Disconnect cuts one off at once. OAuth tokens only work on the MCP server, never on the REST API. What the AI app receives is described in the privacy policy.
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.bashcurl -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]}'