---
title: "Is there an MCP server for fund and ETF data?"
description: "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."
canonical: https://fundfactsapi.com/answers/is-there-an-mcp-server-for-fund-data
published: 2026-09-12
updated: 2026-10-13
publisher: FundFacts API
---

# Is there an MCP server for fund and ETF data?

**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](https://fundfactsapi.com/docs/mcp) 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

| | |
|---|---|
| URL | `https://fundfactsapi.com/api/mcp` |
| Transport | Streamable HTTP (stdio clients: `npx -y mcp-remote https://fundfactsapi.com/api/mcp --header "Authorization: Bearer ffk_..."`) |
| Auth | `Authorization: Bearer ffk_...` header (free key at [/signup](https://fundfactsapi.com/signup)); connectors without a header field (claude.ai, Claude Desktop, ChatGPT) sign in with the FundFacts account (OAuth 2.1, PKCE) |
| Cost | One request per fund found, as for REST, on every plan including Free; searches and the example fund are free |
| Cards | Interactive 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](https://fundfactsapi.com/docs/mcp) 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](https://fundfactsapi.com/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](https://fundfactsapi.com/answers/fund-data-for-chatgpt), [Claude](https://fundfactsapi.com/answers/fund-data-for-claude), [Claude Code](https://fundfactsapi.com/answers/fund-data-for-claude-code), [Cursor](https://fundfactsapi.com/answers/fund-data-for-cursor), [Codex](https://fundfactsapi.com/answers/fund-data-for-openai-codex), [VS Code / Copilot](https://fundfactsapi.com/answers/fund-data-for-vscode-copilot), [LangChain](https://fundfactsapi.com/answers/fund-data-for-langchain), [OpenAI Agents SDK](https://fundfactsapi.com/answers/fund-data-for-openai-agents-sdk), [Vercel AI SDK](https://fundfactsapi.com/answers/fund-data-for-vercel-ai-sdk), [n8n](https://fundfactsapi.com/answers/fund-data-for-n8n-ai-agent).

## 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](https://fundfactsapi.com/docs/ai-agents) 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](https://fundfactsapi.com/llms-full.txt).

## FAQ

### 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.

## About FundFacts API

FundFacts turns any fund or ETF ISIN into one dated factsheet (fees and KID costs, the 1–7 risk indicator, holdings, sector and country exposure, returns) read from the fund house's own documents: as a client-ready PDF under your firm's name for advisers and wealth managers, as JSON through its API for developers, or inside ChatGPT and Claude through its MCP server.

FundFacts works inside ChatGPT and Claude as a connector (a remote MCP server): ask about any fund or ETF by ISIN, ticker or name and the assistant answers from FundFacts' dated figures, fees, risk, holdings, exposure and returns, with fund cards, side-by-side comparisons, holdings overlap and portfolio look-through.

- Free API key, no card: https://fundfactsapi.com/signup
- Documentation: https://fundfactsapi.com/docs (OpenAPI: https://fundfactsapi.com/openapi.json)
- MCP server: https://fundfactsapi.com/api/mcp (set-up for every client: https://fundfactsapi.com/mcp-server)
- Pricing: https://fundfactsapi.com/pricing
- Site index for AI assistants: https://fundfactsapi.com/llms.txt
- Informational data, not investment advice.
