EVE Online Companion MCP Server
EVE Online Companion — MCP 서버
개인 EVE Online Companion 역할을 하는 Claude Code용 MCP(Model Context Protocol) 서버입니다. Claude에게 캐릭터 데이터, 시장 가격, 킬보드 정보, 위키 지식 등에 대한 직접적인 액세스를 제공하며, 이 모든 것을 자연어로 처리할 수 있습니다.
주요 기능
"Ishtar를 조종할 수 있나요?" — 스킬을 확인하고 부족한 스킬과 훈련 시간을 보여줍니다.
"Jita에서 Warp Disruptor II 가격이 얼마인가요?" — ESI에서 실시간 시장 데이터를 가져옵니다.
"파일럿 XY는 얼마나 위험한가요?" — zKillboard 통계, 위험 등급, 주요 함선 정보를 확인합니다.
"Vexor 피팅을 보여줘" — 저장된 피팅을 EFT 형식으로 나열합니다.
"웜홀 메커니즘을 설명해줘" — EVE University 위키를 검색합니다.
29개의 모든 도구
카테고리 | 도구 | 설명 |
인증 |
| SSO 로그인 (콜백까지 차단) |
| SSO 로그인 (비차단, localhost:8834 열기) | |
| 인증 상태 + 캐릭터 정보 | |
캐릭터 |
| 이름, 기업, 연합, 지갑, SP, 위치, 함선 |
| 그룹 또는 이름별 스킬 필터링 | |
| 시간 정보가 포함된 현재 스킬 큐 | |
| 장착된 임플란트 | |
위치 |
| 성계, 스테이션, 함선, 온라인 상태 |
| 경로 계산 (최단/안전/위험) | |
| 게임 내 자동항법 목적지 설정 | |
피팅 |
| 저장된 피팅 (EFT 형식) |
| EFT 문자열에서 피팅 저장 | |
| 피팅 분석 (탱킹, DPS, 캡 — Dogma 기반) | |
시장 |
| 가격 확인 (기본 Jita, 다른 지역 가능) |
| 아이템 목록 평가 (게임 내 복사/붙여넣기) | |
| 본인의 활성 구매/판매 주문 | |
인텔 |
| 파일럿 인텔: 기업, 킬, 위험 등급, 주요 함선 |
| 기업 인텔: 멤버, 연합, 킬보드 통계 | |
| 성계 인텔: 킬, 점프, NPC 킬, 랫팅 | |
| 킬메일 분석: 피팅, 공격자, 피해량 | |
자산 |
| 이름/유형별 자산 검색 |
| 지갑 잔액 | |
| 최근 지갑 기록 | |
유니버스 |
| Dogma 속성이 포함된 아이템/함선 상세 정보 |
| 성계 상세 정보: 보안 등급, 지역, 스테이션 | |
| 통합 검색 (캐릭터, 기업, 성계, 아이템) | |
위키 |
| EVE University 위키 검색 |
| 위키 문서 읽기 (Markdown 형식) | |
함대 |
| 함대 상태 (함대 소속 시) |
설정
1. EVE 개발자 애플리케이션
"Create New Application" 클릭
Application Type: Authentication & API Access
Callback URL:
http://localhost:8834/callback아래 목록에서 모든 스코프 선택
Client ID 기록 (Secret Key는 선택 사항, 기밀 앱인 경우에만 필요)
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. 설치
git clone <repo>
cd eve
npm install
npm run build3. 구성
mkdir -p ~/.eve-mcp~/.eve-mcp/config.json 생성:
{
"clientId": "deine-client-id-von-ccp",
"callbackUrl": "http://localhost:8834/callback",
"userAgent": "eve-mcp-companion/1.0 (dein-character-name)"
}Secret Key 사용 시 (기밀 앱인 경우):
{
"clientId": "deine-client-id",
"secretKey": "dein-secret-key",
"callbackUrl": "http://localhost:8834/callback",
"userAgent": "eve-mcp-companion/1.0 (dein-character-name)"
}환경 변수를 통한 설정:
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 통합
Claude Code 설정에 MCP 서버를 추가합니다.
옵션 A — settings.json (권장):
파일: ~/.claude/settings.json
{
"mcpServers": {
"eve-online": {
"command": "node",
"args": ["/absoluter/pfad/zu/eve/dist/index.js"],
"env": {
"EVE_MCP_TOKEN_PASSPHRASE": "ein-sicheres-passwort"
}
}
}
}옵션 B — 프로젝트 범위 (프로젝트 디렉토리의 .mcp.json):
{
"mcpServers": {
"eve-online": {
"command": "node",
"args": ["./dist/index.js"],
"env": {
"EVE_MCP_TOKEN_PASSPHRASE": "ein-sicheres-passwort"
}
}
}
}5. 첫 로그인
Claude Code를 시작하고 다음과 같이 입력합니다:
"Verbinde mich mit EVE Online" (EVE Online에 연결해줘)
Claude가 eve_auth_start를 호출하고 로컬 인증 서버를 시작합니다. 브라우저에서 **http://localhost:8834**를 열면 EVE 스타일의 로그인 페이지가 나타납니다. "Authenticate via EVE SSO"를 클릭하고 CCP에 로그인하면 캐릭터 초상화가 포함된 성공 페이지로 리디렉션됩니다. 창을 닫으면 완료됩니다.
아키텍처
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 클라이언트
클라이언트 | 기본 URL | 인증 | 속도 제한 | 캐시 |
ESI |
| OAuth2 Bearer | Error-Limit 헤더 | Expires-헤더 + 사용자 정의 TTL |
zKillboard |
| 없음 | 10 req/s | 10분 |
EVE Tycoon |
| 없음 | Expires-헤더 | 5분 |
위키 |
| 없음 | 없음 | 1시간 |
캐싱
모든 API 응답은 메모리에 캐시됩니다:
데이터 유형 | TTL |
위치 / 함선 / 온라인 | 30초 |
지갑 잔액 | 2분 |
스킬 큐 | 5분 |
시장 가격 / 주문 | 5분 |
zKillboard 통계 | 10분 |
자산 | 30분 |
캐릭터 스킬 | 1시간 |
위키 문서 | 1시간 |
유형 정보 / 성계 정보 | 24시간 |
이름-ID 변환 | 24시간 |
ESI 속도 제한
ESI 클라이언트는 X-ESI-Error-Limit-Remain 및 X-ESI-Error-Limit-Reset 헤더를 추적합니다. 오류 제한이 20 미만으로 떨어지면 재설정될 때까지 요청이 차단됩니다. 420 오류(오류 제한)는 RateLimitError로 발생합니다.
토큰 보안
토큰은
~/.eve-mcp/tokens.json에 저장됩니다.EVE_MCP_TOKEN_PASSPHRASE가 설정된 경우: scrypt 키 파생을 사용한 AES-256-GCM 암호화암호문이 없는 경우: 일반 텍스트 저장 (stderr에 경고 표시)
액세스 토큰은 만료 2분 전에 자동으로 갱신됩니다.
리프레시 토큰은 갱신할 때마다 새로 고쳐집니다 (PKCE 휘발성 토큰 패턴).
개발
# Dev-Mode (tsx, kein Build noetig)
npm run dev
# Build
npm run build
# Ausfuehren
npm start새 도구 추가
src/tools/아래의 적절한 파일에 핸들러 추가server.tool(name, description, zodSchema, handler)패턴 사용오류는 항상
formatToolError(err)로 반환ESI 호출은 적절한 캐시 TTL과 함께
esi.get()/esi.publicGet()사용유형 ID는
resolveTypeName()/resolveTypeId()로 확인
문제 해결
"Config not found" — ~/.eve-mcp/config.json을 생성하거나 EVE_MCP_CLIENT_ID를 설정하세요.
"Authentication required" — eve_auth_login 또는 eve_auth_start를 호출하세요.
"Token refresh failed" — 리프레시 토큰이 만료되었습니다. 다시 로그인하세요.
"ESI error limit reached" — 잘못된 요청이 너무 많습니다. 자동으로 대기합니다.
포트 8834 사용 중 — config.json에서 다른 포트를 설정하고 CCP에서 콜백 URL을 수정하세요.
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