From 40f9bd643578ffff3d8cf434615ad70cea2b7bc6 Mon Sep 17 00:00:00 2001 From: William Fawcett Date: Fri, 1 May 2026 16:02:43 +0100 Subject: [PATCH 1/3] Bump to 1.0.0 for first public release - Switch to poetry-dynamic-versioning sourced from src/eve_mcp/_version.py - Mark Production/Stable, fix classifiers (MIT, Scientific/Engineering, AsyncIO), add [project] block with repo URL and meaningful keywords - Pin lib/eve-api submodule to its v1.0.0 tag - Drop alpha status block in README, add Stable badge - Add CONTRIBUTING.md (dev setup, code quality, PR conventions) --- CONTRIBUTING.md | 76 +++++++++++++++++++++++++++++++++++++++++ README.md | 5 +-- lib/eve-api | 2 +- pyproject.toml | 64 +++++++++++++++++----------------- src/eve_mcp/_version.py | 3 ++ 5 files changed, 114 insertions(+), 36 deletions(-) create mode 100644 CONTRIBUTING.md create mode 100644 src/eve_mcp/_version.py diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..35528fd --- /dev/null +++ b/CONTRIBUTING.md @@ -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. diff --git a/README.md b/README.md index 50a3f64..bcaf5b5 100644 --- a/README.md +++ b/README.md @@ -5,15 +5,12 @@ [![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. - ## Tools The server registers the following MCP tools: diff --git a/lib/eve-api b/lib/eve-api index 57265a8..35d7097 160000 --- a/lib/eve-api +++ b/lib/eve-api @@ -1 +1 @@ -Subproject commit 57265a8ebbe6cb4c1f826a33f84ad5487bbc427c +Subproject commit 35d7097369d3a7d386d016716cb245807c56939f diff --git a/pyproject.toml b/pyproject.toml index 8931422..78cbaad 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,14 @@ -[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 ", @@ -9,40 +16,24 @@ authors = [ "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] @@ -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" @@ -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" diff --git a/src/eve_mcp/_version.py b/src/eve_mcp/_version.py new file mode 100644 index 0000000..0eec9e5 --- /dev/null +++ b/src/eve_mcp/_version.py @@ -0,0 +1,3 @@ +"""Version information for eve-mcp.""" + +__version__ = "1.0.0" From 63c1456ca158ac3610e07d5a29d20570676a6f2e Mon Sep 17 00:00:00 2001 From: William Fawcett Date: Fri, 1 May 2026 16:05:18 +0100 Subject: [PATCH 2/3] Add acknowledgements and contributing --- README.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/README.md b/README.md index bcaf5b5..325dff9 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,8 @@ An [MCP](https://modelcontextprotocol.io/) server that exposes the [EVE](https://eve-chat.chat) Earth Observation chat API as a set of MCP tools. +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 The server registers the following MCP tools: @@ -76,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). From 08337d01b6e7c4d776cf24a8ae51f16a63d3c936 Mon Sep 17 00:00:00 2001 From: William Fawcett Date: Fri, 1 May 2026 16:06:43 +0100 Subject: [PATCH 3/3] update lock file --- poetry.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/poetry.lock b/poetry.lock index dcae863..0f4b3f6 100644 --- a/poetry.lock +++ b/poetry.lock @@ -852,10 +852,10 @@ idna = ">=2.0.0" [[package]] name = "eve-api" -version = "0.0.0" +version = "1.0.0" description = "Minimal authenticated HTTP client for the EVE (Earth Virtual Expert) API" optional = false -python-versions = ">=3.10,<4" +python-versions = ">=3.11,<4" groups = ["main"] files = [] develop = true @@ -2891,4 +2891,4 @@ type = ["pytest-mypy"] [metadata] lock-version = "2.1" python-versions = "^3.11" -content-hash = "67f632449256df2f2ecdc38778558e06cf682d03e23a61952b42c159c11312dc" +content-hash = "6205ff570c06fbe1981353471d5b00ebe1c967445e4f826546cfe9537bae5dbe"