eToro MCP Server
Click on "Install 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., "@eToro MCP ServerWhat's the current price of Bitcoin?"
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.
eToro Read-Only MCP Server
A local read-only Model Context Protocol (MCP) server
that wraps eToro's Agent Portfolios
public API (https://public-api.etoro.com/api/v1).
It lets an MCP-compatible AI client (Claude Desktop, Claude Code, Cursor, etc.) read your real eToro portfolio — total value, P&L, holdings breakdown, positions, and instrument lookups — directly in chat.
Why "read-only" matters
eToro's official agent-portfolios skill bundles read endpoints (portfolio info, instrument search) together with write/trade endpoints (create agent-portfolio, open position, close position). This project deliberately implements only the read endpoints. There is no code path, tool, or parameter anywhere in this repo that can place, modify, close, or rebalance a trade.
See src/etoroClient.js — it has a hardcoded allowlist
of GET-only paths and the underlying fetch call's method is hardcoded to
"GET".
Related MCP server: FinClaw
Tools exposed
Tool | Description |
| Verifies your API credentials and lists any agent-portfolios on the account |
| Total portfolio value, total invested, unrealized P&L, available cash |
| Open positions grouped by instrument: invested, current value, P&L, P&L%, portfolio weight% |
| Raw |
| Resolve a trading symbol (e.g. |
| Display metadata (name, type, exchange, etc.) for one or more instrument IDs |
Prerequisites
Node.js >= 18 (tested on Node 24). Download from nodejs.org.
An eToro account with the Agent Portfolios feature available (beta).
An MCP-compatible client: Claude Desktop, Claude Code, or Cursor.
1. Get your eToro API credentials
Go to eToro → Settings → Trade (https://www.etoro.com/settings/trade).
Generate an API key. Use a key WITHOUT
real:writepermission — this server only ever issues GET requests and doesn't need (or use) write access.You'll get:
A shared application key (
x-api-key) — documented publicly in eToro's agent-portfolios SKILL.md.Your private per-user key (
x-user-key) — keep this secret.
2. Clone and install
git clone https://github.com/ranjanvipul88/eToro-mcp.git
cd eToro-mcp
npm install3. Configure credentials
cp .env.example .envEdit .env:
ETORO_API_KEY=<shared app key from eToro's agent-portfolios SKILL.md>
ETORO_USER_KEY=<your private per-user key>.env is gitignored — never commit it.
4. Test the connection (optional but recommended)
npm run test:connectionThis calls the eToro API directly (no MCP) and prints:
your agent-portfolio list (and whether your key has write permission)
an aggregated holdings breakdown with current value, invested amount, and P&L
If this works, the MCP server will work too.
5. Set up with Claude Code
A project-scoped .mcp.json is included. From the project directory, open
Claude Code and run:
/mcpApprove the etoro-readonly server when prompted. Then ask things like:
What's my eToro portfolio summary? Show me my eToro holdings breakdown.
Or register it manually from any directory:
claude mcp add etoro-readonly node /absolute/path/to/eToro-mcp/src/index.js6. Set up with Claude Desktop
Edit your Claude Desktop config file:
Windows:
%APPDATA%\Claude\claude_desktop_config.jsonmacOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.json
Add an entry under mcpServers (use the absolute path to src/index.js):
{
"mcpServers": {
"etoro-readonly": {
"command": "node",
"args": ["/absolute/path/to/eToro-mcp/src/index.js"]
}
}
}Windows path tip: use double backslashes, e.g.
"D:\\eToro-mcp\\src\\index.js".
Fully quit and restart Claude Desktop (MCP servers are only loaded on startup — closing the window isn't enough). Start a new chat and ask:
Check my eToro connection. What's my eToro portfolio summary?
Approve the etoro-readonly tools when prompted.
Troubleshooting: fetch failed in Claude Desktop
If the server connects in Claude Code / npm run test:connection but
Claude Desktop reports fetch failed, it's usually a TLS/CA issue specific
to how the Desktop app spawns Node (not an issue with the API or this code).
Add an env block to the config entry:
{
"mcpServers": {
"etoro-readonly": {
"command": "node",
"args": ["/absolute/path/to/eToro-mcp/src/index.js"],
"env": {
"NODE_OPTIONS": "--use-system-ca",
"NODE_TLS_REJECT_UNAUTHORIZED": "0"
}
}
}
}Note:
NODE_TLS_REJECT_UNAUTHORIZED=0disables TLS certificate validation for this process. Only use this if you understand the trade-off (it's a common workaround on machines with corporate antivirus/TLS-inspection proxies that intercept HTTPS).
Project structure
.
├── src/
│ ├── index.js # MCP server (stdio transport), registers tools
│ ├── etoroClient.js # eToro API client — GET-only allowlist
│ └── test-connection.js # standalone script to test API credentials
├── .env.example # credential template (copy to .env)
├── .mcp.json # Claude Code project-scoped MCP registration
├── package.json
└── README.mdNotes & limitations
Requests are throttled to ~1 every 3.1 seconds, per eToro's documented 20 requests/minute rate limit.
instrumentIdsquery parameters are sent with literal commas (instrumentIds=1,2,3) — eToro's API returns HTTP 500 if commas are URL-encoded as%2C.This project is unaffiliated with eToro. Use at your own risk and review
src/etoroClient.jsbefore connecting your own account.
License
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ranjanvipul88/etoro-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server