MCP Hub
Back to servers

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.

glama
Updated
Apr 16, 2026

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

KategorieToolsBeschreibung
Autheve_auth_loginSSO-Login (blockiert bis Callback)
eve_auth_startSSO-Login (non-blocking, oeffne localhost:8834)
eve_auth_statusAuth-Status + Character-Info
Charactereve_character_infoName, Corp, Alliance, Wallet, SP, Location, Ship
eve_character_skillsSkills filtern nach Gruppe oder Name
eve_character_skillqueueAktuelle Skill-Queue mit Zeiten
eve_character_implantsEingesteckte Implants
Locationeve_location_currentSystem, Station, Schiff, Online-Status
eve_route_planRoute berechnen (shortest/secure/insecure)
eve_set_destinationAutopilot-Ziel im Spiel setzen
Fittingseve_fitting_listGespeicherte Fittings (EFT-Format)
eve_fitting_saveFitting aus EFT-String speichern
eve_fitting_analyzeFitting-Analyse (Tank, DPS, Cap — Dogma-basiert)
Marketeve_market_pricePreis-Check (Jita default, andere Regionen moeglich)
eve_market_appraiseItemliste bewerten (Copy-Paste aus dem Spiel)
eve_market_ordersEigene aktive Kauf-/Verkaufsauftraege
Inteleve_intel_characterPilot-Intel: Corp, Kills, Danger-Rating, Top-Ships
eve_intel_corporationCorp-Intel: Members, Alliance, Killboard-Stats
eve_intel_systemSystem-Intel: Kills, Jumps, NPC-Kills, Ratting
eve_killmail_analyzeKillmail aufschluesseln: Fit, Attacker, Damage
Assetseve_assets_searchAssets nach Name/Typ durchsuchen
eve_wallet_balanceWallet-Balance
eve_wallet_journalLetzte Wallet-Eintraege
Universeeve_type_infoItem/Ship-Details mit Dogma-Attributen
eve_system_infoSystem-Details: Sec, Region, Stationen
eve_searchUniverselle Suche (Chars, Corps, Systems, Items)
Wikieve_wiki_searchEVE University Wiki durchsuchen
eve_wiki_articleWiki-Artikel lesen (als Markdown)
Fleeteve_fleet_infoFleet-Status (wenn in Fleet)

Setup

1. EVE Developer Application

  1. Gehe zu https://developers.eveonline.com/
  2. "Create New Application"
  3. Application Type: Authentication & API Access
  4. Callback URL: http://localhost:8834/callback
  5. Alle Scopes aus der Liste unten auswaehlen
  6. Client ID notieren (Secret Key optional, nur fuer confidential apps)
Benoetigte ESI Scopes (20)
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

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

ClientBase URLAuthRate LimitCache
ESIesi.evetech.net/latestOAuth2 BearerError-Limit HeaderExpires-Header + custom TTL
zKillboardzkillboard.com/apikeine10 req/s10 Minuten
EVE Tycoonevetycoon.com/api/v1keineExpires-Header5 Minuten
Wikiwiki.eveuniversity.org/api.phpkeinekeine1 Stunde

Caching

Alle API-Antworten werden in-memory gecacht:

DatentypTTL
Location / Ship / Online30 Sekunden
Wallet Balance2 Minuten
Skill Queue5 Minuten
Market Prices / Orders5 Minuten
zKillboard Stats10 Minuten
Assets30 Minuten
Character Skills1 Stunde
Wiki Articles1 Stunde
Type Info / System Info24 Stunden
Name-zu-ID Resolution24 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.json gespeichert
  • Wenn EVE_MCP_TOKEN_PASSPHRASE gesetzt 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

  1. Handler in die passende Datei unter src/tools/ einfuegen
  2. server.tool(name, description, zodSchema, handler) Pattern verwenden
  3. Fehler immer mit formatToolError(err) zurueckgeben
  4. ESI-Calls ueber esi.get() / esi.publicGet() mit passendem Cache-TTL
  5. 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.

Reviews

No reviews yet

Sign in to write a review