eToro MCP Server
A security-hardened MCP server that wraps the eToro public API, enabling AI assistants to trade, access market data, manage portfolios, and interact with social feeds via 34 tools.
README
eToro MCP Server (Security-Hardened Fork)
Originally created by orkblutt — full credit to the original author. This is a security-hardened fork. See SECURITY.md for all changes made. Original repo: https://github.com/orkblutt/etoro-mcp
MCP server that wraps the eToro public API, exposing 34 tools for AI assistants (Claude Desktop, Cursor, Claude Code, etc.).
Security Improvements Over Original
This fork fixes 9 security issues found in the original:
- 🔴 API key headers were swapped (
x-api-key↔x-user-key) - 🔴 Usernames injected into URLs without
encodeURIComponent - 🟠 Missing credentials only warned — now hard-fails at startup
- 🟠 No rate limiting — token-bucket limiter added for trading & readonly ops
- 🟠 No content limits on social posting — now capped at 1000/500 chars
- 🟡 Raw eToro API error bodies leaked to LLM — now sanitized
- 🟡
get_closing_pricesfetched all instruments — now requires explicit IDs - 🟡 No live-mode warnings on trading tools — now logs prominently
- 🟡 Missing Zod input validation (min/max/int/positive) across all tools
Full details in SECURITY.md.
What Can You Do With It?
Below are real conversations with an AI assistant connected to the eToro MCP server.
Place a limit order
You: Place a buy limit order for 5 SOL if it reaches $75
Assistant: Current SOL price is $78.21. I've placed a buy limit order for 5 SOL at $75 ($375 total) with a stop loss at $1. Order confirmed.
DCA ladder based on technical analysis
You: Can you place some DCA buy limit orders for ETH based on key support levels?
Assistant: Based on the chart, here are the key support levels for ETH:
- $1,750 — first support zone
- $1,500 — strong horizontal support
- $1,200 — macro support
- $1,000 — psychological floor
I've placed 4 limit orders across those levels.
Portfolio analysis
You: What's my average entry price on SOL including all my positions?
Assistant: You have 27 SOL positions totaling 124.62 SOL with an average entry of $120.99.
Market research
You: What do you think about SUI?
Assistant: SUI is trading at $0.905, down 75% from its October high of $3.70. Your 4 positions total 3,434 SUI at an average of $1.18 — currently -23%.
Setup
1. Build
npm install
npm run build
2. Configure credentials
You need an eToro API key and user key.
Option A: Environment variables (recommended)
export ETORO_API_KEY=your-api-key
export ETORO_USER_KEY=your-user-key
export ETORO_TRADING_MODE=demo # use "real" for live trading
node dist/index.js
Option B: Claude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"etoro-mcp": {
"command": "node",
"args": ["/path/to/etoro-mcp/dist/index.js"],
"env": {
"ETORO_API_KEY": "your-api-key",
"ETORO_USER_KEY": "your-user-key",
"ETORO_TRADING_MODE": "demo"
}
}
}
}
Option C: CLI arguments
node dist/index.js --api-key your-api-key --user-key your-user-key --trading-mode demo
⚠️ Note: The server will refuse to start if
ETORO_API_KEYorETORO_USER_KEYare missing.
3. Restart the MCP server
After changing config, restart the server or the Claude Desktop app.
Configuration
| Setting | Env var | CLI arg | Default |
|---|---|---|---|
| API Key | ETORO_API_KEY |
--api-key |
(required) |
| User Key | ETORO_USER_KEY |
--user-key |
(required) |
| Trading Mode | ETORO_TRADING_MODE |
--trading-mode |
demo |
Trading mode: demo routes trading calls through eToro's demo/virtual account. Set to real for live trading. A prominent warning is logged when live mode is active.
Rate Limiting
This fork adds a token-bucket rate limiter to protect your account from unintended burst activity in agentic loops:
| Bucket | Tools | Burst | Refill |
|---|---|---|---|
trading |
Order placement, social posting, watchlist writes | 5 requests | 1 req/sec |
readonly |
Market data, portfolio reads, user lookups | 20 requests | 5 req/sec |
Tools (34 total)
Market Data (8)
| Tool | Description |
|---|---|
search_instruments |
Search instruments by keyword |
get_instruments |
Get instrument details by IDs (max 100) |
get_instrument_types |
List all instrument types |
get_industries |
List industry classifications |
get_exchanges |
List stock exchanges |
get_candles |
Get OHLCV candle data |
get_closing_prices |
Get closing prices for specified instruments |
get_rates |
Get live bid/ask rates |
Trading (7)
| Tool | Description |
|---|---|
open_position_by_amount |
Open position by USD amount |
open_position_by_units |
Open position by unit count |
close_position |
Close an open position |
place_limit_order |
Place a limit/entry order |
cancel_order |
Cancel a pending order |
get_orders |
List all pending orders |
get_portfolio |
Get all open positions |
Social Feeds (4)
| Tool | Description |
|---|---|
get_instrument_feed |
Get social feed for an instrument |
get_user_feed |
Get social feed for a user |
create_post |
Create a post (max 1000 chars) |
create_comment |
Comment on a post (max 500 chars) |
Watchlists (9)
| Tool | Description |
|---|---|
get_watchlists |
List your watchlists |
create_watchlist |
Create a watchlist |
delete_watchlist |
Delete a watchlist |
rename_watchlist |
Rename a watchlist |
add_watchlist_items |
Add instruments to a watchlist (max 50) |
remove_watchlist_item |
Remove an instrument from a watchlist |
set_default_watchlist |
Set default watchlist |
get_curated_lists |
Get eToro's curated lists |
get_public_watchlists |
Browse public watchlists |
User & Discovery (6)
| Tool | Description |
|---|---|
get_user_profile |
Get a user's public profile |
get_user_performance |
Get performance summary |
get_user_performance_granular |
Get detailed performance over a period |
get_user_trades |
Get trade history |
get_user_portfolio |
Get public portfolio holdings |
discover_users |
Discover popular investors |
Credits
- Original author: orkblutt — https://github.com/orkblutt/etoro-mcp
- Security audit & fixes: Vipul Ranjan
- License: MIT (see LICENSE)
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。