Skip to content

chore(mcp): remove the deprecated Python MCP server - #260

Merged
jplanckeel merged 3 commits into
mainfrom
chore/remove-python-mcp
Nov 12, 2026
Merged

jplanckeel merged 3 commits into
mainfrom
chore/remove-python-mcp

Conversation

@jplanckeel

Copy link
Copy Markdown
Contributor

What

Removes mcp-server/ (Python, stdio), deprecated since #238. The MCP endpoint served by the Go server at /mcp (server/mcp.go) replaces it.

Parity check, tool by tool

Tool Python server Go /mcp
list_events ✅ ✅ same filters (type, service, status), paging
today_events ✅ ✅
search_events ✅ + impact, slack_id ✅ + per_page / page. impact and slack_id are ignored by the API (utils.CreateFilter never reads them); looking an event up by its Slack id is done by get_event
get_event ❌ called /events/{id} (404, the route is /event/{id}) ✅ by id or Slack message id
list_catalog ❌ called /catalog/list (404, the route is /catalogs/list) ✅ sorted by name
get_catalog_service ❌ called /catalog/{name} (no such route) ✅
list_locks ✅ ✅
get_lock ❌ called /locks/{id} (404, the route is /lock/{id}) ✅

On top: authentication (API keys, sessions, anonymous permissions), team scope, read-only annotations, nothing to install on the client.

Checked against a running serv with a catalog entry, a lock and two events: tools/list returns the 8 tools and each one answers (list_events with and without filter, today_events, search_events, get_event, list_catalog, get_catalog_service, list_locks, get_lock); a search without filter and an unknown enum value come back as tool errors.

Also

  • list_events without filter loaded every event and paged in memory; it now asks ListEvents (paginated since perf: paginate ListEvents, gzip the HTTP responses, cache the assets #257) for the page. New TestMCPListEventsPagesUnfilteredList.
  • Dependabot no longer watches /mcp-server (uv).
  • FEATURES.md: the MCP section described the Python install (uv, TRACKER_URL); it now documents /mcp and points to docs/MCP_SERVER.md.
  • docs/MCP_SERVER.md: deprecation notice removed, migration notes kept. CLAUDE.md and the Copilot instructions updated.

Checks

MONGO_TEST_URI=… go test ./... (all MCP end-to-end tests), gosec, staticcheck: OK.

🤖 Generated with Claude Code

jplanckeel and others added 2 commits October 30, 2026 15:12
Without filters, list_events loaded every event and paged in memory; it
now asks ListEvents for the page, newest first.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The MCP endpoint served by the Go server at /mcp covers the eight tools
of the Python server, with authentication and team scope. The Python
server called four routes that do not exist (get_event, list_catalog,
get_catalog_service, get_lock) and two search filters the API ignores.

Dependabot no longer watches mcp-server; FEATURES.md documents the /mcp
endpoint, and docs/MCP_SERVER.md keeps the migration notes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
@jplanckeel
jplanckeel merged commit 4cb85c7 into main Nov 12, 2026
5 checks passed
@jplanckeel
jplanckeel deleted the chore/remove-python-mcp branch November 12, 2026 16:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant