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
76 changes: 76 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
# Contributing to eve-mcp

Thank you for your interest in contributing! `eve-mcp` is an MCP server
that exposes the EVE (Earth Virtual Expert) API as a set of MCP tools.
See the [README](README.md) for what the project does and how to use it.

## Development setup

Clone with submodules and install with Poetry:

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

Then install the pre-commit hooks:

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

## Code quality

Pre-commit runs black, isort, autoflake, mypy, pylint, detect-secrets,
and pytest with coverage. Run the full suite locally before pushing:

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

If a hook fails, fix the underlying issue rather than bypassing the
hook. If `detect-secrets` flags a false positive, update the baseline:

```bash
poetry run detect-secrets scan --baseline .secrets.baseline
```

## Testing

```bash
poetry run pytest
```

New behaviour should ship with tests, and coverage is expected to stay
at 100%.

## Pull requests

- Fork the repo and branch off `main`.
- Use a short branch prefix: `feat/`, `fix/`, `docs/`, or `chore/` etc.
- Keep each PR focused on one logical change.
- In the PR description, explain *what* changed and *why*, and link
any related issue.
- Commit messages: imperative mood, focused on the *why*.
- Be ready to iterate on review feedback.

## Reporting issues

Open a [GitHub issue](https://github.com/FrontierDevelopmentLab/eve-mcp/issues)
with:

- steps to reproduce,
- expected vs actual behaviour,
- your environment (Python version, OS, relevant package versions).

## For maintainers

Maintainers can push branches directly to the repo; the same branch
naming, PR, and review expectations apply.
23 changes: 20 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,13 @@
[![CI](https://github.com/FrontierDevelopmentLab/eve-mcp/actions/workflows/main.yml/badge.svg)](https://github.com/FrontierDevelopmentLab/eve-mcp/actions/workflows/main.yml)
[![Python](https://img.shields.io/badge/python-3.11%20%7C%203.12%20%7C%203.13%20%7C%203.14-blue)](https://github.com/FrontierDevelopmentLab/eve-mcp)
[![License: MIT](https://img.shields.io/badge/license-MIT-green)](LICENSE)
[![Status: Stable](https://img.shields.io/badge/status-stable-brightgreen)](https://github.com/FrontierDevelopmentLab/eve-mcp/releases)

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.
EVE-MCP is part of an initiative by [Trillium Technologies](https://trillium.tech/) and ESA to realize the vision of Earth system predictability (ESP). You can read about the ESP vision [here](https://eslab.ai/esp).

## Tools

Expand Down Expand Up @@ -79,6 +78,24 @@ against all files:
poetry run pre-commit run --all-files
```


## Contributing

See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup,
pre-commit hooks, and PR conventions.

## Acknowledgements

Originally created by the GeoSTARS (STARS: Scientific Testing of Agentic Reasoning) team:
(
[James Walsh](https://github.com/dead-water),
[Russell Spiewak](https://github.com/r-spiewak),
[Will Fawcett](https://github.com/will-fawcett),
and [Raúl Ramos](https://github.com/rramosp)
).
Supported by the ESA Phi-Lab as part of Trillium Technologies Earth Systems Lab [ESL](https://eslab.ai/).


## License

MIT — see [LICENSE](LICENSE).
Expand Down
2 changes: 1 addition & 1 deletion lib/eve-api
6 changes: 3 additions & 3 deletions poetry.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

64 changes: 33 additions & 31 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,48 +1,39 @@
[tool.poetry]
[project]
dynamic = ["version"]
name = "eve-mcp"
version = "0.0.1"
description = "MCP server for EVE"
requires-python = ">=3.11"
keywords = ["mcp", "model-context-protocol", "earth-observation", "eve", "esa"]

[project.urls]
Repository = "https://github.com/FrontierDevelopmentLab/eve-mcp"

[tool.poetry]
description = "MCP server for EVE (Earth Virtual Expert)"
authors = [
"r-spiewak <63987228+r-spiewak@users.noreply.github.com>",
"dead-water <james.walsh@trillium.tech>",
"rramosp",
"will-fawcett-trillium"
]
readme = "README.md"
packages = [{include = "eve_mcp", from = "src"}]
license = "MIT"
# license-files = ["LICENSE"] # optional
keywords = ["sample", "setuptools", "development"] # Optional

# Classifiers help users find your project by categorizing it.
#
# For a list of valid classifiers, see https://pypi.org/classifiers/
classifiers = [ # Optional
# How mature is this project? Common values are
# 3 - Alpha
# 4 - Beta
# 5 - Production/Stable
"Development Status :: 3 - Alpha",

# Indicate who your project is intended for
classifiers = [
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
"Topic :: Software Development :: Build Tools",

# Pick your license as you wish
# "License :: OSI Approved :: MIT License",


# Specify the Python versions you support here. In particular, ensure
# that you indicate you support Python 3. These classifiers are *not*
# checked by "pip install". See instead "python_requires" below.
"Intended Audience :: Science/Research",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3",

"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Programming Language :: Python :: 3 :: Only",
"Topic :: Scientific/Engineering",
"Framework :: AsyncIO",
]
packages = [{include = "eve_mcp", from = "src"}]
version = "0.0.0" # Placeholder; gets replaced dynamically by file


[tool.poetry.dependencies]
Expand Down Expand Up @@ -120,7 +111,7 @@ addopts = "-v --tb=short --basetemp=/tmp/pytest"

[tool.coverage.run]
source = ["src"]
omit = ["tests/**/conftest.py", "tests/*"]
omit = ["tests/**/conftest.py", "tests/*", "src/eve_mcp/_version.py"]
# For avoiding sqlite3 concurrency issues on CIFS drives:
data_file = "/tmp/eve_mcp/.coverage"

Expand All @@ -147,6 +138,17 @@ exclude_also = [

ignore_errors = true

[tool.poetry.requires-plugins]
poetry-dynamic-versioning = { version = ">=1.0.0,<2.0.0", extras = ["plugin"] }

[tool.poetry-dynamic-versioning]
enable = true
vcs = "none"

[tool.poetry-dynamic-versioning.from-file]
source = "src/eve_mcp/_version.py"
pattern = "^__version__\\s*=\\s*[\"']?(\\d+\\.\\d+\\.\\d+)[\"']?"

[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"
requires = ["poetry-core", "poetry-dynamic-versioning>=1.0.0,<2.0.0"]
build-backend = "poetry_dynamic_versioning.backend"
3 changes: 3 additions & 0 deletions src/eve_mcp/_version.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
"""Version information for eve-mcp."""

__version__ = "1.0.0"
Loading