wealthapi-mcp
OfficialClick on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@wealthapi-mcp How is my portfolio performing this year?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
wealthapi-mcp
A small Model Context Protocol (MCP) server that lets Claude (or any MCP-compatible assistant) answer everyday portfolio questions about your wealthAPI account:
"What did I spend the most money on last month?" "How is my portfolio performing this year?" "Show me my five biggest positions." "Which of my investments lost the most value?"
It runs locally on your machine. Your bearer token never leaves your computer.
What is an MCP server?
MCP is an open protocol that lets an AI assistant call tools you control. The assistant
runs in one process (e.g. Claude Desktop); the MCP server runs as a separate process you
launch. They talk to each other over stdio using JSON-RPC: the assistant writes a
tools/call message to the server's stdin, the server runs the tool and writes the
result back to its stdout. That's the whole protocol.
Note the distinction: this is an MCP server, not an MCP plugin. There is no such thing as an MCP plugin — plugins (e.g. Claude Code plugins) extend the assistant itself, while an MCP server is a standalone process the assistant connects to over the protocol. Any MCP-compatible client (Claude Desktop, Claude Code, others) can use this server.
Concretely, this repo is a Node script. When Claude Desktop starts it, the script registers its tools, waits for tool calls, and when one arrives, makes an HTTPS request to the wealthAPI REST API on your behalf and returns a text summary. No state, no database, no server to maintain.
Read more at https://modelcontextprotocol.io.
Related MCP server: t212-mcp
The tools
Auth is a wealthAPI API token (wapi_key_…) carrying the read scopes (accounts:read,
investments:read, transactions:read, profile:read). All tools are read-only.
Accounts & cash flow
Tool | Wraps | Answers |
|
| "What accounts do I have?" |
|
| "Show my cash balance history" |
|
| "What is my portfolio worth (today / over time)?" |
|
| "What did I spend most on last month?" |
|
| "What subscriptions / fixed costs do I have?" |
|
| "Show my buys / sells / dividends" |
|
| "Income vs spending per month" |
|
| "What's my savings rate?" |
Portfolio & performance
Tool | Wraps | Answers |
|
| "What do I own and what is it worth?" |
|
| "Best / worst performers" |
|
| "How did my portfolio do this year?" |
|
| "How diversified am I by region / sector / asset type?" |
|
| "How risky is my portfolio?" |
|
| "What did I realize this year?" (tax season) |
Dividends
Tool | Wraps | Answers |
|
| "How much dividend income did I get per year / month?" |
|
| "When are my next dividend payments?" |
|
| "What's my dividend yield?" |
Market data & profile
Tool | Wraps | Answers |
|
| "Find Apple / this ISIN" |
|
| "What's the current price?" |
|
| "Is this stock expensive?" (P/E, P/B, F-Score) |
|
| "Which account is this?" |
The server also registers prompts (monthly_review, savings_rate_check,
subscription_audit, fixed_costs_summary, financial_health_check) that chain these
tools into guided analyses.
Tool registration is gated by SUPPORTED_TOOLS/SUPPORTED_PROMPTS in src/index.ts —
remove a name there to disable it without deleting code.
Install
You need Node 20+ and pnpm.
git clone git@github.com:wealthAPI-eu/wealthapi-mcp.git
cd wealthapi-mcp
pnpm install
pnpm buildGet a personal bearer token from wealthAPI (your account → API settings).
Add the server to Claude Desktop's config
(~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"wealthapi": {
"command": "node",
"args": ["/absolute/path/to/wealthapi-mcp/build/index.js"],
"env": {
"BEARER_TOKEN": "paste-your-token-here"
}
}
}
}Restart Claude Desktop. The active tools will appear in the tools panel of any chat, and you can ask portfolio questions in plain English.
How to add a new tool
The canonical example lives in src/tools/accounts.ts — list_accounts is ~50 lines
and shows the whole pattern.
Create or open the relevant file under
src/tools/and write aregister*Tools(server, client)function that callsserver.registerTool(...). Each call takes a name, a{ description, inputSchema }object (Zod for the input schema), and an async handler that returns{ content: [{ type: "text", text }] }.Import and call your
register*Toolsfromsrc/index.ts.pnpm buildand restart Claude Desktop.
That's it. No code generation, no registration files, no boilerplate.
Layout
src/
index.ts Bootstrap: McpServer + StdioServerTransport + register*Tools(...)
config.ts Reads BEARER_TOKEN from env; API base URL is fixed to production
api/
client.ts fetch wrapper: GET/POST, query strings, retry on 5xx/429
types.ts TS interfaces for API response shapes
tools/
accounts.ts list_accounts, get_account_balances, get_portfolio_valuation
allocation.ts get_portfolio_allocation
cash-flow.ts get_cash_flow_summary, get_savings_rate, detect_recurring_transactions
dividends.ts get_dividend_history, get_dividend_calendar, get_portfolio_yield
investments.ts list_investments, get_gainers_and_losers
performance.ts get_portfolio_performance, get_realized_gains
risk.ts get_risk_metrics
securities.ts search_symbols, get_quotes, get_security_fundamentals
transactions.ts list_transactions, list_bookings
user.ts whoami
util/
logger.ts Pino → stderr (stdout is reserved for MCP)
format.ts formatCurrency, formatDate, formatTable
test/
api/
client.test.ts Vitest unit test for the query-string builder
tools/
*.test.ts Unit tests for the pure aggregation helpersRun tests
pnpm testAvailable Tools
21 toolsdetect_recurring_transactionsA
List transactions flagged as regular (salary, rent, subscriptions, standing orders). Grouped by counterpart and direction, with detected payment interval (in months) and average amount. Use this to answer 'what subscriptions do I have?' or 'what are my fixed costs?'.
Inputs: maxDate, minDate, perPage, accountId, +1 more.
get_account_balancesA
Get balance history for one or more cash accounts over a date range. Works only with cash accounts (type '02_cash'), not depots.
Inputs: id (required), to, from.
get_cash_flow_summaryA
Monthly income vs. spending for the user's cash accounts. Answers 'how much did I earn and spend?' over a period. Inflows are positive, outflows positive (spending), net = income − spending.
Inputs: from (required), to, accountId, excludeTransfers.
get_dividend_calendarA
Get this year's dividend calendar for current holdings: expected and received payouts with dates, amounts and yields. Use this for 'when are my next dividend payments?'.
Inputs: accountIds (required).
get_dividend_historyA
Get dividend income per year (gross and net), with a per-month breakdown for the current year. Use this for 'how much dividend income did I get in 2024?'.
Inputs: accountIds (required), cutoffDate.
get_gainers_and_losersA
Get the top gainers or losers — either by today's change or by total return since purchase. Use this for 'best/worst performers'.
Inputs: mode (required), max, accountId.
get_portfolio_allocationA
Break down the portfolio's market value by region, industry sector, or asset type. Use this for 'how diversified am I?' and 'what's my US exposure?'.
Inputs: dimension (required), accountIds.
get_portfolio_performanceA
Get TWROR (time-weighted rate of return) timeseries for the portfolio over a date range. Use this to answer 'how did my portfolio perform this year / last 5 years?'.
Inputs: startDate (required), accountIds (required), endDate, interval.
get_portfolio_valuationA
Get the current total value of one or more depots, and optionally its history when 'from' is given. Use this for 'what is my portfolio worth (today / over time)?'.
Inputs: accountIds (required), from, interval, includeCash.
get_portfolio_yieldA
Get the portfolio's dividend yield per year (on current value and on invested capital) plus the dividend CAGR. Use this for 'what's my dividend yield?'.
Inputs: accountIds (required), cagrYears, calculationType.
get_quotesA
Get current quotes (last price, daily change) for securities by security ID. Get the IDs from search_symbols first.
Inputs: securityIds (required), quoteProvider (required), preferredCurrency.
get_realized_gainsA
Get realized gains per year, split into trading, dividend, interest and other gains (gross and net, plus tax refunds). Use this for 'what did I realize this year?' and tax questions.
Inputs: accountIds (required).
get_risk_metricsA
Get annualized risk (volatility) and return metrics — for the whole portfolio, or per investment with breakdown=true. Use this for 'how risky is my portfolio?'.
Inputs: from, depotIds, interval, breakdown, +1 more.
get_savings_rateA
Compute the user's savings rate over a period: (income − spending) / income, expressed as a percentage. Uses cash flow analytics. Higher is better; negative means the user spent more than they earned.
Inputs: from (required), to, accountId, excludeTransfers.
get_security_fundamentalsA
Get master data and valuation fundamentals (P/E, P/B, P/S, F-Score) for a security by ISIN. Use this for 'tell me about this holding' or 'is this stock expensive?'.
Inputs: isin (required).
list_accountsA
List all of the user's accounts: depots (where investments live), cash accounts, insurance, etc. Start here when you need to know which accounts exist before drilling in.
Inputs: no named parameters.
list_bookingsA
List investment bookings: buys, sells, dividends, splits. Use this to see the trade history for a specific security or depot.
Inputs: isin, type, maxDate, minDate, +2 more.
list_investmentsA
List the user's investment holdings (stocks, funds, bonds, ETFs). Returns name, ISIN, type, lots, market value and gain/loss. Use this for 'what do I own?' and 'show me my biggest positions'.
Inputs: depotId, includeHistoric.
list_transactionsA
List cash transactions (deposits, withdrawals, fees, interest, transfers). Results are sorted by amount (largest absolute value first), so the top rows answer 'what did I spend most money on?'.
Inputs: type, maxDate, minDate, perPage, +1 more.
search_symbolsA
Search securities by name, ISIN or WKN. Returns the security ID and quote provider needed by get_quotes. Use this to resolve 'Apple' or an ISIN to a tradable security.
Inputs: types, search, isinOrWkn, maxPerAssetType.
whoamiA
Show which wealthAPI user this session is acting as (name, email, member since). Use this to ground yourself or when the user asks 'which account is this?'.
Inputs: no named parameters.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 21 tools
Each tool targets a distinct resource and metric, from account listing to valuation, dividends, and transactions. Even similar topics like dividends (history vs calendar) are clearly differentiated.
Tool names consistently use a verb_noun structure (list_, get_, detect_, search_) with the sole exception 'whoami'. This makes the toolset predictable and easy to navigate.
With 21 tools, the set is on the heavier side (16-25 range) but each tool serves a specific analytical purpose in the wealth management domain. It feels slightly over-scoped, but not excessive.
The toolset covers accounts, portfolio analysis, dividends, transactions, and security lookups without obvious dead ends. Read-only analytics is the clear domain, and the coverage is thorough for that purpose.
Maintenance
Related MCP Connectors
MCP server exposing the Backtest360 engine API as tools for AI agents.
Trading MCP server for AI agents, with live market data, account reads and controlled execution.
Research US-listed companies and funds with the StockPortfolio.pro MCP server. Tools cover SEC filing-grounded financials, filing timelines, company comparisons, watchlist screens, fund profiles, and cited filing questions. Filed figures include their fiscal period and EDGAR source URL; missing filing data is returned as null. Public tools work without authentication; optional API-key or OAuth access is supported. US-listed, USD-reporting companies only. Keyless access includes 3 free AI questions per rolling 30-day window. To get more now, choose the Dev plan ($19.99/month, 200 credits) at https://www.stockportfolio.pro/register?plan=dev, then follow https://www.stockportfolio.pro/docs/api-mcp to connect with OAuth or an API key. Or wait for the free allowance to renew.
Official Intrinio MCP server. US stock prices, options and fundamentals for AI agents.
Related MCP Servers
- AlicenseAqualityDmaintenanceA read-only MCP server that provides access to Charles Schwab account data and market information, including portfolio positions, real-time quotes, options chains, price history, and account balances through AI assistants.9MIT
- AlicenseAqualityBmaintenanceA read-only MCP server for Trading 212 accounts, enabling AI assistants to query balances, positions, orders, dividends, pies, and instruments without trading capabilities.121MIT
- FlicenseNot gradedqualityDmaintenanceAn MCP server that exposes personal financial data — transaction ledger, portfolio holdings, live/historical market prices, and quantitative risk metrics — as standardized tools, resources, and prompts, enabling natural language reasoning over real computed numbers.-
- FlicenseNot gradedqualityDmaintenanceA read-only MCP server that exposes Interactive Brokers and Moomoo brokerage accounts as tools, enabling natural-language queries across positions, trade history, realized P&L, and sector exposure in one merged view.-