Skip to content

ci(mcp-server): add lint, unit-test, and mcp-client integration jobs - #4

Merged
using-system merged 6 commits into
mainfrom
features/ci-mcp-server
Aug 22, 2026
Merged

ci(mcp-server): add lint, unit-test, and mcp-client integration jobs#4
using-system merged 6 commits into
mainfrom
features/ci-mcp-server

Conversation

@using-system

Copy link
Copy Markdown
Owner

What

Adds .github/workflows/ci-mcp-server.yml (PR + push on main, path-filtered to the server, its tests, and the workflow itself) with three jobs:

  • lintruff check + ruff format --check (ruff 0.16.4), plus a small style commit bringing the existing code in line with ruff defaults.
  • unit-testsuv sync + the pytest suite.
  • integration — the stdio server driven end-to-end by the official MCP Inspector CLI (@modelcontextprotocol/inspector@2.3.0): tools/list asserts the three stack tools, then the full lifecycle against the runner's native Docker — status down → odd_stack_up (image pre-pulled, client request timeout raised to 300 s) → status up → odd_stack_down + container-gone check → final status down. Every transition confirmed by an independent odd_stack_status call.

All actions pinned to full commit SHAs with version comments (checkout v7.0.1, setup-uv v10.0.1, setup-node v7.0.0). The whole integration sequence was validated locally (same inspector commands and jq assertions) before pushing.

How to test

The workflow itself is the test — this PR triggers its first run.

🤖 Generated with Claude Code

using-system and others added 6 commits August 22, 2026 10:34
Explicit check=False on the compose subprocess call, sorted imports,
formatting.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Three jobs: ruff lint/format, the pytest suite, and an end-to-end
integration that drives the stdio server with the official MCP
Inspector CLI - tools/list plus the full stack lifecycle
(status down, odd_stack_up against the runner's Docker, status up,
odd_stack_down). The image is pre-pulled so the tool call only pays
startup, and the client request timeout is raised accordingly. Whole
sequence validated locally before push.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Symmetric with the up path: a final odd_stack_status call verifies
running=false independently of odd_stack_down's own return.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
No operation outside the MCP client: the pre-pull step is gone, so
the tool call carries pull plus startup itself, proving the server's
autonomy. Client request timeout raised accordingly.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The inspector-driven sequence moves to integration-tests/mcp-server:
lib.sh (MCP-client helpers), test-stack-lifecycle.sh, and a run.sh
runner that picks up any test-*.sh - future integration tests are a
dropped file away. The workflow calls the runner and path-filters on
the folder.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@using-system
using-system merged commit 532ffdd into main Aug 22, 2026
3 checks passed
@using-system
using-system deleted the features/ci-mcp-server branch August 22, 2026 08:55
@github-actions github-actions Bot mentioned this pull request Aug 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant