A professional Model Context Protocol (MCP) server for OpenProject
The OpenProject MCP server provides 7 tools with explicit schemas and descriptions, but suffers from significant gaps in parameter documentation, output schema clarity, and error handling guidance. Tool names follow verb_noun convention appropriately (get_, update_, list_, create_). However, 5 of 7 tools lack descriptions for critical parameters, and no tool documents its output schema structure. Error handling is absent, tools raise generic HTTPException without recovery guidance. The server lacks enum constraints for categorical parameters (status, priority, work_package_type), forcing LLMs to guess valid values. Parameter descriptions are present but often generic (e.g., 'The work package identifier' for wp_id lacks format/length guidance). Security is reasonable (API key injected via environment, no secrets in params), but no permission gates or audit logging. Composition is clean, tools are single-purpose and chainable (get_project_details, update_project; list_work_packages, get_work_package_details). Overall, the server is functional but below production quality for agent reliability.
Creates a new work package.
Fetches full details of a project.
Fetches full details of a specific work package.
Lists projects. If parent_id is provided, lists subprojects.
Lists work packages for a specific project.
Updates an existing project. Requires lock_version.
Updates an existing work package. Requires lock_version for optimistic locking.
Output schemas completely undocumented for all 7 tools. LLMs cannot know what fields to extract from responses, forcing inspection of code or trial-and-error.
Categorical parameters (status, priority, work_package_type) lack enum constraints. LLM must guess valid values, causing frequent invalid requests.
No pagination parameters or result limits documented for list_* tools. Returning 500 projects or work packages will bloat context and risk timeout.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 53 | <=2025-11-25 | v2 |
| 2026-03-09 | D | 50 | - | v1 |
Error handling absent, tools raise generic HTTPException without recovery guidance. LLM has no actionable feedback on why a call failed or what to do next.
Optimistic locking pattern (lock_version) not explained. Docs do not describe when/how to obtain lock_version, what happens when stale, or how to retry.
Parameter descriptions often generic or incomplete. wp_id lacks format guidance (numeric? slug?). status/priority lack valid value documentation.