OpenProject CE

io.github.jtauschl由 GitHub 账号 jtauschl 发布v0.4.4更新于 Oct 29, 2026

MCP server for OpenProject Community Edition with guarded read/write support.

已验证STDIO仅桌面效率与工作流开发者工具

概览

AI 生成的概览

面向 OpenProject 社区版的本地 MCP 服务器,让 AI 助手通过受控工具读取和管理项目、工作包、会议、看板与工时记录。

可以做什么
  • 列出、创建、复制、更新和删除项目;管理成员关系、版本与角色
  • 按条件列出和搜索工作包;创建、更新、删除工作包,添加子任务、关联、评论、附件和关注者;登记工时
  • 创建、读取、更新和删除看板与保存的查询,读取视图
  • 创建、读取、更新和删除会议及其议程项与结论,包括周期性会议系列
  • 可选的管理功能:用户、用户组、文件存储连接、工作时间与非工作时间
  • 辅助数据:wiki 页面、新闻、文档、通知、帮助文本和网格
适用场景
适用于在自建的 OpenProject 社区版中工作、希望助手直接查询或维护项目数据而不必手写 REST 请求的场景。精简的响应和项目白名单适合需要限定在特定项目范围内的助手。
运行要求
以 Python 包形式通过 stdio 在本地运行(pipx、uv tool install 或 uvx)。需要 OPENPROJECT_BASE_URL 和放在 OPENPROJECT_API_TOKEN 中的 OpenProject API 令牌;只有列入 OPENPROJECT_READ_PROJECTS 的项目才可读取,写入还需列入 OPENPROJECT_WRITE_PROJECTS。需要能访问 OpenProject 实例的网络。
安装前请注意
API 令牌保存在客户端配置文件中,应避免提交到版本控制。写入操作会创建、修改和删除真实项目数据,包括用户、成员关系和工时;写入采用先预览后确认的模式,但删除等简单操作在确认后直接执行。工作包描述、评论等内容属于不可信数据,可能包含提示注入。仅支持社区版。

安装

在 SourceWeft 中

  1. 打开 控制台中的 OpenProject CE,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

OpenProject CE MCP

[PyPI] [Python 3.10+] [License: MIT] [MCP]

[Hero image showing a Python terminal and an OpenProject board connected by a structured data stream.]

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, meetings, 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 −99% 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.

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, read (images and text inlined for the model), 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

Meetings

  • Create, read, update, and delete meetings with their agenda items, sections, and outcomes
  • Manage recurring meetings: create, update, and delete series; list occurrences; initialize or cancel a single occurrence

Administration and schedules (opt-in)

  • Read user accounts and group memberships
  • Create, update, lock, unlock, and delete users; add and remove group members
  • Read and manage file storage connections (e.g. Nextcloud)
  • Read and manage users' non-working times and working hours

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
  • 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
  • The core read groups (projects, work packages, memberships, versions, boards, meetings) are on by default, but until OPENPROJECT_READ_PROJECTS lists a project, only project-independent tools such as list_statuses, list_types and get_current_user are registered. Personal, admin, user-schedule, and extended metadata tools are opt-in
  • The project-scoped write categories are on by default, but their tools are registered only when both OPENPROJECT_READ_PROJECTS and OPENPROJECT_WRITE_PROJECTS list a project, and a write reaches only projects in both. The allowlists, not the category flags, are the real gate. Personal-data, admin, and user-schedule writes are opt-in
  • Create 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 — and not just for listing. The numbers below are measured against the same three representative work packages (real tiktoken counts, not a bytes/4 approximation); read/search/write/batch calls all land in the same −85% to −98% range. For the full per-call-type breakdown, the tool-catalog size numbers, and how to reproduce them, see Context efficiency.

ResponseTokensvs. raw API
Raw OpenProject REST API v3 (HAL)~9,992baseline
list_work_packages (MCP)~861−91%
list_work_packages with select (5 fields)~174−98%

Install

This quickstart requires pipx; see Installation if it isn't installed yet.

bash
pipx install openproject-ce-mcpopenproject-ce-mcp configureopenproject-ce-mcp --version

Already use uv? uv tool install openproject-ce-mcp works the same way. See Installation for when plain pip install is appropriate instead, and for uvx (a zero-install, run-on-demand alternative to installing at all).

configure 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:


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. The core read groups and the project-scoped write categories are enabled by default, but their project-bound tools are registered, and project access is granted, only once 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.


Questions and bug reports

Ask questions in GitHub Discussions. Report bugs and request features in GitHub Issues. Report security vulnerabilities privately as described in SECURITY.md.


Development

main is a frozen snapshot of the last release, not the active development branch. See CONTRIBUTING.md for which branch to clone (active development vs. bugfixes) and the full test suite (unit, integration, and Docker test instances).


License

MIT — see LICENSE. A single top-level license file covers the whole project; individual source files don't carry per-file copyright headers, matching common practice for MIT-licensed Python packages.

来源:README.md,提交 e61a816

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v0.4.4最新Oct 29, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分