openproject-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| OPENPROJECT_API_KEY | Yes | API token from My account > Access tokens > API in OpenProject | |
| OPENPROJECT_BASE_URL | Yes | The base URL of your OpenProject instance, e.g. https://community.openproject.org | |
| OPENPROJECT_PAGE_SIZE | No | Default page size for list endpoints | 25 |
| OPENPROJECT_TIMEOUT_MS | No | HTTP request timeout in milliseconds | 30000 |
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 |
|---|---|
| op_list_projectsA | List OpenProject projects visible to the API key. Supports OpenProject filter syntax. Common fields: "active" ("=" true/false), "name_and_identifier" ("~" substring), "parent_id" ("=" id). |
| op_get_projectB | Get a single project by numeric id or identifier slug. |
| op_create_projectA | Create a new project. Requires admin or "add project" permission. Pass either a parent identifier or numeric id via _links.parent.href if creating a sub-project. |
| op_update_projectB | Patch an existing project. Only include the fields you want to change. |
| op_delete_projectA | Delete a project. Destructive; requires admin permission. The deletion is processed asynchronously by OpenProject. |
| op_list_work_packagesA | List work packages, optionally scoped to a project. Supports OpenProject filter syntax. Common filter fields: "status_id", "assignee", "project", "type", "priority", "subject" ("~" search), "updatedAt". |
| op_get_work_packageB | Fetch a single work package by numeric id with full HAL detail. |
| op_create_work_packageA | Create a work package in a project. At minimum provide subject, projectId, and typeId. When patching dates use ISO YYYY-MM-DD strings. |
| op_update_work_packageA | Patch fields on a work package. You MUST pass the current lockVersion (fetch it first with op_get_work_package) or OpenProject will reject the update with a stale-object error. |
| op_delete_work_packageA | Permanently delete a work package. Destructive. |
| op_list_work_package_activitiesB | List activities (comments and changes) on a work package, oldest first. |
| op_comment_work_packageB | Add a markdown comment to a work package activity stream. Optionally attach a file and embed it inline using attachFilePath. |
| op_current_userA | Return the user associated with the configured API key. |
| op_list_usersC | List users visible to the current API key. Supports filters such as "name" ("~" search), "status" ("=" "active"/"locked"/"invited"), "login" ("=" exact). |
| op_get_userA | Fetch a user by numeric id. |
| op_list_typesA | List work package types (Task, Bug, Feature, Milestone, etc.). Optionally scope to a project. |
| op_list_statusesA | List all work package statuses defined on the instance. |
| op_list_prioritiesA | List all priorities defined on the instance. |
| op_list_versionsB | List versions, optionally filtered to a project. |
| op_api_passthroughA | Escape hatch: call any GET endpoint under /api/v3 directly. Path should start with "/" (e.g. "/queries/42"). Use sparingly — prefer the typed tools above. |
| op_list_relationsC | List relations for a work package. Relation types: relates, duplicates, duplicated, blocks, blocked, precedes, follows, includes, partOf, requires, required. |
| op_get_relationC | Fetch a single relation by id. |
| op_create_relationA | Create a relation between two work packages. Types: relates, duplicates, blocks, precedes, follows, includes, partOf, requires. |
| op_delete_relationB | Delete a relation between work packages. |
| op_list_attachmentsB | List attachments on a work package. |
| op_get_attachmentA | Fetch attachment metadata by id. Set saveTo to download the file content to a local path and also return embedLocations showing where the file is referenced in the work package (description and comments). |
| op_upload_attachmentA | Upload a file from the local filesystem as an attachment on a work package. Provide the absolute path to the file. Optionally override the file name. Set embedIn to "comment" or "description" to also insert an image reference ( |
| op_delete_attachmentC | Delete an attachment. Destructive. |
| op_list_notificationsA | List in-app notifications for the current user. Common filters: "readIAN" ("=" "t"/"f"), "reason" ("=" "assigned"/"mentioned"/"watched"). |
| op_get_notificationB | Fetch a single notification by id. |
| op_mark_notification_readC | Mark a single notification as read. |
| op_mark_all_notifications_readA | Mark all notifications as read for the current user. |
| op_list_watchersC | List users watching a work package. |
| op_add_watcherC | Add a user as a watcher to a work package. |
| op_remove_watcherB | Remove a user from watching a work package. |
| op_list_boardsA | List boards (Kanban-style) for a project. Boards are stored as grids scoped to /projects/{id}/boards. |
| op_get_boardA | Fetch a single board (grid) by id, including its widget/column configuration. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/OliverRhyme/openproject-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server