Skip to main content
Glama

eve-fit-mcp

English | Русский

MCP server for EVE Online ship fitting. Lets your AI agent pick real ship modules, validate a fit against fitting limits and compute real numbers instead of hallucinating them.

Powered by official CCP data (SDE) and live market prices.

Tools

Tool

What it does

eve_search_items

Find items (ships, modules, rigs, charges, drones) by name → typeId

eve_get_item

Full attribute dump for one item: CPU/PWG, slots, damages, resistances, skill requirements

eve_evaluate_fit

Validate a fit and compute stats: fitting limits, DPS per weapon group and drones, EHP per damage type, resistances, shield regen, capacitor stability, speed/agility

eve_price_fit

Jita 4-4 prices (min sell / max buy), cached ~30 min

Skills are assumed All-5 unless overridden via the skills parameter.

Related MCP server: EVE ESI Tool

Requirements

  • Node.js 22.5 or newer (any current LTS is fine)

  • git

  • Any MCP-capable agent: OpenCode, Claude Code, Codex, etc.

Install

The easy way: let your agent do it

Paste this into your agent:

Install the MCP server from https://github.com/remandorsn/eve-fit-mcp:
1. git clone https://github.com/remandorsn/eve-fit-mcp.git ~/eve-fit-mcp
2. cd ~/eve-fit-mcp && npm install && npm run build
3. Register it as a local MCP server named "eve-fit" in your own config:
   command: node, args: [~/eve-fit-mcp/dist/index.js]  (use the absolute path)
On first start the server downloads the EVE SDE (~100 MB, a few minutes) automatically.
After that, verify it works by searching for "Rifter" via eve_search_items.

Manual setup

git clone https://github.com/remandorsn/eve-fit-mcp.git
cd eve-fit-mcp
npm install
npm run build

Note: on first start the server downloads and imports the EVE SDE into data/ (~100 MB download, a few minutes). You only do nothing — it happens by itself. To refresh data after a game expansion, run npm run sde:update.

Then point your client at node <path-to-repo>/dist/index.js:

OpenCode

opencode.json in your project (or global config):

{
  "mcp": {
    "eve-fit": {
      "type": "local",
      "command": ["node", "/absolute/path/to/eve-fit-mcp/dist/index.js"]
    }
  }
}

Claude Code

claude mcp add eve-fit -- node /absolute/path/to/eve-fit-mcp/dist/index.js

or a .mcp.json in the project root:

{
  "mcpServers": {
    "eve-fit": { "command": "node", "args": ["/absolute/path/to/eve-fit-mcp/dist/index.js"] }
  }
}

Codex

~/.codex/config.toml:

[mcp_servers.eve-fit]
command = "node"
args = ["/absolute/path/to/eve-fit-mcp/dist/index.js"]

Any other MCP client

The server speaks standard MCP over stdio, so any client with a JSON config works:

{ "command": "node", "args": ["/absolute/path/to/eve-fit-mcp/dist/index.js"] }

Example prompts

  • «Собери фиты на Rifter под 15 млн ISK, нужно 80+ DPS»

  • "Compare an Ishtar heavy-drone boat vs a VNI for Abyssal Decks, include EHP and DPS"

  • "Price this Hyperion fit at Jita and tell me the cheapest alternative for the mods"

Development

npm test        # unit + integration tests of the dogma engine
npm run dev     # run the server from source (tsx)
npm run sde:update

License

MIT

Available Tools

4 tools
eve_evaluate_fitEvaluate a ship fitA

Validate and compute stats for a ship fit: CPU/powergrid/slot limits, EHP vs each damage type, resistances, shield regen/boost, DPS per weapon group and drones, capacitor stability estimate, speed/agility. Skills assumed All-5 unless overridden. Always call this instead of guessing numbers.

ParametersJSON Schema
NameRequiredDescriptionDefault
lowNoLow-slot modules
midNoMid-slot modules
highNoHigh-slot modules, in order
rigsNoRigs
dronesNoDrone typeIds carried
skillsNoSkill level overrides {skillTypeId: level}; default All-5
hullTypeIdYesShip typeId
accountTypeNoAccount clone state; Alpha uses CCP cloneGrades skill limits, default Omegaomega

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the behavioral burden. It discloses the skill assumption ('Skills assumed All-5 unless overridden') and enumerates the computed categories, making the tool's behavior fairly transparent. It does not explicitly state read-only semantics or error behavior, but 'Validate and compute' implies a non-mutating operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with no filler. The main action and computed outputs are front-loaded, and the skill assumption and usage maxim are concise and valuable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex tool with 8 parameters, nested objects, and no output schema, the description gives a solid list of return-value categories and the key input assumption. It stops short of explaining how validation errors are surfaced or how module ordering affects output, but the overall guidance is sufficient for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description reinforces the overall purpose and mentions drones and skill overrides, but it does not add meaningful detail about individual parameters like chargeTypeId or accountType beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Validate and compute') with a clear resource ('a ship fit') and lists concrete outputs like CPU/powergrid, EHP, resistances, DPS, and capacitor. This clearly distinguishes it from sibling tools like eve_get_item or eve_search_items, which focus on item lookup rather than fit evaluation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit context with 'Always call this instead of guessing numbers,' telling the agent when this tool is the right choice. It does not explicitly name alternatives or exclusion conditions, but the instruction is strong and unambiguous for fit-stat computations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

eve_get_itemGet item detailsA

Full dogma attribute dump for one item type: fitting needs, slots, damages, resistances, skills required. Use after search to inspect candidates.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeIdYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries full behavioral disclosure. It implies a read-only lookup by saying 'dump' and details the data categories returned. However, it does not mention error conditions, response size or latency, or any side effects. For a simple get operation this is adequate but not deeply transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no waste: the first states purpose and content, the second gives usage timing. Information is front-loaded and easily scannable by an agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter tool with no output schema, the description covers what the tool returns and when to use it, which is the essential context. It lacks explicit return-shape details and error handling, but those gaps are minor given the simplicity and the sibling context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The sola parameter typeId has 0% schema description coverage, and the description never references it by name. The phrases 'one item type' and 'inspect candidates' imply the parameter is the ID of a search result, but format, requiredness, and mapping to candidates are left implicit. The self-explanatory name helps, but the description does not fully compensate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses 'Full dogma attribute dump for one item type' as a specific action on a specific resource, and lists the returned content (fitting needs, slots, damages, resistances, skills required). It differentiates itself from siblings by noting 'after search' and 'one item type', separating it from search, fit evaluation, and pricing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly instructs 'Use after search to inspect candidates,' giving a clear workflow context relative to the search sibling. It implies this tool is for examining individual search results rather than evaluating or pricing fits, though it does not name those exclusions directly. This is sufficient for an agent to choose correctly in most cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

eve_price_fitPrice items at JitaA

Jita 4-4 prices for a list of typeIds: lowest sell order (buy cost) and highest buy order (sell value). Cached ~30 min. Use totals to check a fit against a budget.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeIdsYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden, and it does disclose key behavior: Jita 4-4 market scope, lowest sell/highest buy order selection, and a ~30 minute cache. It does not describe output format or edge cases, but the core operational behavior is transparent enough for a simple read-only price query.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three short sentences, each earning its place: what the tool returns, the cache caveat, and a practical usage example. It is front-loaded with the core pricing behavior and avoids filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter pricing tool with no output schema, the description provides enough context: the market location, the two price values, and the budget-checking use case. It could more explicitly describe the response shape or behavior for invalid/missing typeIds, but the essentials are present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter, typeIds, is mentioned as a 'list of typeIds,' but the description adds little beyond the schema's property name and type. Since schema description coverage is 0%, the description should compensate more by explaining constraints like the 1-60 item limit or the meaning of a typeId. It is adequate but not richly informative.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly specifies what the tool does: it retrieves Jita 4-4 market prices for a list of typeIds, distinguishing lowest sell order (buy cost) from highest buy order (sell value). This is specific enough to differentiate it from siblings like eve_get_item and eve_evaluate_fit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a concrete use case: 'Use totals to check a fit against a budget.' It implies the tool is for pricing lists of items in bulk, not for single-item lookup or search. It does not explicitly name alternatives or exclusions, but the context is reasonably clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

eve_search_itemsSearch EVE itemsA

Find EVE Online items (ships, modules, rigs, charges, drones) by name substring. Returns typeId needed by the other eve_* tools. Search in English.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results
queryYesItem name substring, e.g. "Rifter", "Shield Extender"

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of behavioral disclosure. It usefully reveals substring matching and an English-only search constraint, but it does not mention result set shape, behavior on no matches, or read-only/side-effect status. It is adequate but lacks deeper behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two compact sentences, front-loaded with the core action and quickly adding the critical output and language constraint. No filler or redundant restatement of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity, two-parameter search tool with no output schema, the description covers the essential elements: what is searched, how matches work, the language restriction, and the purpose of the return value. It is sufficient for an agent to call the tool correctly, though it stops short of describing the exact response structure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description reinforces 'name substring' and 'English only', which aligns with the query parameter, but it does not add meaningful semantics beyond what the schema already documents.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action ('Find EVE Online items by name substring') and identifies the resource domain (ships, modules, rigs, charges, drones). It also explains the key output (typeId), which positions it well among siblings, though it does not explicitly contrast itself with them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The statement 'Returns typeId needed by the other eve_* tools' implies when to use this tool: when you need to resolve an item name to a typeId before using other eve_* tools. However, it does not explicitly name alternatives or state when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 4 tool updatesv0.1.0
    • First observedeve_evaluate_fit
    • First observedeve_get_item
    • First observedeve_price_fit
    • First observedeve_search_items

TDQS

A4.2/5.0

Scored across 4 tools

Disambiguation5/5

Each tool has a distinct purpose: searching items, retrieving item attributes, evaluating fits, and pricing fits. There is no overlap in their functionality.

Naming Consistency5/5

All tools follow the same eve_verb_noun pattern (eve_search_items, eve_get_item, eve_evaluate_fit, eve_price_fit). Minor singular/plural variance is inconsequential.

Tool Count5/5

Four tools is well-scoped for a dedicated EVE fitting server. Each tool covers a distinct part of the fitting workflow without redundancy or bloat.

Completeness5/5

The toolset covers the complete core workflow: search items, inspect item details, evaluate a fit, and price a fit. No critical operations are missing for the stated purpose.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    F
    maintenance
    Provides real-time access to Path of Exile 2 game data including currency exchange rates, item prices, and ladder meta-build statistics. It also enables LLMs to search the community wiki and retrieve datamined game information from public APIs.
    8
    5
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that integrates EVE Online's ESI API with AI assistants to enable natural language interaction with character data, market information, and assets. It provides 22 tools for managing skills, wallet balances, ship fittings, and more directly through AI-powered clients.
    2
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Remote MCP server for EVE Online that validates ship fittings with actual stats, DPS/EHP, and live market prices, enabling LLMs to answer whether a fit works and what it costs.
    GPL 3.0
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to query CS2 item real-time prices, K-line data, market index, wear, and inspect images via the SteamDT API.
    13
    2
    MIT