OpenProject MCP
This server is an MCP interface for OpenProject CE that enables local AI agents to read and manage project data through structured, context-efficient tools.
Project Management: List, search, create, update, copy, and delete projects. Manage lifecycle phases, configurations, and work package context (types, statuses, priorities, versions).
Work Package Management: List, search, create, update, and delete work packages. Manage subtasks, relations (blocks/follows/duplicates), attachments, watchers, comments, activity logs, and file links.
Time Tracking: Log, update, and delete time entries with filtering by project, work package, user, and date. List available activities.
Memberships, Roles & Principals: Create, read, update, and delete project memberships. List roles, users, and groups for membership management.
User & Group Administration: List, search, create, update, lock/unlock, and delete users. Manage group members. Read and update the current user's preferences (language, timezone, etc.).
Versions, Boards & Views: List/get versions, saved boards/queries, and views (optionally scoped by project or type).
Wiki, News & Documents: Fetch wiki pages by ID, list/create/update/delete news, and read documents.
Notifications: Read and mark in-app notifications; manage current user preferences.
System Metadata & Configuration: Read instance configuration, feature flags, help texts, working/non-working days, custom field options, work package statuses/priorities/types, API actions, capabilities, and dashboard grids.
Safety & Access Control: All write operations default to a preview-then-confirm pattern (globally bypassable). Reads and writes are independently gated by environment variables. Project scope can be enforced via allowlists, and attachment uploads are sandboxed to a configured directory.
Manage OpenProject projects, work packages, memberships, versions, boards, time entries, and more through structured tools.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@OpenProject MCPshow my open work packages"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
OpenProject CE MCP
An MCP server for OpenProject that lets local AI agents read and manage project data through structured, guarded tools.
The server runs as a local subprocess of your MCP client over stdio. It wraps OpenProject API v3 and exposes typed tools for projects, work packages, memberships, versions, boards, time entries, and more.
Reading this on PyPI? All links below point to the GitHub repository — the
docs/pages and images ship in the git repo and source distribution, not in the installed package itself.
Why use this MCP
Context-frugal by design — compact, agent-shaped responses instead of raw HAL payloads (~21 fields + ~46 links per item in the raw API). Measured up to −98% tokens per response with
select; see Context efficiency for the full numbers.Guarded writes — every write follows a preview-then-confirm pattern; there is no way to bypass it.
Defense-in-depth project scope — MCP read/write allowlists restrict the token's effective scope in addition to OpenProject's own server-side permissions.
Typed tools, not a raw REST client — one call per intent (list, search, create, update) instead of hand-built HAL requests and link-following.
Related MCP server: projscan
What you can do
Projects
List, create, copy, update, and delete projects
Read project configurations, lifecycle phases, and admin context
Create, update, and delete memberships and versions; list roles
Work packages
List and search work packages with structured filters
Create, update, and delete work packages; create subtasks; create, update, and delete relations; add comments (no edit or delete)
Upload and delete attachments; add and remove watchers; read activity logs
Log, update, and delete time entries
Boards and views
Create, read, update, and delete saved boards (queries); read views
Users and groups
Read user accounts and group memberships
Create, update, lock, unlock, and delete users; add and remove group members
Supporting data
Fetch individual wiki pages by id; create, update, and delete news; read and update documents
Read and mark notifications; read help texts, working days, and instance configuration
Create and inspect grids; inspect custom options
All write operations follow a preview-then-confirm pattern: call a tool once to get a validated preview, then again with confirm=true to execute. There is no way to bypass this.
Scope: Community Edition
This MCP server targets OpenProject Community Edition only. It does not support Enterprise Edition features such as:
Placeholder Users
Budgets
Portfolios
Programs
Custom Actions
Baseline Comparisons
Note: OpenProject Enterprise Edition includes its own MCP server. If you have an Enterprise license, use the official Enterprise MCP instead of this one.
How it works
Communicates with the MCP client over stdio — no remote server, no persistent storage
Read tools are registered by default, but no project data is accessible until
OPENPROJECT_READ_PROJECTSis configuredThe 5 core write categories are enabled by default, but stay inert until a project is listed in
OPENPROJECT_WRITE_PROJECTS— that allowlist, not the category flags, is the real gate; personal-data and admin writes stay opt-in separatelyCreate and update operations validate the payload against OpenProject form endpoints before writing; delete and other simple operations execute directly once confirmed
Project scope is enforced server-side: the MCP only exposes what the configured allowlists permit
Responses are bounded and paginated — compact summaries, not raw HAL payloads
A core reason to use this MCP instead of calling the OpenProject REST API directly: it returns context-frugal responses instead of raw HAL payloads. The numbers below are measured against the same three representative work packages. For the full methodology, the tool-catalog size numbers, and how to reproduce them, see Context efficiency.
Response | Tokens | vs. raw API |
Raw OpenProject REST API v3 (HAL) | ~7,900 | baseline |
| ~1,050 | −87% |
| ~120 | −98% |
Install
This quickstart requires pipx; see Installation if it isn't installed yet.
pipx install openproject-ce-mcp
openproject-ce-mcp configure
openproject-ce-mcp --versionconfigure collects your OpenProject URL, API token, and project scope, then
writes the config for the MCP client(s) you choose. Project-scoped is
recommended: the server is then available only in the current project.
Global makes it available everywhere. Restart your MCP client afterward,
then ask it to call get_current_user or list_projects to verify.
See Installation for requirements, updating, source installs, and uninstalling, and Clients for per-client setup guides.
Documentation
Full documentation lives in docs/, starting at the
documentation hub:
Setup: Installation · Clients · Configuration · Troubleshooting
Using the tools: Tool reference · Work package filters · Field hiding
Client guides: Claude / Claude Code · Claude Desktop · Codex · Cursor · VS Code / GitHub Copilot
Contributing: Development · Architecture · Context efficiency
Configuration essentials
Your client config (.mcp.json, .codex/config.toml, or .vscode/mcp.json)
contains your API token — treat it like a password and keep it out of version
control; choose your client-specific guide from Clients
for the exact .gitignore step. configure writes a minimal config: only the values that differ from a
safe default. Read tools are registered by default, and so are the 5 core
write categories — but project access stays denied either way until you list
projects in OPENPROJECT_READ_PROJECTS (and, for writes, in
OPENPROJECT_WRITE_PROJECTS too); that allowlist pair, not the category
flags, is the real gate.
See Configuration for the full environment variable
reference and what configure --quick vs. --advanced ask.
Security
Prompt Injection
User-provided text (work-package descriptions, comments, news, wiki content) is marked with <user-content> tags and flagged in server instructions as untrusted. Agents should treat this content as data, not as instructions.
See SECURITY.md for the full security model, including prompt injection mitigations, reporting procedures, and supported versions.
Development
git clone https://github.com/jtauschl/openproject-ce-mcp.git
cd openproject-ce-mcp
uv sync --dev
uv run pytestSee Development for the full test suite (unit, integration, and Docker test instances) and RELEASE.md for the maintainer release process.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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/jtauschl/openproject-ce-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server