openproject-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| OPENPROJECT_URL | Yes | Instance URL, for example https://projects.example.org. A path prefix is kept, so an instance served under https://example.org/op works. https is added when the scheme is missing. | |
| OPENPROJECT_API_KEY | Yes | The API key from 'My account', 'Access tokens'. | |
| OPENPROJECT_TIMEOUT_MS | No | Per-request timeout in milliseconds. | 15000 |
| OPENPROJECT_MAX_TEXT_CHARS | No | Cap on a description or comment handed to the assistant. | 50000 |
| OPENPROJECT_MAX_RESPONSE_BYTES | No | Hard cap on a single response body. | 4194304 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_current_userA | Identify the OpenProject account this server authenticates as. Call it first when a question says 'my' or 'me', then pass assignedToMe to search_work_packages. |
| list_projectsA | List the projects visible to this account, with id, name, identifier and description. Pass a returned id as projectId to search_work_packages to scope a search to one project. |
| search_work_packagesA | Search work packages (tasks, bugs, milestones) by full text. Without a query it lists the most recently updated open ones. Returns id, subject, type, status, project, assignee and dates. Pass a returned id to get_work_package for the full description. |
| get_work_packageA | Read one work package in full, including its description, priority, author and progress. Get the id from search_work_packages first. |
| get_work_package_commentsA | Read the comments on one work package, oldest first. Status changes without a comment are omitted. |
| list_statusesA | List the work package statuses configured on this instance. Useful when a question names a status and you need to know whether it exists. |
| list_typesA | List the work package types configured on this instance, for example Task, Bug, Milestone. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 7 tools
Each tool targets a distinct resource or action: current user, projects, work-package search, single work package, comments, statuses, and types. There is no meaningful overlap between search_work_packages and get_work_package because one is full-text search and the other is retrieval by ID.
All tools follow a consistent verb_noun snake_case pattern: get_current_user, list_projects, search_work_packages, get_work_package, and so on. The one longer name, get_work_package_comments, still fits the established convention.
Seven tools is a well-scoped size for a read-oriented OpenProject integration. Each tool has a clear purpose and none are redundant, so the count feels intentional rather than padded or thin.
The surface is entirely read-only: it can search, view, and list work packages, projects, comments, statuses, and types, but it cannot create, update, transition, or comment on work packages. For a project-management domain this is a significant functional gap that prevents agents from completing common workflows.