EVE Online Companion MCP Server
An MCP server that provides Claude with direct access to EVE Online character data, market prices, killboard intelligence, wiki knowledge, and game mechanics. It enables natural language interaction for checking skills, analyzing fittings, setting in-game destinations, and accessing real-time EVE Online information.
README
EVE Online Companion — MCP Server
Ein MCP-Server (Model Context Protocol) fuer Claude Code, der als persoenlicher EVE Online Companion dient. Gibt Claude direkten Zugriff auf Character-Daten, Marktpreise, Killboard-Intel, Wiki-Wissen und mehr — alles ueber natuerliche Sprache.
Was kann das?
"Kann ich die Ishtar fliegen?" — Prueft deine Skills und zeigt fehlende mit Trainingszeit.
"Was kostet ein Warp Disruptor II in Jita?" — Holt Live-Marktdaten von ESI.
"Wie gefaehrlich ist der Pilot XY?" — Checkt zKillboard-Stats, Danger-Rating, Top-Ships.
"Zeig mir meine Fittings fuer die Vexor" — Listet gespeicherte Fits im EFT-Format.
"Erklaer mir Wormhole-Mechaniken" — Durchsucht die EVE University Wiki.
Alle 29 Tools
| Kategorie | Tools | Beschreibung |
|---|---|---|
| Auth | eve_auth_login |
SSO-Login (blockiert bis Callback) |
eve_auth_start |
SSO-Login (non-blocking, oeffne localhost:8834) | |
eve_auth_status |
Auth-Status + Character-Info | |
| Character | eve_character_info |
Name, Corp, Alliance, Wallet, SP, Location, Ship |
eve_character_skills |
Skills filtern nach Gruppe oder Name | |
eve_character_skillqueue |
Aktuelle Skill-Queue mit Zeiten | |
eve_character_implants |
Eingesteckte Implants | |
| Location | eve_location_current |
System, Station, Schiff, Online-Status |
eve_route_plan |
Route berechnen (shortest/secure/insecure) | |
eve_set_destination |
Autopilot-Ziel im Spiel setzen | |
| Fittings | eve_fitting_list |
Gespeicherte Fittings (EFT-Format) |
eve_fitting_save |
Fitting aus EFT-String speichern | |
eve_fitting_analyze |
Fitting-Analyse (Tank, DPS, Cap — Dogma-basiert) | |
| Market | eve_market_price |
Preis-Check (Jita default, andere Regionen moeglich) |
eve_market_appraise |
Itemliste bewerten (Copy-Paste aus dem Spiel) | |
eve_market_orders |
Eigene aktive Kauf-/Verkaufsauftraege | |
| Intel | eve_intel_character |
Pilot-Intel: Corp, Kills, Danger-Rating, Top-Ships |
eve_intel_corporation |
Corp-Intel: Members, Alliance, Killboard-Stats | |
eve_intel_system |
System-Intel: Kills, Jumps, NPC-Kills, Ratting | |
eve_killmail_analyze |
Killmail aufschluesseln: Fit, Attacker, Damage | |
| Assets | eve_assets_search |
Assets nach Name/Typ durchsuchen |
eve_wallet_balance |
Wallet-Balance | |
eve_wallet_journal |
Letzte Wallet-Eintraege | |
| Universe | eve_type_info |
Item/Ship-Details mit Dogma-Attributen |
eve_system_info |
System-Details: Sec, Region, Stationen | |
eve_search |
Universelle Suche (Chars, Corps, Systems, Items) | |
| Wiki | eve_wiki_search |
EVE University Wiki durchsuchen |
eve_wiki_article |
Wiki-Artikel lesen (als Markdown) | |
| Fleet | eve_fleet_info |
Fleet-Status (wenn in Fleet) |
Setup
1. EVE Developer Application
- Gehe zu https://developers.eveonline.com/
- "Create New Application"
- Application Type: Authentication & API Access
- Callback URL:
http://localhost:8834/callback - Alle Scopes aus der Liste unten auswaehlen
- Client ID notieren (Secret Key optional, nur fuer confidential apps)
<details> <summary><strong>Benoetigte ESI Scopes (20)</strong></summary>
esi-skills.read_skills.v1
esi-skills.read_skillqueue.v1
esi-clones.read_implants.v1
esi-assets.read_assets.v1
esi-wallet.read_character_wallet.v1
esi-fittings.read_fittings.v1
esi-fittings.write_fittings.v1
esi-characters.read_standings.v1
esi-killmails.read_killmails.v1
esi-location.read_location.v1
esi-location.read_ship_type.v1
esi-location.read_online.v1
esi-fleets.read_fleet.v1
esi-markets.read_character_orders.v1
esi-contracts.read_character_contracts.v1
esi-mail.read_mail.v1
esi-ui.open_window.v1
esi-ui.write_waypoint.v1
esi-search.search_structures.v1
esi-universe.read_structures.v1
</details>
2. Installation
git clone <repo>
cd eve
npm install
npm run build
3. Konfiguration
mkdir -p ~/.eve-mcp
Erstelle ~/.eve-mcp/config.json:
{
"clientId": "deine-client-id-von-ccp",
"callbackUrl": "http://localhost:8834/callback",
"userAgent": "eve-mcp-companion/1.0 (dein-character-name)"
}
Optional mit Secret Key (nur bei confidential apps):
{
"clientId": "deine-client-id",
"secretKey": "dein-secret-key",
"callbackUrl": "http://localhost:8834/callback",
"userAgent": "eve-mcp-companion/1.0 (dein-character-name)"
}
Alternativ via Environment-Variablen:
export EVE_MCP_CLIENT_ID="deine-client-id"
export EVE_MCP_CALLBACK_URL="http://localhost:8834/callback"
export EVE_MCP_USER_AGENT="eve-mcp-companion/1.0"
4. Claude Code Integration
Fuege den MCP-Server in deine Claude Code Settings ein.
Option A — settings.json (empfohlen):
Datei: ~/.claude/settings.json
{
"mcpServers": {
"eve-online": {
"command": "node",
"args": ["/absoluter/pfad/zu/eve/dist/index.js"],
"env": {
"EVE_MCP_TOKEN_PASSPHRASE": "ein-sicheres-passwort"
}
}
}
}
Option B — Projekt-scope (.mcp.json im Projektverzeichnis):
{
"mcpServers": {
"eve-online": {
"command": "node",
"args": ["./dist/index.js"],
"env": {
"EVE_MCP_TOKEN_PASSPHRASE": "ein-sicheres-passwort"
}
}
}
}
5. Erster Login
Starte Claude Code und sage:
"Verbinde mich mit EVE Online"
Claude ruft eve_auth_start auf und startet einen lokalen Auth-Server. Oeffne http://localhost:8834 im Browser — dort erscheint eine Login-Seite im EVE-Stil. Klicke "Authenticate via EVE SSO", logge dich bei CCP ein, und du wirst zurueckgeleitet zu einer Erfolgsseite mit deinem Character-Portrait. Fenster schliessen, fertig.
Architektur
eve/
├── src/
│ ├── index.ts # Server-Entry, registriert alle Tools
│ ├── config.ts # Laedt ~/.eve-mcp/config.json
│ ├── auth/
│ │ ├── scopes.ts # ESI Scope-Definitionen
│ │ ├── sso.ts # OAuth2 PKCE Flow, Callback-Server
│ │ ├── tokens.ts # Token-Persistence (AES-256-GCM)
│ │ └── pages.ts # HTML-Seiten fuer Auth-Flow
│ ├── clients/
│ │ ├── esi.ts # ESI API Client (Auth, Rate-Limiting, Cache)
│ │ ├── zkillboard.ts # zKillboard Client (10 req/s Throttle)
│ │ ├── evetycoon.ts # EVE Tycoon Markt-Client
│ │ └── wiki.ts # EVE University Wiki (MediaWiki API)
│ ├── tools/
│ │ ├── auth.ts # Login, Status
│ │ ├── character.ts # Character Info, Skills, Queue, Implants
│ │ ├── location.ts # Location, Route, Autopilot
│ │ ├── fitting.ts # Fittings, EFT, Analyse
│ │ ├── universe.ts # Type Info, System Info, Search
│ │ ├── market.ts # Preise, Appraisal, Orders
│ │ ├── killboard.ts # Character/Corp/System Intel, Killmails
│ │ ├── assets.ts # Assets, Wallet
│ │ ├── wiki.ts # Wiki Search, Article
│ │ └── fleet.ts # Fleet Info
│ └── utils/
│ ├── cache.ts # In-Memory Cache mit TTL
│ ├── errors.ts # Error-Klassen + formatToolError()
│ ├── formatting.ts # ISK, Zeit, EVE-Time Formatierung
│ ├── eft.ts # EFT-Format Parser + Generator
│ └── sde.ts # Type/System Name-Resolution (ESI-backed)
├── package.json
├── tsconfig.json
└── README.md
API-Clients
| Client | Base URL | Auth | Rate Limit | Cache |
|---|---|---|---|---|
| ESI | esi.evetech.net/latest |
OAuth2 Bearer | Error-Limit Header | Expires-Header + custom TTL |
| zKillboard | zkillboard.com/api |
keine | 10 req/s | 10 Minuten |
| EVE Tycoon | evetycoon.com/api/v1 |
keine | Expires-Header | 5 Minuten |
| Wiki | wiki.eveuniversity.org/api.php |
keine | keine | 1 Stunde |
Caching
Alle API-Antworten werden in-memory gecacht:
| Datentyp | TTL |
|---|---|
| Location / Ship / Online | 30 Sekunden |
| Wallet Balance | 2 Minuten |
| Skill Queue | 5 Minuten |
| Market Prices / Orders | 5 Minuten |
| zKillboard Stats | 10 Minuten |
| Assets | 30 Minuten |
| Character Skills | 1 Stunde |
| Wiki Articles | 1 Stunde |
| Type Info / System Info | 24 Stunden |
| Name-zu-ID Resolution | 24 Stunden |
ESI Rate-Limiting
Der ESI-Client trackt X-ESI-Error-Limit-Remain und X-ESI-Error-Limit-Reset Header. Wenn das Error-Limit unter 20 faellt, werden Requests bis zum Reset blockiert. Fehler 420 (Error Limit) werden als RateLimitError geworfen.
Token-Sicherheit
- Tokens werden in
~/.eve-mcp/tokens.jsongespeichert - Wenn
EVE_MCP_TOKEN_PASSPHRASEgesetzt ist: AES-256-GCM Verschluesselung mit scrypt-Key-Derivation - Ohne Passphrase: Klartext-Speicherung (mit Warnung auf stderr)
- Access-Token wird automatisch 2 Minuten vor Ablauf refreshed
- Refresh-Token wird bei jedem Refresh erneuert (PKCE volatile token pattern)
Entwicklung
# Dev-Mode (tsx, kein Build noetig)
npm run dev
# Build
npm run build
# Ausfuehren
npm start
Neues Tool hinzufuegen
- Handler in die passende Datei unter
src/tools/einfuegen server.tool(name, description, zodSchema, handler)Pattern verwenden- Fehler immer mit
formatToolError(err)zurueckgeben - ESI-Calls ueber
esi.get()/esi.publicGet()mit passendem Cache-TTL - Type-IDs mit
resolveTypeName()/resolveTypeId()aufloesen
Troubleshooting
"Config not found" — ~/.eve-mcp/config.json anlegen oder EVE_MCP_CLIENT_ID setzen.
"Authentication required" — eve_auth_login oder eve_auth_start aufrufen.
"Token refresh failed" — Refresh-Token abgelaufen. Erneut einloggen.
"ESI error limit reached" — Zu viele fehlerhafte Requests. Wartet automatisch.
Port 8834 belegt — Anderen Port in config.json setzen und Callback-URL bei CCP anpassen.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.