FastAPI-based MCP server for orchestrating GitHub Actions workflows and Jenkins jobs with real-time log streaming
Server has 4 tools with significant definition gaps. GitHub tools have basic descriptions and partial schemas, but Jenkins tools are placeholder stubs. Parameter descriptions are sparse or missing entirely. No output schemas documented. Error handling is minimal. Tool naming follows verb_noun convention but lacks clarity on distinctions. Overall, definitions are below community baseline (45-55) due to incomplete schemas, missing parameter docs, and unimplemented features.
Execute GitHub Actions operations: trigger workflows, cancel runs, rerun runs, or fetch logs
List GitHub Actions workflows, workflow runs, and self-hosted runners for a repository
Execute Jenkins operations (placeholder implementation not yet implemented)
List Jenkins jobs and resources (placeholder implementation)
Jenkins tools are placeholder stubs with no implementation. jenkins/execute has empty input schema and description under 20 chars ('Execute Jenkins operations (placeholder implementation not yet implemented)').
github/execute parameter 'inputs' lacks description. Parameter 'action' enum is documented but 'workflow_id', 'ref', 'run_id' descriptions are minimal or missing context on when each is required. Violates pattern: every parameter needs a description explaining what it controls.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields (e.g., workflow_id, run_id) without knowing response structure. Violates pattern: document the output schema.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 47 | 2026-07-28+ | v2 |
github/resources/list returns unstructured list with resource types (workflow, workflow_run, runner) but no pagination, limit, or total count. Large repos could return hundreds of items, blowing context window. No limit documented.
Error handling is minimal. github/execute fetch_logs returns a stream_url but no guidance on what to do if streaming fails. No error classification (retryable vs fatal). Violates pattern: error responses must tell the LLM what to do next.