Metadata-Version: 2.4
Name: familiar
Version: 0.0.2.dev52
Summary: Your familiar across New Eden — a read-only EVE Online MCP server.
License: MIT License
        
        Copyright (c) 2026 Hiddenden
        
        Permission is hereby granted, free of charge, to any person obtaining a copy of this software and 
        associated documentation files (the "Software"), to deal in the Software without restriction, including 
        without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 
        copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the 
        following conditions:
        
        The above copyright notice and this permission notice shall be included in all copies or substantial 
        portions of the Software.
        
        THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT 
        LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO 
        EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 
        IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE 
        USE OR OTHER DEALINGS IN THE SOFTWARE.
License-File: LICENSE
Requires-Python: >=3.11
Requires-Dist: cryptography>=42.0.0
Requires-Dist: fastmcp>=2.3.0
Requires-Dist: httpx>=0.27.0
Description-Content-Type: text/markdown

# familiar

> Your familiar across New Eden — an EVE Online MCP server that lets a local AI see your whole account and the universe, and act on your behalf when you ask.

In EVE, your familiar isn't a cat on the windowsill. It's the companion that rides along through New Eden, sees what you see, remembers what you can't, and fetches — or does — whatever you ask. `familiar` is exactly that: an [MCP](https://modelcontextprotocol.io) server that gives a local AI (Claude Code, Claude Desktop, Cowork) a complete window into your EVE Online account and the entire game universe, plus hands to act on it.

Ask your familiar where your assets are, what your skill queue looks like, what Tritanium sells for in Jita, the safest route to a lowsec system, or whether a fit is worth building — and have it set a waypoint or draft a mail when you say so. It looks, it finds, it reports back, and it acts when asked.

## Principles

- **Safe by default.** Reading is free; every *write* — sending mail, setting waypoints, editing contacts/fittings/PI, fleet commands — is previewed before it runs (nothing happens without `confirm=true`) and recorded in an audit log. Writes are on by default but can be turned off entirely with `familiar writes disable`. The AI can see everything and changes nothing without your explicit confirm.
- **Local-first.** Runs on your own machine. Your refresh token and account data never leave your control.
- **Everything, eventually.** The goal is full coverage: the ESI scopes you grant (character *and* corp, read and write), plus the complete static universe. Built in phases so it actually ships.

## How it works

Two data sources sit behind the server:

- **ESI** (the [EVE Swagger Interface](https://esi.evetech.net/)) — the official REST API. Public endpoints (market, universe, industry indices) need no login. Character and corp data (wallet, assets, skills, industry, contracts, mail, location, and more) come through EVE SSO with **read and write OAuth2 scopes** across both character and corp; write scopes power the opt-in actions.
- **SDE** (the [Static Data Export](https://developers.eveonline.com/resource/resources)) — the full static dataset of items, blueprints, systems and stations, cached locally for fast lookups and anything name- or recipe-based.

Built in **Python with FastMCP**, OAuth via PKCE with a localhost callback, refresh token stored encrypted on disk. ESI `Expires` headers are respected for caching, the rolling ESI error limit is honored with back-off, and (eventually) the SDE is loaded into a local store.

## Setup

Requires [uv](https://docs.astral.sh/uv/).

```bash
uv sync                 # install
uv run familiar login   # browser EVE SSO login; run once per character
uv run familiar status  # list logged-in characters
```

Re-run `login` for each character (switch EVE accounts in the browser as needed); they all live in one encrypted store. Changing the requested scopes requires logging in again.

### Connect to Claude

Claude Code:

```bash
claude mcp add familiar -- uv --directory /path/to/familiar run familiar
```

Claude Desktop — add this to `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "familiar": {
      "command": "uv",
      "args": ["--directory", "/path/to/familiar", "run", "familiar"]
    }
  }
}
```

Then ask in natural language — "what's Tritanium worth in Jita?", "how much ISK across all my characters?", "where are my characters?".

### Write actions

Write actions (send mail, set waypoints, edit contacts/fittings, fleet commands) are **on by default**. Even so, every write tool returns a dry-run preview unless called with `confirm=true` per call, and each executed write is recorded in an audit log — so nothing changes by accident.

To opt out and block all writes globally:

```bash
uv run familiar writes disable   # turn writes off (uv run familiar writes enable to re-allow)
```

## Roadmap

Built in phases. Each phase is independently useful, so the project stays shippable.

**Phase 0 — Skeleton**
- Repo, project scaffold, FastMCP server that starts and exposes a health/ping tool.
- App registered on [developers.eveonline.com](https://developers.eveonline.com/).

**Phase 1 — Public lookups (no auth)**
- Market: prices and order book for any item in any hub, spreads between hubs.
- Universe via SDE: items, systems, stations, security, basic route/jumps.
- Quick win: useful before any OAuth complexity exists.

**Phase 2 — Account read (OAuth)**
- EVE SSO login flow, encrypted refresh token storage.
- Wallet, assets (search across characters), skills + skill queue, current location and clones.

**Phase 3 — Industry & contracts**
- Industry jobs, blueprints (SDE-backed), manufacturing cost/profit lookups.
- Personal and corp contracts, market orders.

**Phase 4 — Everything else**
- Mail, planetary interaction, loyalty points, fittings, corp roles.
- zKillboard integration for kill/PvP data.

**Phase 5 — Polish**
- Caching, error-limit safety, packaging, setup docs. Optional: prep a public, generic single-user release as a portfolio case.

## Status

Phases 0–4 done on `dev`, plus Phase 5 caching/back-off and docs: public market & universe lookups; EVE SSO (PKCE) login with an encrypted, multi-character token store; full character **and** corp coverage across skills, wallet, assets, industry, trade, structures, killmails, profile, fleet, mail, contacts, fittings, PI and more; and opt-in, audited write actions. ~80 tools. Remaining: the full SDE bulk-load. `main` stays untouched until the first complete version is ready.

## License

MIT