EVE ESI Tool
An MCP server that integrates EVE Online's ESI API with AI assistants to enable natural language interaction with character data, market information, and assets. It provides 22 tools for managing skills, wallet balances, ship fittings, and more directly through AI-powered clients.
README
EVE ESI Tool 🚀
An EVE Online ESI API interface with a Model Context Protocol (MCP) server for AI agent integration. Connect your EVE character to Claude, Augment Code, Cursor, or any MCP-compatible AI assistant — then ask questions like "What's in my cargo hold?", "Suggest a Hookbill fit for solo FW", or "What are my most valuable assets?"
Architecture
graph TB
subgraph AI["AI Clients"]
A[Claude Desktop]
B[Augment Code]
C[Cursor]
D[Claude Code CLI]
end
subgraph MCP["MCP Server · mcp_server.py"]
E["22 Tools\n──────────────────\nCharacter · Skills · Assets\nWallet · Fittings · Market\nUniverse"]
end
subgraph LIB["eve_esi library"]
F["auth.py\nOAuth2 SSO + PKCE"]
G["client.py\nESI HTTP Client\nauto token refresh"]
H["endpoints/\nassets · characters · fittings\nmarket · skills · universe · wallet"]
end
subgraph EVE["EVE Online"]
I["ESI API\nesi.evetech.net"]
J["SSO\nlogin.eveonline.com"]
end
A & B & C & D -->|"stdio / MCP protocol"| E
E --> G
G --> H
F -->|"tokens.json"| G
G -->|"HTTPS + JWT Bearer"| I
F -->|"PKCE / Auth Code flow"| J
OAuth2 Authentication Flow
sequenceDiagram
participant U as You
participant CLI as cli.py
participant Browser as Browser
participant SSO as EVE SSO
participant ESI as ESI API
U->>CLI: python cli.py login
CLI->>Browser: Open auth URL (PKCE challenge)
Browser->>SSO: EVE login + scope approval
SSO->>CLI: Redirect → localhost:8182/callback?code=...
CLI->>SSO: POST /token (exchange code)
SSO->>CLI: access_token + refresh_token
CLI->>CLI: Store encrypted in tokens.json
Note over CLI,ESI: All future requests auto-refresh token
CLI->>ESI: GET /characters/{id}/
ESI->>CLI: Character data ✓
Prerequisites
- Python 3.11+
- An EVE Online account
- A registered EVE developer application (free — takes 2 minutes at developers.eveonline.com)
Installation
git clone https://github.com/yourname/eve-esi-tool
cd eve-esi-tool
pip install -e .
Step 1 — Register an EVE Application
- Go to developers.eveonline.com → sign in → Applications → Create Application
- Set Connection Type →
Authentication & API Access - Set Callback URL →
http://localhost:8182/callback - Add whichever ESI scopes you want (see Scopes Reference below)
- Copy your Client ID and optionally Client Secret
PKCE vs Secret: If you omit
client_secretfromconfig.yaml, the tool uses PKCE (safer for desktop apps). If you include it, it uses the standard Authorization Code flow with Basic Auth.
Step 2 — Configure
cp config.example.yaml config.yaml
Edit config.yaml:
eve_sso:
client_id: "YOUR_CLIENT_ID_HERE"
client_secret: "YOUR_SECRET_HERE" # optional — remove for PKCE-only
callback_url: "http://localhost:8182/callback"
scopes:
- "esi-skills.read_skills.v1"
- "esi-skills.read_skillqueue.v1"
- "esi-characters.read_blueprints.v1"
- "esi-assets.read_assets.v1"
- "esi-wallet.read_character_wallet.v1"
- "esi-fittings.read_fittings.v1"
- "esi-fittings.write_fittings.v1"
- "esi-markets.read_character_orders.v1"
- "esi-industry.read_character_jobs.v1"
- "esi-location.read_location.v1"
- "esi-location.read_ship_type.v1"
- "esi-clones.read_clones.v1"
- "esi-clones.read_implants.v1"
- "esi-contracts.read_character_contracts.v1"
- "esi-universe.read_structures.v1"
token_storage:
path: "tokens.json"
Step 3 — Log In
python cli.py login
A browser window opens for EVE SSO. After you approve, your tokens are saved to tokens.json. Run this once per character. You can authenticate multiple characters — all tools accept an optional character_id parameter.
CLI Reference
python cli.py login # Authenticate a character via EVE SSO
python cli.py chars # List all authenticated characters
python cli.py info # Show character info (corp, alliance, etc.)
python cli.py skills # Show skill summary (total SP, top skills)
python cli.py wallet # Show ISK wallet balance
python cli.py queue # Show skill training queue
Step 4 — Connect to Your AI Tool
The MCP server uses stdio transport — the AI client launches it as a subprocess and communicates over stdin/stdout.
Augment Code (VS Code)
Open your VS Code user settings (Ctrl+Shift+P → "Preferences: Open User Settings (JSON)") and add:
{
"augment.advanced": {
"mcpServers": {
"eve-esi": {
"command": "python",
"args": ["C:/path/to/eve-esi-tool/mcp_server.py"],
"cwd": "C:/path/to/eve-esi-tool"
}
}
}
}
Then reload VS Code (Ctrl+Shift+P → "Developer: Reload Window"). The EVE ESI tools will be available in Agent mode automatically.
Windows tip: Use forward slashes
/or double backslashes\\in the path.
Claude Desktop
Edit %APPDATA%\Claude\claude_desktop_config.json on Windows, or ~/Library/Application Support/Claude/claude_desktop_config.json on macOS. Create the file if it doesn't exist:
{
"mcpServers": {
"eve-esi": {
"command": "python",
"args": ["/path/to/eve-esi-tool/mcp_server.py"],
"cwd": "/path/to/eve-esi-tool"
}
}
}
Restart Claude Desktop. You'll see a 🔨 hammer icon in the chat input bar when MCP tools are loaded. Click it to see all available tools.
Enable developer mode: In Claude Desktop → Settings → Developer → Enable Developer Mode to see the config file path for your OS.
Cursor
Add to .cursor/mcp.json in your project root, or ~/.cursor/mcp.json globally:
{
"mcpServers": {
"eve-esi": {
"command": "python",
"args": ["/path/to/eve-esi-tool/mcp_server.py"],
"cwd": "/path/to/eve-esi-tool"
}
}
}
Enable MCP in Cursor Settings → Features → MCP → Enable MCP.
Claude Code (CLI)
# Add the server
claude mcp add eve-esi python /path/to/eve-esi-tool/mcp_server.py
# Or add with working directory
claude mcp add eve-esi --cwd /path/to/eve-esi-tool python mcp_server.py
# Verify it's registered
claude mcp list
Available MCP Tools
mindmap
root((EVE ESI\nMCP Tools))
Character
list_authenticated_characters
get_character_info
get_character_location
get_character_ship
Skills
get_skills_summary
get_skill_queue
get_character_attributes
get_active_implants
Assets
get_assets_list
search_assets
Wallet
get_wallet_balance
get_wallet_journal
Fittings
get_ship_fittings
save_ship_fitting
Market
get_market_orders
check_item_price
get_blueprints_list
get_industry_jobs_list
Universe
lookup_item_type
search_item_type
lookup_solar_system
resolve_eve_names
| Tool | Description |
|---|---|
list_authenticated_characters |
List all characters logged in via CLI |
get_character_info |
Name, corp, alliance, birthday, security status |
get_character_location |
Current solar system |
get_character_ship |
Ship currently flying |
get_skills_summary |
Total SP, unallocated SP, all trained skills |
get_skill_queue |
Skills in queue with finish times |
get_character_attributes |
Int/Mem/Per/Wil/Cha + remap availability |
get_active_implants |
Implants currently plugged in |
get_assets_list |
All owned items with location/quantity |
search_assets |
Search assets by item type name |
get_wallet_balance |
ISK balance |
get_wallet_journal |
Recent wallet transactions |
get_ship_fittings |
All saved fittings in-game |
save_ship_fitting |
Save a new fitting to the game ✍️ |
get_market_orders |
Character's active sell/buy orders |
check_item_price |
Best buy/sell prices in any region (default: Jita) |
get_blueprints_list |
All blueprints with ME/TE/runs info |
get_industry_jobs_list |
Active/completed manufacturing & research jobs |
lookup_item_type |
Full type info + dogma attributes for any item ID |
search_item_type |
Find item IDs by name |
lookup_solar_system |
System info (security, planets, stargates) |
resolve_eve_names |
Convert any EVE IDs → names |
✍️
save_ship_fittingis the only tool that writes to your account. All others are read-only.
Example Conversations
Once connected, you can ask natural language questions:
"What ship is my character flying and where are they?"
"Show me my top 10 most valuable assets"
"What skills am I training and when does the queue finish?"
"Check the Jita price for a Raven Navy Issue"
"Do I have any active industry jobs?"
"What are my saved fittings for a Rifter?"
"Suggest a solo PvP fit for my Caldari Navy Hookbill based on my skills"
"How much would I make if I sold all my blueprints in Jita?"
Multi-Character Support
You can authenticate multiple EVE characters. All MCP tools accept an optional character_id parameter:
# Log in a second character
python cli.py login
# List all authenticated characters
python cli.py chars
When character_id is omitted, the server uses the first authenticated character. Specify a character ID to query a specific one:
"Check the wallet balance for character 98765432"
Project Structure
eve-esi-tool/
├── mcp_server.py # MCP server — 22 tools for AI agents
├── cli.py # Command-line interface
├── config.example.yaml # Config template
├── config.yaml # Your config (not committed)
├── tokens.json # OAuth tokens (not committed)
├── scripts/ # Temporary/ad-hoc scripts (auto-cleaned)
├── eve_esi/
│ ├── auth.py # OAuth2 SSO + PKCE flow + token storage
│ ├── client.py # ESI HTTP client with auto token refresh
│ ├── config.py # Config loading (YAML)
│ └── endpoints/
│ ├── assets.py # Character assets
│ ├── characters.py # Character info, location, ship
│ ├── fittings.py # Ship fittings CRUD
│ ├── market.py # Orders, prices, blueprints, industry
│ ├── skills.py # Skills, queue, attributes, implants
│ ├── universe.py # Type info, system info, name resolution
│ └── wallet.py # Wallet balance and journal
└── CLAUDE.md # Agent instructions (Claude Code / Cursor)
Scopes Reference
| Scope | Enables |
|---|---|
esi-skills.read_skills.v1 |
get_skills_summary |
esi-skills.read_skillqueue.v1 |
get_skill_queue, get_character_attributes |
esi-clones.read_implants.v1 |
get_active_implants |
esi-assets.read_assets.v1 |
get_assets_list, search_assets |
esi-wallet.read_character_wallet.v1 |
get_wallet_balance, get_wallet_journal |
esi-fittings.read_fittings.v1 |
get_ship_fittings |
esi-fittings.write_fittings.v1 |
save_ship_fitting |
esi-markets.read_character_orders.v1 |
get_market_orders |
esi-characters.read_blueprints.v1 |
get_blueprints_list |
esi-industry.read_character_jobs.v1 |
get_industry_jobs_list |
esi-location.read_location.v1 |
get_character_location |
esi-location.read_ship_type.v1 |
get_character_ship |
esi-contracts.read_character_contracts.v1 |
Future: contract tools |
esi-universe.read_structures.v1 |
Asset locations in player structures |
Security Notes
tokens.jsonandconfig.yamlare excluded from git via.gitignore- Tokens are stored locally — never sent to any third party
- The MCP server only runs when your AI client is active
- All ESI calls go directly to
esi.evetech.netover HTTPS - The only write operation is
save_ship_fitting— no ISK or items can be moved
Troubleshooting
No authenticated characters error
python cli.py login # run this first
400 Bad Request during login
- Make sure your
callback_urlinconfig.yamlexactly matches what you set in the EVE developer portal
MCP tools not showing in Augment/Claude
- Check that the
commandpath points to the correct Python executable - Make sure you've run
pip install -e .in the project directory - Reload VS Code / restart Claude Desktop after editing the config
Scope errors on specific tools
- Re-run
python cli.py loginafter adding new scopes toconfig.yaml - Make sure the new scopes are also added to your EVE developer application
Built with FastMCP · ESI data from EVE Online ESI
推荐服务器
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 模型以安全和受控的方式获取实时的网络信息。