Base MCP server with 25 workflow tools #1

Closed
opened 2026-03-01 17:35:35 +00:00 by forgejo_admin · 0 comments
Contributor

Plan

plan-2026-02-28-woodpecker-mcp -- Phase 1 (phase-2026-02-28-1-mcp-base)

Repo

forgejo_admin/woodpecker-mcp

User Story

As an agent or skill working with Woodpecker CI
I need a set of MCP tools that compose SDK calls into expert-level workflows
So that I can trigger pipelines, read logs, manage secrets, and check CI status without constructing raw HTTP requests or understanding Woodpecker's internal data model (repo IDs, step IDs, etc.)

Acceptance Criteria

  • When I call trigger_pipeline with a repo name and branch, a pipeline is triggered (repo name resolved to ID internally) and I get back the pipeline number and status
  • When I call get_pipeline_logs with a repo name and pipeline number, I get back the failed step's logs automatically (steps auto-discovered, no step ID needed)
  • When I call any of the 25 tools from an agent session via ~/.claude/mcp.json, the tool executes correctly against the live Woodpecker instance and returns a curated JSON response
  • When I inspect the code, all tool modules import get_client from server.py (never use _client directly) -- codebase is ready for Phase 2 mcp-remote (ContextVar patching)
  • All 25 tools across 6 domain files are implemented and callable

Additional Information

25 tools across 6 domain files:

  • tools/pipelines.py -- 6 tools (trigger, status, logs, restart, cancel, list)
  • tools/repos.py -- 2 tools (list_repos, get_repo)
  • tools/secrets.py -- 8 tools (repo CRUD + global CRUD)
  • tools/crons.py -- 5 tools (list, create, update, delete, run)
  • tools/system.py -- 3 tools (healthz, get_version, get_current_user)
  • tools/queue.py -- 1 tool (get_queue_status)

Reference implementations: forgejo-mcp (base pattern), pal-e-docs-mcp (multi-file tools), gcal-mcp (patchable get_client).

SDK dependency: ldraney-woodpecker-sdk>=0.1.0 (published on Forgejo PyPI). During dev, use pip install -e ../woodpecker-sdk.

Env vars: WOODPECKER_URL, WOODPECKER_TOKEN (Bearer PAT).

Checklist

  • woodpecker-mcp repo created on Forgejo
  • All 25 tools implemented
  • Integration tests against live Woodpecker
  • Registered in ~/.claude/mcp.json
  • All 25 tools discoverable and callable from agent session
  • get_client() patchable (verified in code review)
  • PR opened
  • plan-2026-02-28-woodpecker-mcp -- the plan
  • plan-2026-02-28-woodpecker-sdk-mcp -- parent plan (SDK)
  • claude-config -- project
### Plan `plan-2026-02-28-woodpecker-mcp` -- Phase 1 (`phase-2026-02-28-1-mcp-base`) ### Repo `forgejo_admin/woodpecker-mcp` ### User Story As an agent or skill working with Woodpecker CI I need a set of MCP tools that compose SDK calls into expert-level workflows So that I can trigger pipelines, read logs, manage secrets, and check CI status without constructing raw HTTP requests or understanding Woodpecker's internal data model (repo IDs, step IDs, etc.) ### Acceptance Criteria - [ ] When I call `trigger_pipeline` with a repo name and branch, a pipeline is triggered (repo name resolved to ID internally) and I get back the pipeline number and status - [ ] When I call `get_pipeline_logs` with a repo name and pipeline number, I get back the failed step's logs automatically (steps auto-discovered, no step ID needed) - [ ] When I call any of the 25 tools from an agent session via `~/.claude/mcp.json`, the tool executes correctly against the live Woodpecker instance and returns a curated JSON response - [ ] When I inspect the code, all tool modules import `get_client` from server.py (never use `_client` directly) -- codebase is ready for Phase 2 mcp-remote (ContextVar patching) - [ ] All 25 tools across 6 domain files are implemented and callable ### Additional Information **25 tools across 6 domain files:** - `tools/pipelines.py` -- 6 tools (trigger, status, logs, restart, cancel, list) - `tools/repos.py` -- 2 tools (list_repos, get_repo) - `tools/secrets.py` -- 8 tools (repo CRUD + global CRUD) - `tools/crons.py` -- 5 tools (list, create, update, delete, run) - `tools/system.py` -- 3 tools (healthz, get_version, get_current_user) - `tools/queue.py` -- 1 tool (get_queue_status) **Reference implementations:** forgejo-mcp (base pattern), pal-e-docs-mcp (multi-file tools), gcal-mcp (patchable get_client). **SDK dependency:** `ldraney-woodpecker-sdk>=0.1.0` (published on Forgejo PyPI). During dev, use `pip install -e ../woodpecker-sdk`. **Env vars:** WOODPECKER_URL, WOODPECKER_TOKEN (Bearer PAT). ### Checklist - [ ] woodpecker-mcp repo created on Forgejo - [ ] All 25 tools implemented - [ ] Integration tests against live Woodpecker - [ ] Registered in ~/.claude/mcp.json - [ ] All 25 tools discoverable and callable from agent session - [ ] get_client() patchable (verified in code review) - [ ] PR opened ### Related - `plan-2026-02-28-woodpecker-mcp` -- the plan - `plan-2026-02-28-woodpecker-sdk-mcp` -- parent plan (SDK) - `claude-config` -- project
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
ldraney/woodpecker-mcp#1
No description provided.