EVE Online Companion MCP Server
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 |
| SSO-Login (blockiert bis Callback) |
| SSO-Login (non-blocking, oeffne localhost:8834) | |
| Auth-Status + Character-Info | |
Character |
| Name, Corp, Alliance, Wallet, SP, Location, Ship |
| Skills filtern nach Gruppe oder Name | |
| Aktuelle Skill-Queue mit Zeiten | |
| Eingesteckte Implants | |
Location |
| System, Station, Schiff, Online-Status |
| Route berechnen (shortest/secure/insecure) | |
| Autopilot-Ziel im Spiel setzen | |
Fittings |
| Gespeicherte Fittings (EFT-Format) |
| Fitting aus EFT-String speichern | |
| Fitting-Analyse (Tank, DPS, Cap — Dogma-basiert) | |
Market |
| Preis-Check (Jita default, andere Regionen moeglich) |
| Itemliste bewerten (Copy-Paste aus dem Spiel) | |
| Eigene aktive Kauf-/Verkaufsauftraege | |
Intel |
| Pilot-Intel: Corp, Kills, Danger-Rating, Top-Ships |
| Corp-Intel: Members, Alliance, Killboard-Stats | |
| System-Intel: Kills, Jumps, NPC-Kills, Ratting | |
| Killmail aufschluesseln: Fit, Attacker, Damage | |
Assets |
| Assets nach Name/Typ durchsuchen |
| Wallet-Balance | |
| Letzte Wallet-Eintraege | |
Universe |
| Item/Ship-Details mit Dogma-Attributen |
| System-Details: Sec, Region, Stationen | |
| Universelle Suche (Chars, Corps, Systems, Items) | |
Wiki |
| EVE University Wiki durchsuchen |
| Wiki-Artikel lesen (als Markdown) | |
Fleet |
| Fleet-Status (wenn in Fleet) |
Setup
1. EVE Developer Application
"Create New Application"
Application Type: Authentication & API Access
Callback URL:
http://localhost:8834/callbackAlle Scopes aus der Liste unten auswaehlen
Client ID notieren (Secret Key optional, nur fuer confidential apps)
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.v12. Installation
git clone <repo>
cd eve
npm install
npm run build3. Konfiguration
mkdir -p ~/.eve-mcpErstelle ~/.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.mdAPI-Clients
Client | Base URL | Auth | Rate Limit | Cache |
ESI |
| OAuth2 Bearer | Error-Limit Header | Expires-Header + custom TTL |
zKillboard |
| keine | 10 req/s | 10 Minuten |
EVE Tycoon |
| keine | Expires-Header | 5 Minuten |
Wiki |
| 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.jsongespeichertWenn
EVE_MCP_TOKEN_PASSPHRASEgesetzt ist: AES-256-GCM Verschluesselung mit scrypt-Key-DerivationOhne 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 startNeues Tool hinzufuegen
Handler in die passende Datei unter
src/tools/einfuegenserver.tool(name, description, zodSchema, handler)Pattern verwendenFehler immer mit
formatToolError(err)zurueckgebenESI-Calls ueber
esi.get()/esi.publicGet()mit passendem Cache-TTLType-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.
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
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/32n1/eveMCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server