Skip to main content
Glama
README.md
# eve-fit-mcp

**English** | [Русский](README.ru.md)

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.

## Requirements

- [Node.js](https://nodejs.org) **22.5 or newer** (any current LTS is fine)
- [git](https://git-scm.com)
- 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

```bash
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):

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

#### Claude Code

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

or a `.mcp.json` in the project root:

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

#### Codex

`~/.codex/config.toml`:

```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:

```json
{ "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

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

## License

[MIT](LICENSE)

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