eve-fit
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@eve-fitValidate my Rifter fit and compute DPS and EHP"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 |
| Find items (ships, modules, rigs, charges, drones) by name → typeId |
| Full attribute dump for one item: CPU/PWG, slots, damages, resistances, skill requirements |
| 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 |
| 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)
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 buildNote: 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.jsor 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:updateLicense
Available Tools
4 toolseve_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.
| Name | Required | Description | Default |
|---|---|---|---|
| low | No | Low-slot modules | |
| mid | No | Mid-slot modules | |
| high | No | High-slot modules, in order | |
| rigs | No | Rigs | |
| drones | No | Drone typeIds carried | |
| skills | No | Skill level overrides {skillTypeId: level}; default All-5 | |
| hullTypeId | Yes | Ship typeId | |
| accountType | No | Account clone state; Alpha uses CCP cloneGrades skill limits, default Omega | omega |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| typeId | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| typeIds | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results | |
| query | Yes | Item name substring, e.g. "Rifter", "Shield Extender" |
TDQS
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.
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.
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.
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.
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.
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.
4 tool updates
v0.1.0- First observed
eve_evaluate_fit - First observed
eve_get_item - First observed
eve_price_fit - First observed
eve_search_items
TDQS
Scored across 4 tools
Each tool has a distinct purpose: searching items, retrieving item attributes, evaluating fits, and pricing fits. There is no overlap in their functionality.
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.
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.
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
Related MCP Connectors
Aircraft intelligence for AI agents: valuations with uncertainty bands, FAA registry lookups, cost of ownership, comparable aircraft, fleet search, airworthiness directives and STCs, market metrics and forecasts, verified value reports, pre-buy diligence checklists, logbook search and a watchlist. 38 tools; free tier with OAuth or a Windsock API key.
Pay-per-use tool marketplace for AI agents. Search, price-check, and call APIs via MCP.
SEC filings and financial data for AI agents: 59 tools for statements, valuation and supply chains.
Discover, inspect and run 63,000+ agent tools from one balance. Pay per call, no subscriptions.
Related MCP Servers
- AlicenseAqualityFmaintenanceProvides 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.85MIT
- AlicenseNot gradedqualityDmaintenanceAn 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.2MIT
- AlicenseNot gradedqualityDmaintenanceRemote 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
- AlicenseAqualityDmaintenanceEnables AI assistants to query CS2 item real-time prices, K-line data, market index, wear, and inspect images via the SteamDT API.132MIT