feature

Your Portfolio, Queryable: Connect Invormed to Claude via MCP

Invormed's MCP server gives Claude read access to your portfolio. Ask natural-language questions about allocation, trades, and budget — in 2 minutes.

By Invormed TeamUpdated 8

Your Portfolio, Queryable: Connect Invormed to Claude via MCP

TL;DR

  • Invormed ships a read-only MCP server that gives Claude access to your live portfolio data — holdings, allocations, trade history, and budget utilisation.
  • You can ask Claude questions like "which holding is furthest from its target allocation?" or "how is my ISA split by theme?" and get structured, data-backed answers rather than generic advice.
  • Setup takes under two minutes: get an API key from your Invormed settings page, run one command (or paste one JSON block), and restart Claude.

What is MCP, briefly?

Model Context Protocol (MCP) is an open standard introduced by Anthropic in late 2024 for connecting AI models to external tools and data sources. Think of it as a secure, structured pipe: an MCP server exposes a set of typed tools; an MCP client (Claude, in this case) calls those tools during a conversation to fetch real data rather than relying on its training knowledge.

Before MCP, connecting an AI assistant to live data required custom integrations or copy-pasting numbers into a chat window. MCP standardises that connection at the protocol level, which means any MCP-compatible client — Claude Desktop, Claude Code, claude.ai, Cursor — can use the same server without additional work.

The full specification is at modelcontextprotocol.io. Anthropic's announcement is at anthropic.com/news/model-context-protocol.

For investors, the practical implication is simple: your portfolio stops being a static spreadsheet and becomes something you can have a conversation with.


What Invormed's MCP server exposes

The server is entirely read-only. Claude can retrieve data but cannot create, modify, or delete anything in your portfolio. Seven tools are available:

ToolWhat it does
list_portfoliosReturns all your portfolios with total value, holding count, account count, and currency
get_portfolio_summaryDetailed summary: total value, top 10 holdings by value, and section-level allocation breakdown
get_holdings_breakdownGroups all holdings by section, account, or theme — with value and percentage for each group
get_budget_remainingShows budget utilisation across sections, accounts, and themes — how much of each limit you have used and what remains
get_holding_detailFull detail on a single holding: price, quantity, value, target allocation, variance from target, and tranche history
search_holdingsCase-insensitive search by name or ticker to locate a holding and retrieve its ID
get_holding_tradesChronological trade history (buys and sells) for a specific holding, with date, price, quantity, and transaction value

These seven tools are the complete surface area of the server. Nothing is inferred or approximated — every figure comes directly from your Firestore-backed portfolio data.

The server architecture is stateless streamable HTTP. Each request is authenticated via an API key (SHA-256 hashed before storage) scoped strictly to your user account. The raw key is never persisted.


What you can actually ask it

The following examples use illustrative but realistic figures. Claude orchestrates multiple tool calls automatically to answer compound questions.

1. "What's in my portfolio?"

Claude calls list_portfolios then get_portfolio_summary.

"Your Main Portfolio is worth £52,340 across 19 active holdings in 3 accounts. Top holding: Vanguard FTSE All-World (VWRP.L) at £9,821 — 18.8% of portfolio. Sections: Global Equity 52.3%, UK Equity 18.1%, Bonds 17.4%, Cash 12.2%."

2. "How am I split by tax wrapper?"

Claude calls get_holdings_breakdown with groupBy: "account".

"Stocks and Shares ISA (Trading 212): £31,400 — 60.0%. SIPP (Vanguard): £14,200 — 27.1%. GIA (Interactive Brokers): £6,740 — 12.9%."

3. "Which holding is most off its target allocation?"

Claude calls get_portfolio_summary to list holdings, then get_holding_detail on candidates with targets set.

"iShares Core MSCI EM IMI (EIMI.L) is 4.2 percentage points below its 10% target — currently at 5.8% (£3,036), target is £5,234. That's a £2,198 gap. The next largest underweight is Vanguard UK Gilts ETF at −2.1pp."

4. "How much budget do I have left in my ISA this tax year?"

Claude calls get_budget_remaining.

"ISA section budget: £20,000 limit, £14,340 used (71.7%), £5,660 remaining. Note: budget limits are what you've configured in Invormed — they reflect your personal rules, not HMRC allowances directly. Always confirm against your broker's records."

5. "Walk me through my Vanguard All-World position"

Claude calls search_holdings for "VWRP", then get_holding_detail and get_holding_trades.

"VWRP.L — Vanguard FTSE All-World UCITS ETF Acc. Current quantity: 112 units at £87.69 live price (manual price: £86.40). Value: £9,821. Portfolio weight: 18.8%, target 20% — 1.2pp underweight (£628 below target). Average cost: £81.22. 6 trades on record: 5 buys between Jan 2024 and Feb 2026, 1 sell in August 2024."

6. "What themes am I most concentrated in?"

Claude calls get_holdings_breakdown with groupBy: "theme".

"Growth: 43.1% (£22,560). Income: 24.8% (£12,990). Defensive: 18.7% (£9,790). Speculative: 8.4% (£4,400). Uncategorised: 5.0% (£2,600)."

7. "Have I made any sells this year?"

Claude calls list_portfolios, then iterates get_holding_trades for holdings where sells might exist, filtering by date.

"I found 2 sell transactions in 2026: EIMI.L on 14 January (50 units at £6.12, £306 total) and CSH2.L on 3 March (200 units at £100.42, £20,084 total). No other sells recorded across your 19 active holdings."

8. "Across my sections, which is most over its percentage budget?"

Claude calls get_budget_remaining and interprets the percentRemaining fields.

"Global Equity is the most over-allocated relative to its section percentage limit: currently at 52.3% against a 50% limit — 2.3pp over. All other sections are within their configured limits."


How to connect it to Claude

What you'll need first

An API key from your Invormed settings. Go to invormed.com/settings → MCP Access, generate a key (it starts with inv_), and keep it to hand. Keys can be revoked from the same page at any time.


Option A: claude.ai (remote MCP, browser)

  1. Open claude.ai and go to Settings → Integrations.
  2. Click Add MCP Server.
  3. Choose URL-based server.
  4. Enter the server URL: https://invormed.com/api/mcp?key=inv_YOUR_KEY_HERE
  5. Give it a name — "Invormed" works well.
  6. Save and start a new conversation. You can verify the connection by asking: "List my portfolios."

No OAuth flow is required — the API key in the URL handles authentication. If you regenerate your key in Invormed settings, update the URL in Claude's integration panel.


Option B: Claude Code (project or global)

The fastest path is the one-line setup command:

npx invormed-mcp inv_YOUR_KEY_HERE

This writes the MCP server config to .mcp.json in your current project directory. To configure it globally for all Claude Code projects:

npx invormed-mcp inv_YOUR_KEY_HERE --global

To remove it later:

npx invormed-mcp --remove

Restart Claude Code after running either command.

Manual setup (Claude Code). If you prefer to edit the config directly, add the following to .mcp.json in your project root, or to ~/.claude.json for global access:


Option C: Claude Desktop (macOS / Windows)

Add to your Claude Desktop configuration file.

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Restart Claude Desktop after saving.


Option D: Cursor

Add to .cursor/mcp.json in your project root:


Privacy and data scope

A few things worth stating clearly.

Read-only, always. All seven MCP tools are read operations. There is no tool to add a holding, log a trade, or change a setting. If that changes in future, it will be an explicit opt-in.

Scoped to your account. Your API key is tied to your user account. The server will only return data from portfolios you own. There is no way to query another user's data through the MCP endpoint.

Key storage. Your API key is SHA-256 hashed before it is stored in Firestore. The raw key is never persisted on Invormed's servers — only you have it. If you suspect a key has been compromised, revoke it immediately from Settings → MCP Access and generate a new one.

No key in source control. The API key appears in the MCP config URL. Treat it as you would any API credential. Do not commit .mcp.json or ~/.claude.json to a public repository. Add .mcp.json to your .gitignore if you are working in a shared project.

Data in transit. All requests to invormed.com/api/mcp are over HTTPS. The connection between Claude and the MCP server uses Streamable HTTP transport.

What the server cannot see. Brokerage credentials, bank account details, and transaction passwords are not stored in Invormed and therefore cannot be accessed via MCP. The server returns only the data you have entered into Invormed: holdings, quantities, prices, trades, and the organisational structure (sections, themes, accounts) you have configured.

Note on financial advice. Invormed is not authorised or regulated by the FCA. Nothing the MCP server returns, and nothing Claude says in response to it, constitutes financial advice. The data reflects what you have recorded — always verify against your broker and consult a qualified adviser for regulated advice.


What's next

The current MCP server covers read access to portfolio data. A few directions we are actively exploring:

Richer holding metadata. Surfacing cost basis, unrealised gain/loss, and day-change figures through the existing get_holding_detail tool — the underlying data fields already exist in the portfolio model.

Write tools (considered, not committed). The ability to log a trade or update a price via natural language is technically feasible. We are thinking carefully about the guardrails required before shipping write access through an AI interface. If we build it, it will be an explicit opt-in feature with confirmation steps.

Research layer integration. The long-term product direction — detailed in our internal roadmap — is towards a unified interface where Claude can access your portfolio data and your personal investment research simultaneously. MCP is the foundation for that.

Smithery marketplace. Invormed is already listed on the Smithery MCP marketplace, which means users of any Smithery-compatible client can discover and add the server without manual configuration.

We do not publish forward-looking timelines, but the MCP server is under active development. Follow the changelog for updates.


FAQ

Do I need a paid Invormed plan to use the MCP server? MCP access requires an account at invormed.com. Check the current pricing page for plan-level details — MCP is available to users who have set up an API key under Settings → MCP Access.

Is the MCP server the same as the AI chat inside Invormed? No. The in-app chat uses Invormed's own AI interface. The MCP server is a separate integration that lets external MCP clients — Claude, Cursor, and others — query your portfolio data directly. You can use both independently.

Can I connect multiple portfolio trackers to Claude at once? Yes. Claude supports multiple simultaneous MCP servers. If you also use an MCP server for another tool, they can coexist in the same config file under different keys.

What happens if my portfolio data changes after I start a conversation? The MCP server fetches live data on each tool call. If you add a holding in Invormed and then ask Claude about it in the same conversation, Claude will pick it up — there is no session-level caching.

Can Claude make trades on my behalf? No. All seven tools are read-only. Claude can tell you what you own and how it is allocated, but it cannot interact with brokers or execute transactions. That is by design.

Is this available in Claude's free tier? Claude's MCP integration availability depends on Anthropic's current plan structure. As of writing, MCP server connections in claude.ai require a Pro or Team plan. Claude Code and Claude Desktop support MCP regardless of subscription tier. Check claude.ai/settings for the current state.

What if I have questions or find a bug in the MCP server? The server source is MIT-licensed and the repository is public. File issues there, or contact support via the Invormed settings page.

Does Invormed support Trading 212 or other UK brokers for data import? The MCP server is broker-agnostic — it reads the data you have recorded in Invormed, regardless of which broker you use. Manual entry and CSV import are the current routes for getting your holdings in. Native broker integrations are on the roadmap.



mcpclaudeaiportfolio-analysisanthropic

See inside your ETFs — try Invormed free

Aggregate your ISA, SIPP, and GIA. Look through every ETF. Understand what you actually own.

Get started free