From d55291e75e61f6186cf5389dd7252ba5508673e1 Mon Sep 17 00:00:00 2001 From: Jan Nedbal Date: Tue, 14 Apr 2026 19:33:00 +0200 Subject: [PATCH] mcp: scaffold metin_release_mcp package and pyproject entry --- pyproject.toml | 4 ++++ src/metin_release_mcp/__init__.py | 9 +++++++++ src/metin_release_mcp/__main__.py | 5 +++++ src/metin_release_mcp/server.py | 16 ++++++++++++++++ 4 files changed, 34 insertions(+) create mode 100644 src/metin_release_mcp/__init__.py create mode 100644 src/metin_release_mcp/__main__.py create mode 100644 src/metin_release_mcp/server.py diff --git a/pyproject.toml b/pyproject.toml index 07cea61..e4f9796 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -22,9 +22,13 @@ dev = [ "pytest>=8", "pytest-mock>=3", ] +mcp = [ + "mcp>=1.0", +] [project.scripts] metin-release = "metin_release.cli:main" +metin-release-mcp = "metin_release_mcp.server:main" [tool.setuptools.packages.find] where = ["src"] diff --git a/src/metin_release_mcp/__init__.py b/src/metin_release_mcp/__init__.py new file mode 100644 index 0000000..d33771c --- /dev/null +++ b/src/metin_release_mcp/__init__.py @@ -0,0 +1,9 @@ +"""Thin MCP server wrapping the metin-release CLI. + +Exposes each Phase 1 ``release …`` subcommand as an MCP tool. The server +does no business logic of its own: it maps tool input dicts to CLI flags, +spawns ``metin-release --json …`` and returns the parsed JSON +envelope as the tool result. +""" + +__version__ = "0.1.0" diff --git a/src/metin_release_mcp/__main__.py b/src/metin_release_mcp/__main__.py new file mode 100644 index 0000000..443a221 --- /dev/null +++ b/src/metin_release_mcp/__main__.py @@ -0,0 +1,5 @@ +"""Module entry: ``python -m metin_release_mcp``.""" + +from .server import main + +raise SystemExit(main()) diff --git a/src/metin_release_mcp/server.py b/src/metin_release_mcp/server.py new file mode 100644 index 0000000..f9f201a --- /dev/null +++ b/src/metin_release_mcp/server.py @@ -0,0 +1,16 @@ +"""MCP server entry point (scaffold). + +The real stdio server, tool registration, and dispatch logic land in +subsequent commits. This stub only advertises the package version so +``python -m metin_release_mcp`` doesn't crash during the scaffold +commit. +""" + +from __future__ import annotations + +from . import __version__ + + +def main(argv: list[str] | None = None) -> int: + print(f"metin-release-mcp {__version__} (scaffold)") + return 0