Skip to main content

woodpecker-mcp

An MCP server for Woodpecker CI, generated from the Woodpecker OpenAPI spec with fastmcp and served over streamable HTTP.

The tool surface is a curated allowlist, not the full API: all the reads an agent needs to answer "why is my build red / stuck", plus exactly five write operations (trigger, restart, cancel, approve, decline pipeline). Everything else, repo/secret/cron/agent CRUD, forge and system administration, is not exposed.

Tools

Area Tools
Repos list_repos, lookup_repo, get_repo, get_repo_permissions, list_branches, list_pull_requests
Pipelines list_pipelines, get_pipeline, get_pipeline_config, get_pipeline_metadata
Pipeline ops (write) trigger_pipeline, restart_pipeline, cancel_pipeline, approve_pipeline, decline_pipeline
Logs get_step_logs, plain-text step logs, base64-decoded, tailed (default 200 lines)
Orgs lookup_org, get_org, get_org_permissions
Queue & agents get_queue_info, list_agents, get_agent, list_agent_tasks
Secrets & registries (metadata only) list_repo_secrets, list_org_secrets, list_repo_registries, list_org_registries

Configuration

Variable Required Description
WOODPECKER_SERVER yes Base URL of the Woodpecker server, e.g. https://ci.example.com (/api is appended)
WOODPECKER_TOKEN yes Personal access token used for upstream API calls
WOODPECKER_MCP_READ_ONLY no true/1/yes/on removes the five write tools entirely
WOODPECKER_MCP_TRANSPORT no http (default) or stdio
HOST no Bind address (http only), default 0.0.0.0
PORT no Bind port (http only), default 8000

An MCP client may act as a different Woodpecker user by sending an X-Woodpecker-Token header; it overrides WOODPECKER_TOKEN for that request.

The server performs no authentication of its own, deploy it on a trusted network. token fields in upstream responses (e.g. agent registration tokens, which Woodpecker returns in cleartext to admin PATs) are redacted before reaching the client.

Running

Docker (streamable HTTP)

docker run -p 8000:8000 \
  -e WOODPECKER_SERVER=https://ci.example.com \
  -e WOODPECKER_TOKEN=... \
  ghcr.io/rtuszik/woodpecker-mcp:latest

The MCP endpoint is http://<host>:8000/mcp (streamable HTTP).

uvx (stdio)

The package is published to PyPI as woodpecker-ci-mcp. With WOODPECKER_MCP_TRANSPORT=stdio the server speaks MCP over stdin/stdout, so a client can spawn it directly. Register it with e.g. Claude Code:

claude mcp add woodpecker \
  --env WOODPECKER_SERVER=https://ci.example.com \
  --env WOODPECKER_TOKEN=... \
  --env WOODPECKER_MCP_TRANSPORT=stdio \
  -- uvx woodpecker-ci-mcp

or in a generic MCP client config:

{
  "mcpServers": {
    "woodpecker": {
      "command": "uvx",
      "args": ["woodpecker-ci-mcp"],
      "env": {
        "WOODPECKER_SERVER": "https://ci.example.com",
        "WOODPECKER_TOKEN": "...",
        "WOODPECKER_MCP_TRANSPORT": "stdio"
      }
    }
  }
}

In stdio mode the per-request X-Woodpecker-Token override does not apply; the configured token is always used.

Development

uv sync            # install
uv run pytest      # tests
mise run check     # format, lint, typecheck, tests

The bundled spec lives at src/woodpecker_mcp/openapi.yaml; the allowlist that defines the tool surface is src/woodpecker_mcp/spec.py.

Download files

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

Source Distribution

woodpecker_ci_mcp-0.1.0.tar.gz (16.3 kB view details)

Uploaded Source

Built Distribution

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

woodpecker_ci_mcp-0.1.0-py3-none-any.whl (18.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: woodpecker_ci_mcp-0.1.0.tar.gz
  • Upload date:
  • Size: 16.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.31 {"installer":{"name":"uv","version":"0.11.31","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for woodpecker_ci_mcp-0.1.0.tar.gz
Algorithm Hash digest
SHA256 f6a028eb4012dcb733b1ff16802e3f0abb4cd0d46116e9f790b6a3fb396dd5f3
MD5 47f9fb447e6720ad2e4477141e9c4c98
BLAKE2b-256 8466ebb4693a84215f3055ce9dbcfb7a9a82f6eeb484625bf9e091e9b1ebdef0

See more details on using hashes here.

File details

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

File metadata

  • Download URL: woodpecker_ci_mcp-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 18.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.31 {"installer":{"name":"uv","version":"0.11.31","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for woodpecker_ci_mcp-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 04a7f87532ba1ac769f6cd945808a7a6f0c7ed5ac1485920f2dd3c69fa7809df
MD5 90d5bbc52cd9f73b987a37b260f63654
BLAKE2b-256 7310f25949fa381882c27da87786b7305ee77fa63a505b73a675c5202ec04373

See more details on using hashes here.

Release history Release notifications | RSS feed

0.4.0

2 files

0.3.0

2 files

0.2.2

2 files

0.2.1

2 files

This release

0.1.0 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page