Skip to main content

CI gate for MCP servers

Project description

MCPReady

Stop shipping broken MCP servers.

MCPReady is a small CI gate for Model Context Protocol servers. It starts a stdio MCP server, runs the basic client handshake, lists tools, checks the tool contract shape, scans observed metadata/stderr for obvious secret leaks, and writes Markdown/JSON reports that fit cleanly into GitHub Actions.

It is not a visual inspector. Use the official MCP Inspector when you want to click around a server by hand. Use MCPReady when you want a pull request to fail before a broken MCP server lands.

Install

pip install mcpready

For local development from the repository:

pip install -e ".[dev]"

Quick Start

mcpready check \
  --command "python -m your_mcp_server" \
  --report mcpready-report.md \
  --json mcpready-report.json

The command exits with code 0 when the server passes, and code 1 when the server fails a required check.

Use --fail-on-warn if warnings should also fail CI.

What v0.1 Checks

  • the server process starts
  • the MCP initialize handshake completes
  • tools/list returns successfully
  • each tool has a non-empty name and input schema
  • observed stderr and tool metadata do not contain obvious token patterns
  • Markdown and JSON reports can be written for CI artifacts

MCPReady v0.1 only supports stdio servers. HTTP and SSE transports are planned for later releases.

GitHub Action

MCPReady also ships as a composite GitHub Action:

name: MCPReady

on:
  pull_request:
  push:
    branches: [main]

jobs:
  mcpready:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - uses: actions/setup-python@v6
        with:
          python-version: "3.13"
      - uses: he-yufeng/MCPReady@v0.1.0
        with:
          command: python -m your_mcp_server
          report: mcpready-report.md
          json: mcpready-report.json

The action installs MCPReady from the action checkout, so it works before the package is published to PyPI. Use @main only when you intentionally want the latest unreleased changes.

中文说明

MCPReady 是一个面向 CI 的 MCP Server 质量门禁工具。它会启动 stdio MCP server,完成基础握手,拉取工具列表,检查工具契约,并把明显的 token 泄露作为失败项报告。

它不是另一个可视化 Inspector。手工调试请用官方 MCP Inspector;想让 PR 在合入前自动发现坏 server,就用 MCPReady。

常用命令:

mcpready check --command "python -m your_mcp_server" --report report.md --json report.json

GitHub Action 用法:

- uses: actions/setup-python@v6
  with:
    python-version: "3.13"
- uses: he-yufeng/MCPReady@v0.1.0
  with:
    command: python -m your_mcp_server
    report: mcpready-report.md
    json: mcpready-report.json

第一版只支持 stdio transport。HTTP / SSE 支持会放到后续版本。

Development

python -m pytest -q
python -m ruff check .
python -m ruff format --check .
python -m compileall -q src tests
python -m build
python -m twine check dist/*

Publishing

MCPReady publishes through PyPI Trusted Publishing. Configure a pending publisher on PyPI with:

  • PyPI project name: mcpready
  • Owner: he-yufeng
  • Repository name: MCPReady
  • Workflow name: publish.yml
  • Environment name: pypi

After that, publishing a GitHub Release will upload the package without storing a long-lived PyPI token in GitHub secrets.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mcpready-0.1.0.tar.gz (10.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mcpready-0.1.0-py3-none-any.whl (8.8 kB view details)

Uploaded Python 3

File details

Details for the file mcpready-0.1.0.tar.gz.

File metadata

  • Download URL: mcpready-0.1.0.tar.gz
  • Upload date:
  • Size: 10.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for mcpready-0.1.0.tar.gz
Algorithm Hash digest
SHA256 f8b52540f73e2f9f8dd78b3cde5938130a448582d2e197d5e9cec6b9f4194bda
MD5 43b146904305ecf0141b6231bf2717bc
BLAKE2b-256 26ac016791f323a5271385e1712dbcd6ed0d5963153f6c8f055f678314ed9d5f

See more details on using hashes here.

Provenance

The following attestation bundles were made for mcpready-0.1.0.tar.gz:

Publisher: publish.yml on he-yufeng/MCPReady

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mcpready-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: mcpready-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 8.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for mcpready-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 73d509a50e7528b3d8f3184a15489ae1ec3e52c69913f78f49f721c2fd63cfc8
MD5 03cc13c1856207bf926de7db3c343698
BLAKE2b-256 f68b88d1a68df9182f037c50641cf73571345772f65646203838318f83c49f67

See more details on using hashes here.

Provenance

The following attestation bundles were made for mcpready-0.1.0-py3-none-any.whl:

Publisher: publish.yml on he-yufeng/MCPReady

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page