原型 · 预览版:收录官方注册中心里的全部服务器,每 30 分钟同步一次。评价和账户功能将在后续阶段推出。
PopNx MCP为使用 AI 的人准备的 MCP 服务器 · 用大白话讲清楚

OpenProject

作者:kar-thik版本 0.5.0i★ –i在你的电脑上运行
注册名称io.github.kar-thik/openproject-mcp-server

安装

概览

作者提供的说明(英文原文)

91 tools for the OpenProject API v3, with read-only, admin-gate, profile and per-group switches.

PopNx MCP 的三大支柱

这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。

它能帮你做什么

我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。

  • 连接方式: 在你的电脑上运行
  • 传输方式: stdio
  • 分类: 其他
  • 你需要填写:OPENPROJECT_URL, OPENPROJECT_API_KEY, OPENPROJECT_OAUTH_TOKEN

安装

选择你使用的 AI 应用,然后复制设置。

安装之前

  • 基础检查:1 项中通过 1 项
  • 在你的电脑上运行,拥有你的用户账户的权限(文件、网络、应用)。
  • 需要你自己填写: OPENPROJECT_URL, OPENPROJECT_API_KEY, OPENPROJECT_OAUTH_TOKEN, OPENPROJECT_MCP_READ_ONLY, OPENPROJECT_MCP_ADMIN_TOOLS, OPENPROJECT_MCP_DISABLE, OPENPROJECT_MCP_PROFILE

标为机密的值是你账户的钥匙。千万不要分享给别人,也不要粘贴到聊天里。

你需要

  • PyPI已安装 Python 的 uv(用于 uvx 命令)

你用的是哪个应用?

在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。

打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json

{
  "mcpServers": {
    "openproject": {
      "command": "uvx",
      "args": [
        "openproject-mcp-server"
      ],
      "env": {
        "OPENPROJECT_URL": "your-value",
        "OPENPROJECT_API_KEY": "your-value",
        "OPENPROJECT_OAUTH_TOKEN": "your-value",
        "OPENPROJECT_MCP_READ_ONLY": "your-value",
        "OPENPROJECT_MCP_ADMIN_TOOLS": "your-value",
        "OPENPROJECT_MCP_DISABLE": "your-value",
        "OPENPROJECT_MCP_PROFILE": "your-value"
      }
    }
  }
}

在终端中运行这条命令

claude mcp add openproject --env OPENPROJECT_URL=your-value --env OPENPROJECT_API_KEY=your-value --env OPENPROJECT_OAUTH_TOKEN=your-value --env OPENPROJECT_MCP_READ_ONLY=your-value --env OPENPROJECT_MCP_ADMIN_TOOLS=your-value --env OPENPROJECT_MCP_DISABLE=your-value --env OPENPROJECT_MCP_PROFILE=your-value -- uvx openproject-mcp-server

运行前请先填写空着的值。

在 Cursor 中打开

或者自己复制设置

粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json

{
  "mcpServers": {
    "openproject": {
      "command": "uvx",
      "args": [
        "openproject-mcp-server"
      ],
      "env": {
        "OPENPROJECT_URL": "your-value",
        "OPENPROJECT_API_KEY": "your-value",
        "OPENPROJECT_OAUTH_TOKEN": "your-value",
        "OPENPROJECT_MCP_READ_ONLY": "your-value",
        "OPENPROJECT_MCP_ADMIN_TOOLS": "your-value",
        "OPENPROJECT_MCP_DISABLE": "your-value",
        "OPENPROJECT_MCP_PROFILE": "your-value"
      }
    }
  }
}

浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。

在 VS Code 中打开

或者自己复制设置

粘贴到项目中的 .vscode/mcp.json

{
  "servers": {
    "openproject": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "openproject-mcp-server"
      ],
      "env": {
        "OPENPROJECT_URL": "your-value",
        "OPENPROJECT_API_KEY": "your-value",
        "OPENPROJECT_OAUTH_TOKEN": "your-value",
        "OPENPROJECT_MCP_READ_ONLY": "your-value",
        "OPENPROJECT_MCP_ADMIN_TOOLS": "your-value",
        "OPENPROJECT_MCP_DISABLE": "your-value",
        "OPENPROJECT_MCP_PROFILE": "your-value"
      }
    }
  }
}

浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。

这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。

你的选择通过 Cookie 保存在这台设备上,无需账户。

需要你填写的值

  • OPENPROJECT_URL 必填 env
    OpenProject instance root URL, e.g. https://openproject.example.com
  • OPENPROJECT_API_KEY 机密 必填 env
    API key from My account -> Access tokens in OpenProject
  • OPENPROJECT_OAUTH_TOKEN 机密 env
    OAuth bearer token used instead of the API key (OAuth deployments)
  • OPENPROJECT_MCP_READ_ONLY env
    Set to 1 to serve read tools only
  • OPENPROJECT_MCP_ADMIN_TOOLS env
    Set to 1 to enable the membership-write tools (hidden by default)
  • OPENPROJECT_MCP_DISABLE env
    Comma-separated tool groups to drop, e.g. meetings,budgets
  • OPENPROJECT_MCP_PROFILE env
    core (default) or full: core hides the module-backed tool groups at startup

这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。

它能做什么

它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。

基础检查i

我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月7日

  • ✓ 通过

    作者与仓库一致

    注册名称已通过 GitHub 账户 kar-thik 验证,该账户拥有此仓库

  • … 尚未检查

    仍在维护

    我们还没有从 GitHub 读取这个仓库

  • … 尚未检查

    有许可证

    我们还没有从 GitHub 读取这个仓库

  • – 不适用

    端点有响应

    它在你的电脑上运行,没有互联网端点

  • – 不适用

    使用 OAuth 登录

    在你的电脑上运行,改用本地设置

  • … 尚未检查

    工具描述中没有隐藏指令

    它在你的电脑上运行;我们只能读取互联网端点的工具列表

与“其他”中的其他服务器比较i

  • 星标数多于此分类中其他 32661 个服务器的 0%
  • 发布到注册中心的时间比此分类中其他 32661 个服务器的 80% 更新
  • 基础检查结果等于或优于此分类中其他 32661 个服务器的 100%

与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。

常见问题

OpenProject 安全吗?

它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。

它需要哪些密钥或代码?

你需要填写:OPENPROJECT_URL, OPENPROJECT_API_KEY, OPENPROJECT_OAUTH_TOKEN

它在我的电脑上运行还是在云端?

它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。

它还在维护吗?

GitHub 仓库最后更新于–,最新版本(0.5.0)于8天前进入注册中心。

哪些应用可以使用它?

支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Python (uv)。

有什么可以替代它?

同一分类中有:Spec Driven Development, Remote Desktop Commander, Claude Checkpoint MCP

替代选择

同一分类中其他作者的服务器,按星标数排序。

如何看卡片:★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i

Spec Driven Development

作者:formulahendry

MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.

在你的电脑上运行★ 440MIT14个月前更新
安装

Remote Desktop Commander

作者:desktop-commander

Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.

在云端运行★ 211前天更新
安装

Claude Checkpoint MCP

作者:daniel-munoz

MCP server that checkpoints Claude Code session context to survive crashes and token limits

在你的电脑上运行今天更新
安装

作者的 README

打开 README

按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。

OpenProject MCP Server

An MCP (Model Context Protocol) server for the OpenProject API v3. It gives Claude and any other MCP client 91 tools covering work packages, comments and relations, attachments, git/PR activity, projects, saved queries, notifications, time tracking, versions, people and memberships, meetings, news, documents, budgets and reporting — plus 4 report/workflow prompts and 3 resource templates. Built on FastMCP 4.x and httpx (HTTP/2); speaks MCP 2026-07-28 and the earlier handshake versions.

This project is aimed at the OpenProject Community edition. OpenProject's Enterprise edition now ships with its own built-in MCP integration; this server brings the same capability to self-hosted Community instances. It runs fine against any edition — it only needs the public API v3.

Design principles, all enforced in code:

  • Structured everything. Every tool returns a typed model, so clients get an outputSchema and machine-readable structuredContent, not prose. Errors come back as a JSON envelope with a stable type, the upstream http_status, a message and a hint describing how to correct the call.
  • Honest degradation. OpenProject instances differ by version, installed modules and permissions. Tools report what they could not see as in-band notes — a missing module yields an empty page with an explanation, never a fake success or a bare traceback.
  • Safe by default. A read-only mode, admin-gated membership writes, per-group tool disabling, a confirm=true guard on every destructive tool, TLS always verified, and credentials that never appear in logs.
  • Version-adaptive. Targets OpenProject 14 LTS through 17.x; API differences are detected by a lazy, cached feature probe instead of assumptions (see Supported OpenProject versions).

What it looks like

Two exchanges against a fictional "Website Relaunch" project — every id, name and date below is invented. You describe the outcome; the model picks the tools, and what comes back to it is a typed object rather than prose to re-parse.

You         What is still open in Website Relaunch and due by Friday? The checkout

bug is urgent — raise it and leave a note for whoever owns it.

→ list_work_packages(project="website-relaunch", status_scope="open", due_before="2026-03-13", sort_by=[["due_date", "asc"]])

{ "items": [ { "id": 4821, "subject": "Checkout fails on expired coupon codes", "type": {"id": 7, "name": "Bug"}, "status": {"id": 7, "name": "In progress"}, "assignee": {"id": 118, "name": "Dana Okafor"}, "due_date": "2026-03-11" }, { "id": 4830, "subject": "Move press-kit assets to the new CDN", "type": {"id": 1, "name": "Task"}, "status": {"id": 1, "name": "New"}, "assignee": null, "due_date": "2026-03-13" }], "pagination": {"total": 2, "page": 1, "page_size": 20, "has_more": false} }

→ update_work_package(id=4821, priority="High") → add_work_package_comment(id=4821, comment="Raised to High — it blocks the launch checklist. Dana, can you take a look today?")

Assistant Two open items are due by Friday. #4821 is High now and the note is on its thread; #4830 is due Friday and still has nobody on it.

The rows above are abridged: each one also carries priority, project, start_date, percentage_done and updated_at, and the envelope keeps groups, sums and notes slots for the calls that fill them.

The prompt templates cut out the tool round trips: the server reads OpenProject itself and hands back a finished document rather than instructions to go and fetch one. It arrives prefaced with a note that the numbers are already computed and must not be recomputed or embellished.

You         /weekly_report project=website-relaunch

WEEKLY REPORT - AGILE SCRUM

_Generated from live OpenProject data_ ...

B. EXECUTIVE SUMMARY

Progress against the sprint goal: Not assessed — sprint goal and completion dates are not available

Currently closed work updated in the window:

  1. #4802 - Ship the new pricing page
  2. #4795 - Halve the hero image payload ...
Data notes
  • open/closed bucketing uses each status's isClosed flag from GET /statuses, not status names; a status this instance renamed or translated is still bucketed correctly

That last block is the house style: a report says which of its numbers are partial, and a tool that could not read something returns the gap as a note instead of guessing. The whole surface is in Tools and Prompts and resources.

Requirements

  • Python >= 3.12
  • An OpenProject instance, version 14 LTS through 17.x (any edition; aimed at Community — Enterprise ships its own MCP integration)
  • An OpenProject API key: in OpenProject, go to My account → Access tokens and generate an API token

Installation

The distribution name is openproject-mcp-server. It installs two identical console scripts, openproject-mcp-server and openproject-mcp; the long form is canonical (an unrelated PyPI package also installs a bin named openproject-mcp).

Run one-shot with uv, no install step:

uvx openproject-mcp-server

Or install persistently:

uv tool install openproject-mcp-server

or

pip install openproject-mcp-server

The minimal configuration is two environment variables:

export OPENPROJECT_URL=https://openproject.example.com

export OPENPROJECT_API_KEY=your-api-key

Validate the configuration without starting the server:

openproject-mcp-server --check

--check verifies the configuration and exits; it does not contact your instance. Once connected through a client, call the get_instance_info tool for a live end-to-end check. When configuration is missing or invalid, the server prints the specific problems to stderr and exits with code 2 — never a traceback.

Claude Code
claude mcp add openproject \

--env OPENPROJECT_URL=https://openproject.example.com \ --env OPENPROJECT_API_KEY=your-api-key \ -- uvx openproject-mcp-server

Claude Desktop and other MCP clients

Add to claude_desktop_config.json (or your client's equivalent mcpServers config):

{

"mcpServers": { "openproject": { "command": "uvx", "args": ["openproject-mcp-server"], "env": { "OPENPROJECT_URL": "https://openproject.example.com", "OPENPROJECT_API_KEY": "your-api-key" } } } }

From source
git clone https://github.com/kar-thik/openproject-mcp

cd openproject-mcp uv sync uv run openproject-mcp-server

Updating or rotating your API token

When a token is regenerated, revoked or invalidated (OpenProject major upgrades can do this — the symptom is every tool suddenly failing with authentication_failed / HTTP 401), generate a fresh one in OpenProject under My account → Access tokens and update it wherever your key lives:

  • Shell environment (easiest to rotate). The server reads OPENPROJECT_API_KEY straight from the OS environment, so you can export it globally — e.g. in ~/.zshenv — and register the server with no --env flags at all:
  claude mcp add openproject -- uvx openproject-mcp-server

Rotation is then: edit the export, open a fresh terminal, reconnect. The client config never contains a secret. (This does not work for GUI apps like Claude Desktop, which don't read your shell profile.)

  • Claude Code with `--env`. The registration stores the key, so replace it:
  claude mcp remove openproject

claude mcp add openproject \ --env OPENPROJECT_URL=https://openproject.example.com \ --env OPENPROJECT_API_KEY=new-key \ -- uvx openproject-mcp-server

Then reconnect via /mcp (a running session keeps the old environment until it does).

  • Claude Desktop and other JSON-configured clients. Edit the OPENPROJECT_API_KEY value in the client config and restart the client.
  • `.env` file. Edit the file and restart the server.

Recent OpenProject versions allow several API tokens in parallel, so you can rotate with zero downtime: create the new token, switch your clients over, then revoke the old one.

Configuration

Configuration is entirely environment-driven. The table below is the authoritative reference: the server binds exactly these 26 names and no others. Bare, unprefixed names such as READ_TIMEOUT or API_KEY are deliberately ignored (a stray variable in your shell cannot change or break the server), as is any other unknown variable. A .env file in the server's working directory is read with the same names; real environment variables take precedence. From-source users can start from .env.example.

VariableDefaultPurpose
OPENPROJECT_URL— (required)Instance root URL, e.g. https://openproject.example.com. A trailing /api/v3 is tolerated and stripped.
OPENPROJECT_API_KEY— (required*)API key from My account → Access tokens. Sent as HTTP Basic apikey: .
OPENPROJECT_OAUTH_TOKENunsetOAuth bearer token, as an alternative to the API key. *One of the two credentials is required.
OPENPROJECT_MCP_ACCEPT_LANGUAGEunsetSent as the Accept-Language header; OpenProject localizes validation messages accordingly.
OPENPROJECT_MCP_CA_BUNDLEsystem trust storePath to a CA bundle (PEM) for instances behind a private CA. TLS is always verified; there is deliberately no off switch.
OPENPROJECT_MCP_READ_ONLYfalseServe read tools only: every write, destructive and admin tool is removed at startup.
OPENPROJECT_MCP_ADMIN_TOOLSfalseExpose the three admin-gated membership write tools (hidden by default).
OPENPROJECT_MCP_DISABLEemptyComma-separated group tags to remove whole tool groups at startup (see below).
OPENPROJECT_MCP_PROFILEcorecore hides the module-backed groups at startup; a client can bring one back with enable_tool_group (see below). full lists every group.
OPENPROJECT_MCP_INSECUREfalseAllow --transport http to start without auth tokens. Local development only.
OPENPROJECT_MCP_DOWNLOAD_DIR./openproject-downloadsDirectory where download_attachment writes files (created if missing; default is relative to the server's working directory).
OPENPROJECT_MCP_UPLOAD_ROOTunsetWhen set, upload_attachment and create_work_package(attachment_paths) read only files beneath this existing directory; paths and symlinks resolving outside it are refused. Recommended for --transport http.
OPENPROJECT_MCP_DOWNLOAD_ROOTunsetWhen set, download_attachment writes only beneath this existing directory and saves there by default; a save_dir outside it is refused. Recommended for --transport http.
OPENPROJECT_MCP_MAX_DOWNLOAD_MB100Size cap for attachment downloads, in MiB.

| OPENPROJECT_MCP_MAX_INLINE_MB | 10 | Size cap for attachment bytes returned inl

只显示了开头部分;其余内容请在仓库中阅读

问 PopNx