eve-online-mcp
EVE Online MCP library
Shared, runtime-independent TypeScript source for the local eve-online-mcp
application and the future eve-online-hosted-mcp Workers service. This public
repository is consumed as a Git submodule pinned to a reviewed commit, not as an
independently published npm package. Licensed AGPL-3.0-only; extracted from
HammoTime/eve-online-mcp at 05ca567.
Runtime boundary
src/openapi.tsowns the read-only operation catalog and manually reviewed safe POST allowlist;openapi/esi-openapi.jsonis the canonical pinned schema.src/esi-client.tsowns validated ESI requests, response limits, pagination, freshness metadata and bounded per-client caching. Protected cache keys vary by a SHA-256 digest of the access token. Public requests never obtain tokens.src/auth.tsandsrc/token-identity.tsprovide token contracts, refresh and rotation callbacks, scope inspection, and verified EVE SSO identities.src/server.tsregisters transport-independent MCP tools/resources/prompts.Skill catalogs, dependency graphs, planning, entity resolution, character context and market snapshots are shared here.
The runtime uses Web APIs and has no Node filesystem, process, HTTP listener, browser-launch, or Cloudflare binding dependency. File loading, SSO callbacks, credential persistence, archive extraction, scheduling, and static-data storage belong to each application. Schema maintenance scripts currently live in the local application and update this submodule's pinned document.
Integration
git submodule add https://github.com/HammoTime/eve-online-mcp-lib.git lib
git submodule update --init --recursiveImport the source directly and compile/bundle it with your application:
import { OperationCatalog } from "./lib/src/openapi.js";
import { EsiClient } from "./lib/src/esi-client.js";
import { createEveServer } from "./lib/src/server.js";
const catalog = new OperationCatalog(pinnedDocument);
const client = new EsiClient(catalog, sessionTokenProvider, {
userAgent: "my-eve-service/1.0 (contact@example.com)",
});
const server = createEveServer(catalog, client, {
identity: { name: "my-eve-service", version: "1.0.0" },
authentication: sessionCharacterAuthentication,
staticData: applicationStaticDataSource,
});Applications supply @modelcontextprotocol/server, jose, and zod using the
compatible ranges in package.json. The .js imports resolve to .ts source
during TypeScript compilation. Build the submodule with the consumer; no npm
workspace, sibling checkout, or separately published artifact is required.
Create a separate EsiClient, token provider, authentication adapter and MCP
server for each user session. Never use a global mutable default character or
credential store across users. Authorization handles are bound to their client
instance. The in-memory ESI cache is instance-local and credential-sensitive;
this library does not provide persistent Workers caching or hosted sessions.
Refresh providers must receive an identity-verification callback and a durable
rotation callback in authenticated applications.
StaticDataSource.initialize() returns one validated SkillCatalog and its
freshness status for a plan. A D1 adapter and the four-hour ETag-only update check
will be implemented in the hosted application in the next stage. They are not
implemented here.
Development
Use .devcontainer/devcontainer.json, or the equivalent Docker environment:
docker build --target development -f .devcontainer/Dockerfile -t eve-online-mcp-lib-dev .
docker run --rm --user node -v "$PWD:/workspace" -w /workspace eve-online-mcp-lib-dev sh -lc "npm ci && npm run validate"Validation includes formatting, strict lint, typechecking, runtime compilation without Node globals, coverage tests, a browser-target bundle check, and a build. Publish library commits before updating a consumer's Git submodule pointer.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/HammoTime/eve-online-mcp-lib'
If you have feedback or need assistance with the MCP directory API, please join our Discord server