@devpuccino/mcp-woodpecker
v1.1.2
Published
Model Context Protocol (MCP) server for Woodpecker CI 3.13.0+ with comprehensive API tool support for pipeline management, secrets, registries, and more
Downloads
10
Maintainers
Readme
MCP Woodpecker Server
A comprehensive Model Context Protocol (MCP) server for seamlessly integrating Woodpecker CI with AI-powered tools. This server provides 41+ tools to manage repositories, pipelines, secrets, registries, crons, and organization settings programmatically. Fully compatible with Woodpecker CI 3.13.0 API.
Perfect for automating CI/CD workflows, integrating with Claude AI, or building custom Woodpecker management tools.
🔄 Compatibility
| Component | Version | Notes | |-----------|---------|-------| | mcp-woodpecker | 1.1.2+ | MCP Server implementation | | Woodpecker CI API | 3.13.0+ | Tested against Woodpecker CI v3.13.0 (January 2026) | | Node.js | 18.0.0+ | Minimum required version | | MCP SDK | ^1.27.1 | Model Context Protocol SDK |
This server is compatible with Woodpecker CI 3.13.0 and later. The implementation follows the official Woodpecker API specification with support for modern endpoints and features.
📝 Changelog
v1.1.2 (2026-03-21) - Bugfix Release
- Fixed:
get_server_infotool removed —/versionendpoint returns HTML on live deployments - Fixed:
get_pipeline_logsnow uses correct path/repos/{id}/logs/{number}/{stepID}(HTML was from old wrong path) - Fixed: All org secret tools (
list_org_secrets,get_org_secret, etc.) now use numericorgIdinstead of org name — resolves 400 Bad Request - Added:
lookup_organizationtool to resolve org name → numeric ID before secret operations - Tested: All 47 unit tests passing
v1.1.1 (2026-03-21) - Bugfix Release
- Fixed:
cancelPipelinenow callsPOST .../cancelinstead ofDELETE(which deletes the pipeline permanently) - Fixed:
getPipelineStatusnow maps toGET /repos/{id}/pipelines/{number}— no separate/statusendpoint exists in the API - Fixed:
getStepLogspath corrected to/repos/{id}/logs/{number}/{stepID}per API spec - Fixed:
deletePipelineLogspath corrected to/repos/{id}/logs/{number}per API spec - Fixed:
activateRepositorynow usesPOST /repos?forge_remote_id=...(query param, not path param) - Fixed: Cron create/update now sends
schedulefield instead ofexprto match API schema - Fixed:
list_org_secretsand all org secret tools now require numericorgId(not org name) — matchesGET /orgs/{org_id}/secretsAPI spec - Added:
lookup_organizationtool — resolves org name → numeric ID viaGET /orgs/lookup/{org_full_name} - Removed:
get_server_infotool —/versionendpoint returns HTML on this deployment (no reliable alternative) - Tested: All 47 unit tests updated and passing
v1.1.0 (2026-03-21)
- Added:
updateRegistry()method for updating registry credentials - Updated: Version documentation and compatibility matrix
- Tested: Comprehensive registry CRUD operations
✨ Features
- Repository Management - List, get, activate, update, and delete repositories
- Pipeline Management - Trigger, cancel, monitor pipelines with detailed logs and status
- Secrets Management - Create and manage repository and organization-level secrets securely
- Registry Configuration - Manage Docker registry credentials for authenticated builds
- Cron Jobs - Schedule and manage automated pipeline executions with flexible expressions
- User & Server Info - Get authenticated user details and server information
- Full Type Safety - Built with TypeScript for reliable development
🚀 Quick Start
Installation
npm install -g mcp-woodpeckerOr as a project dependency:
npm install mcp-woodpeckerPrerequisites
- Node.js 18.0.0 or higher
- Woodpecker CI instance running and accessible
- API Token from your Woodpecker instance (Personal Access Token)
Basic Setup
Get your Woodpecker API token:
- Navigate to your Woodpecker instance (e.g., https://woodpecker.example.com/)
- Go to Settings → Personal Access Tokens
- Create a new token with appropriate permissions
Set environment variables:
export WOODPECKER_URL=https://woodpecker.example.com/
export WOODPECKER_API_KEY=your_api_token_here- Run the MCP server:
mcp-woodpeckerOr in development mode with hot reload:
npm install --save-dev mcp-woodpecker
npm run devUsing with npx (No Installation)
Run the server directly without installing it globally:
export WOODPECKER_URL=https://woodpecker.example.com/
export WOODPECKER_API_KEY=your_api_token_here
npx mcp-woodpeckerThis is useful for testing, CI/CD pipelines, or ephemeral environments.
Using with Claude AI
Add to your .claude/config.json:
{
"servers": {
"woodpecker": {
"command": "npx",
"args":["-y","@devpuccino/mcp-woodpecker"],
"env": {
"WOODPECKER_URL": "https://woodpecker.example.com/",
"WOODPECKER_API_KEY": "your_api_token"
}
}
}
}Environment Variables
| Variable | Description | Example |
|----------|-------------|---------|
| WOODPECKER_URL | Base URL of your Woodpecker instance | https://woodpecker.example.com |
| WOODPECKER_API_KEY | Personal access token for API authentication | eyJ... |
Available Tools
Repository Tools
list_repositories- List all accessible repositoriesget_repository- Get details of a specific repositoryactivate_repository- Activate a repositoryupdate_repository- Update repository settings (trusted status, visibility, config path)delete_repository- Remove a repository from Woodpecker
Pipeline Tools
list_pipelines- List pipelines with optional filtering by branch or statusget_pipeline- Get detailed pipeline informationget_pipeline_status- Get pipeline status badge datatrigger_pipeline- Trigger a new pipeline executioncancel_pipeline- Cancel a running pipelineget_pipeline_logs- Retrieve logs from a specific stepdelete_pipeline_logs- Clear pipeline logs
Secret Management Tools
Repository Secrets:
list_secrets- List all secrets in a repositoryget_secret- Get a specific secretcreate_secret- Create a new secretupdate_secret- Update an existing secretdelete_secret- Remove a secret
Organization Secrets:
list_org_secrets- List organization-level secretsget_org_secret- Get a specific org secretcreate_org_secret- Create a new org secretupdate_org_secret- Update an org secretdelete_org_secret- Remove an org secret
Registry Tools
list_registries- List configured Docker registriesget_registry- Get registry configurationcreate_registry- Add a new registryupdate_registry- Update registry credentials (new in v1.0.0)delete_registry- Remove a registry
Cron Job Tools
list_crons- List scheduled cron jobsget_cron- Get cron job detailscreate_cron- Create a new scheduled jobupdate_cron- Update cron configurationdelete_cron- Remove a cron job
Server Tools
get_current_user- Get authenticated user informationget_server_info- Get Woodpecker server version and info
CI/CD Pipeline
This project includes a .woodpecker.yml configuration that provides:
Build & Test Stages
- Feature Builds: Manual trigger for testing features
- Development Builds: Automatic on push to
developbranch - Production Builds: Automatic on version tags (v*)
Docker Builds
- Multi-stage Docker builds with registry authentication
- Separate images for test, dev, and production environments
Deployment Stages
- Test Deployment: Manual deployment of test image
- Development Deployment: Automatic deployment on develop push
- Production Deployment: Automatic deployment on version tag + npm publish
npm Publishing
Production releases are automatically published to the npm registry on version tags.
Required Secrets
For CI/CD to work, configure these secrets in your Woodpecker instance:
| Secret | Description |
|--------|-------------|
| REGISTRY_USERNAME | Docker registry username |
| REGISTRY_PASSWORD | Docker registry password/token |
| NPM_TOKEN | npm registry authentication token |
| WOODPECKER_URL_TEST | Test Woodpecker instance URL |
| WOODPECKER_API_KEY_TEST | Test instance API key |
| WOODPECKER_URL_DEV | Development Woodpecker instance URL |
| WOODPECKER_API_KEY_DEV | Development instance API key |
| WOODPECKER_URL | Production Woodpecker instance URL |
| WOODPECKER_API_KEY | Production instance API key |
Repository Structure
feature/* → develop (feature development)
develop → master (testing environment)
master → production (stable releases)
v* → npm + docker registry (tagged releases)🐳 Docker Usage
Build Docker Image
docker build -t mcp-woodpecker:latest .Run in Docker
docker run -d \
-e WOODPECKER_URL=https://woodpecker.example.com \
-e WOODPECKER_API_KEY=your_token \
--name mcp-woodpecker \
mcp-woodpecker:latestDocker Compose
version: '3.8'
services:
mcp-woodpecker:
build: .
environment:
WOODPECKER_URL: https://woodpecker.example.com
WOODPECKER_API_KEY: ${WOODPECKER_API_KEY}
restart: unless-stopped📝 Publishing to npm
This package is published to npm as @devpuccino/mcp-woodpecker.
Version Management
Versions follow Semantic Versioning:
- MAJOR: Breaking API changes
- MINOR: New features (backward compatible)
- PATCH: Bug fixes and patches
Release Process
- Update version in package.json:
npm version major|minor|patch- Push changes:
git push origin master --tags- Publish to npm:
npm publishThe Woodpecker CI pipeline automatically publishes to npm on version tags.
🤝 Contributing
Contributions are welcome! See CONTRIBUTE.md for detailed guidelines on:
- Setting up your development environment
- Adding new tools to the MCP server
- Code quality standards
- Pull request process
- Commit message conventions
For bug reports and feature requests, please open an issue.
🐛 Troubleshooting
Authentication Error
Error: Woodpecker API error: 401 Unauthorized- Verify
WOODPECKER_API_KEYis correct - Check token hasn't expired
- Ensure user has API access permissions
Connection Refused
Error: connect ECONNREFUSED- Verify
WOODPECKER_URLis accessible - Check network connectivity
- Ensure Woodpecker instance is running
Module Not Found
Error: Cannot find module '@modelcontextprotocol/sdk'- Run
npm installto install dependencies - Clear npm cache:
npm cache clean --force - Delete node_modules and reinstall:
rm -rf node_modules && npm install
📄 License
MIT License © 2026 BerryJ
See LICENSE file for details.
🔗 Resources
- Woodpecker CI Documentation - Official Woodpecker documentation
- MCP Specification - Model Context Protocol details
- Woodpecker API Reference - REST API documentation
- npm Package - npm registry entry
- GitHub Repository - Source code
🙋 Support
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- npm Profile: @devpuccino
