Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
80 changes: 79 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,82 @@
# EVE MCP

An MCP server for EVE.
An [MCP](https://modelcontextprotocol.io/) server that exposes the
[EVE](https://eve-chat.chat) Earth Observation chat API as a set of MCP
tools.

> **Status: alpha (v0.0.1) — work in progress.** APIs, tool names, and
> wire formats may change without notice. Not yet recommended for
> production use.

## Tools

The server registers the following MCP tools:

- `query_eve` — query the EVE RAG system and return the assembled answer
- `list_eve_collections` — list publicly available document collections
- `check_eve_health` — unauthenticated health check against the EVE API
- `extract_factuality_issues` — analyze a Google Earth Engine Python
script and surface scientific assumptions worth verifying
- `assess_factuality_issue` — produce an expert-style assessment of an
issue raised against a GEE script

## Installation

The project uses [Poetry](https://python-poetry.org/) and a Git
submodule for the upstream `eve-api` client.

```bash
git clone --recurse-submodules https://github.com/<org>/eve-mcp.git
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
git clone --recurse-submodules https://github.com/<org>/eve-mcp.git
git clone --recurse-submodules https://github.com/FrontierDevelopmentLab/eve-mcp.git

cd eve-mcp
poetry install
```

If you cloned without `--recurse-submodules`:

```bash
git submodule update --init --recursive
```

Supported Python versions: 3.11–3.14.

## Configuration

The server authenticates to EVE on first tool invocation using the
following environment variables:

| Variable | Required | Default | Purpose |
| --------------- | -------- | ----------------------------- | -------------------------------- |
| `EVE_EMAIL` | yes | — | EVE account email |
| `EVE_PASSWORD` | yes | — | EVE account password |
| `EVE_BASE_URL` | no | `https://api.eve-chat.chat` | EVE API base URL |

## Running the server

Over stdio (the standard MCP transport):

```bash
poetry run python -m eve_mcp.server
```

## Development

Install the pre-commit hooks once:

```bash
poetry run pre-commit install
```

Run the full hook suite (black, isort, mypy, pylint, pytest+coverage)
against all files:

```bash
poetry run pre-commit run --all-files
```

## License

MIT — see [LICENSE](LICENSE).

## Copyright

© 2026 Trillium Technologies Ltd.
6 changes: 1 addition & 5 deletions src/eve_mcp/__init__.py
Original file line number Diff line number Diff line change
@@ -1,5 +1 @@
"""EVE MCP server and client."""

from .client import EVEMCPClient

__all__ = ["EVEMCPClient"]
"""EVE MCP server."""
109 changes: 0 additions & 109 deletions src/eve_mcp/client.py

This file was deleted.

14 changes: 1 addition & 13 deletions src/eve_mcp/config.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,3 @@
"""This file contains module constants."""
"""Module-level configuration constants."""

import os
import sys
from pathlib import Path

PYTHON_BIN = os.getenv(
"EVE_MCP_PYTHON",
sys.executable,
)
SERVER_MODULE = "eve_mcp.server"
PYTHON_PATH = str(Path(__file__).resolve().parent.parent)
PYTHON_PATH += ":" + os.path.join(
str(Path(__file__).parent.parent.parent), "lib", "eve-api", "src"
)
5 changes: 0 additions & 5 deletions tests/test_client.py

This file was deleted.

Loading