Portfolio Analytics MCP
Ask Claude about your investments in plain language. This is an MCP server that gives Claude (or any MCP client) read-only tools for market data and portfolio analysis: prices, FX, ETF costs and exposure, and risk for a whole portfolio of stocks and ETFs, measured in your own currency.
It is built for European investors as much as US ones: it understands ISINs, UCITS ETFs listed on several exchanges, and prices quoted in pence.
What you can ask
"I hold 30k EUR of IE00B4L5Y983, 10 ASML.AS and 25 AAPL. How volatile is this portfolio, and which position contributes most to the risk?"
"Compare the costs of the iShares Core MSCI World and the Vanguard FTSE All-World. Which is cheaper and bigger?"
"How much of my ETF portfolio is in US tech stocks? Do my ETFs overlap?"
"What has VWCE returned since 2021 in euros, compared with the S&P 500?"
Claude picks the right tools, fetches the data and explains the result.
What's inside
| Area | What it gives you | Data source |
|---|---|---|
| Portfolio | Risk and return of a mixed portfolio in one currency: volatility, drawdown, beta, risk per position | Yahoo Finance + justETF |
| ETFs | Costs (TER), fund size, country/sector/stock exposure, listings, similar funds, portfolio look-through | justETF |
| Markets | Price history, quotes, FX rates, performance statistics, correlations, dividends | Yahoo Finance |
20 tools in total, all read-only. No API key or account needed. See the user guide for the full list.
Quickstart
You need uv. It downloads Python 3.12, the server and its dependencies on first run, and checks for a new release each time the server starts.
1. Connect it to Claude
Claude Code:
claude mcp add finance -- uvx portfolio-analytics-mcp@latest
Claude Desktop: add this to claude_desktop_config.json, then restart the
app. If it can't find uvx, use the full path that which uvx prints.
{
"mcpServers": {
"finance": {
"command": "uvx",
"args": ["portfolio-analytics-mcp@latest"]
}
}
}
To stay on one version instead, use portfolio-analytics-mcp==0.2.0.
The server runs on your machine. Only symbols and ISINs go out, to Yahoo Finance and justETF; your quantities and amounts never leave it.
2. Ask a question, for example "What is the TER of IE00B4L5Y983?"
To work on the code instead, see Contributing.
Want to run it as a shared remote server instead? See Remote deployment.
Important to know
- Not financial advice. The tools report data and statistics; past performance does not predict future results. Data can be delayed, incomplete or wrong, and is provided as is, without warranty.
- Not affiliated with Yahoo, justETF or any fund provider. Names and trademarks belong to their owners.
- Personal use only. Yahoo Finance (through the unofficial yfinance library) and justETF are third-party sites. This server makes polite, on-demand requests (rate-limited and cached) and is not meant for bulk downloads or redistributing their data. Check their terms before using it.
- Quotes can be delayed by up to ~20 minutes, and Yahoo's coverage of European ETF holdings is patchy (the justETF tools fill that gap).
Learn more
- User guide: every tool, example workflows, configuration, remote deployment and limitations.
- Agent skill: tells an agent when and how to use the tools, and how to present results.
- Contributing: development setup, tests and project layout.
License
Metadata
Release files for portfolio-analytics-mcp 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| portfolio_analytics_mcp-0.2.0.tar.gz | 127.4 kB | Without provenance | Details for portfolio_analytics_mcp-0.2.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| portfolio_analytics_mcp-0.2.0-py3-none-any.whl | Python 3 | none | any | Details for portfolio_analytics_mcp-0.2.0-py3-none-any.whl |
Total release size: 188.5 kB
Release files / portfolio_analytics_mcp-0.2.0.tar.gz
| Download URL | portfolio_analytics_mcp-0.2.0.tar.gz |
|---|---|
| Size | 127.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
584edd6e1d773238c1b763738be08bbbb262d56ee1e69d4ce6d07951bf7fb3ab
|
|
BLAKE2b-256 checksum How to use checksums |
1c93a49ba03a336b04ed69c67fe1a94dce2704a6dd713307322b9b02babdf3f0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / portfolio_analytics_mcp-0.2.0-py3-none-any.whl
| Download URL | portfolio_analytics_mcp-0.2.0-py3-none-any.whl |
|---|---|
| Size | 61.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f922f80f6193fe1b2c7d49237ec938c5df155f886dbc98aab07e6dd044ce9da3
|
|
BLAKE2b-256 checksum How to use checksums |
6978b629cecdcc0dc470a8398ca40d9ffb4293c41a934711e4a9c4a2486652e2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for portfolio-analytics-mcp 0.2.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.