openproject-codex
Enables Codex to interact with OpenProject for project management, work packages, and reporting.
README
OpenProject Codex Plugin
openproject-codex is a Codex plugin that lets Codex work with OpenProject directly.
Instead of switching back and forth between Codex and the OpenProject UI, you can ask Codex to:
- list projects
- inspect teams, users, and groups
- assign people to projects
- create and update work packages
- comment on work
- manage watchers
- run bulk task operations
- work with wiki pages, boards, and meetings
- generate reports and export dashboards
This plugin uses the OpenProject API where possible and falls back to authenticated OpenProject UI workflows where the public API surface is incomplete.

Dead-Simple Setup
After installing the plugin, you can configure it directly from Codex chat.
Example:
@OpenProject show connection status@OpenProject setup connection with base URL https://projects.medicsprime.in and this API token ...
The plugin now includes onboarding tools that can:
- detect missing configuration without crashing
- accept your OpenProject URL and API token from chat
- save them locally for future use
- verify the connection immediately
Useful setup prompts:
@OpenProject show connection status@OpenProject set up OpenProject using base URL https://projects.medicsprime.in and API token <token>@OpenProject test the current connection@OpenProject who am I in OpenProject?
What This Plugin Is For
Use this plugin when you want to do OpenProject work from inside Codex, such as:
- “List the projects I can access.”
- “Show my assigned work.”
- “Assign these users to the POD initiative project.”
- “Create 20 tasks and assign them to the implementation team.”
- “Comment on every item in this saved query.”
- “Generate an overdue dashboard by assignee.”
- “Export a project health report as HTML or PNG.”
What Codex Can Do With It
Project and workspace management
- inspect connection status
- list projects
- fetch project details
- create projects
- update projects
- delete projects
People and team management
- list users
- fetch user details
- list groups
- fetch group details
- list roles
- list project members
- list project assignees
- create memberships
- update memberships
- delete memberships
- bulk create, update, and delete memberships
Work package management
- list work packages
- search work packages
- fetch full work package details
- fetch raw work package payloads
- create work packages
- update work packages
- delete work packages
- add comments
- create relations
- manage watchers
- list activities, relations, watchers, attachments, and file links
- apply bulk update, comment, watcher, and delete operations
- run the same bulk action against a saved query
Project structure and planning data
- list project versions
- list project categories
- list saved queries
- create, update, delete, and run saved queries
Time and content modules
- list, create, update, and delete time entries
- list and update documents
- list, create, update, and delete news
Boards, wiki, and meetings
- list boards
- create boards
- delete boards
- list wiki pages
- fetch wiki pages by slug
- create wiki pages
- update wiki pages
- delete wiki pages
- list meetings
- fetch meetings by id
- create meetings
- delete meetings
These flows use UI-backed automation where OpenProject does not expose a complete writable public API.
Attachments and links
- upload binary attachments
- inspect attachment metadata
- delete attachments
- list and manage work package file links
Reporting and exports
- assignee workload reports
- burndown-style snapshots from saved queries
- overdue dashboards by assignee or status
- project health export to HTML
- project health export to PNG
How This Works In Codex
Once the plugin is installed and configured, Codex gets MCP tools from this repository.
That means you can ask for outcomes in plain language, and Codex can translate that into tool calls such as:
openproject_list_projectsopenproject_my_workopenproject_create_work_packageopenproject_bulk_update_work_packagesopenproject_report_assignee_workloadopenproject_export_project_health
You usually do not need to call tool names manually. In normal use, you just ask Codex what you want done.
Example Codex Prompts
Day-to-day work
- “List my assigned work in OpenProject.”
- “Show open tasks in
pod-initiativeassigned to me.” - “Create a task called
Prepare API handoffinpod-initiative.” - “Add a comment to work package
1234saying testing is complete.”
Team and project coordination
- “List the members of
pod-initiative.” - “Add user
20topod-initiativeasMember.” - “Assign all tasks in this query to user
20.” - “Bulk add a watcher to all tasks in this saved query.”
Reporting
- “Show me assignee workload for
pod-initiative.” - “Generate a burndown for query
131.” - “Build a dashboard of overdue tasks by team.”
- “Export project health charts as PNG.”
- “Export project health charts as HTML.”
Content and planning
- “Create a wiki page for the POD kickoff checklist.”
- “List project meetings.”
- “Create a meeting for tomorrow at 10:00.”
- “Create a board for POD initiative tracking.”
Installation
Install through the Codex UI
Use this if you want to share the plugin with your team through Codex's marketplace flow.
In Codex:
- Open
Plugins. - Click
+thenAdd plugin marketplace. - Use:
Source: https://github.com/varaprasadreddy9676/openproject-codex-plugin.git
Git ref: main
Sparse paths: .agents/plugins
- Add the marketplace.
- Install
OpenProject Codexfrom that marketplace.
Important:
- Do not point the marketplace dialog at
plugins/codexor the repo root without the marketplace path. - This repository now exposes a Codex marketplace manifest at
.agents/plugins/marketplace.json.
Install from a local clone
1. Clone the repository
git clone https://github.com/varaprasadreddy9676/openproject-codex-plugin.git
cd openproject-codex-plugin
2. Install Python dependencies
python3 -m pip install -e .
If you install through the Codex marketplace, the plugin now bootstraps its own local virtualenv on first run. A manual pip install is still useful for local development, but it is no longer required just to use the plugin.
3. Configure the MCP server for Codex
Create or update .mcp.json:
{
"mcpServers": {
"openproject_codex": {
"command": "python3",
"args": ["./scripts/openproject_mcp.py"],
"cwd": ".",
"env": {
"OPENPROJECT_BASE_URL": "https://your-openproject.example.com",
"OPENPROJECT_DEFAULT_PROJECT": "",
"OPENPROJECT_API_TOKEN_FILE": "~/.codex/secrets/openproject-api-token"
}
}
}
}
4. Add credentials
Minimum API configuration:
OPENPROJECT_BASE_URLOPENPROJECT_API_TOKENorOPENPROJECT_API_TOKEN_FILE
Optional legacy fallback:
OPENPROJECT_BASIC_API_TOKENOPENPROJECT_BASIC_API_TOKEN_FILE
Needed for UI-backed boards, wiki, and meeting tools:
OPENPROJECT_UI_USERNAMEOPENPROJECT_UI_PASSWORD
Or file-backed equivalents:
OPENPROJECT_UI_USERNAME_FILEOPENPROJECT_UI_PASSWORD_FILE
You can also skip manual environment setup and configure the plugin from Codex chat through:
openproject_setup_connectionopenproject_connection_statusopenproject_test_connectionopenproject_clear_saved_connectionopenproject_whoami
Recommended Secret Setup
Example:
mkdir -p ~/.codex/secrets
printf '%s' 'your-openproject-api-token' > ~/.codex/secrets/openproject-api-token
printf '%s' 'your-openproject-username' > ~/.codex/secrets/openproject-ui-username
printf '%s' 'your-openproject-password' > ~/.codex/secrets/openproject-ui-password
chmod 600 ~/.codex/secrets/openproject-*
Then point .mcp.json at those files through environment variables.
Using It In Codex
After the plugin is configured, restart or reload Codex so it picks up the MCP server.
From there:
- Open a Codex thread.
- Ask for the OpenProject task in plain English.
- Codex will call the plugin tools behind the scenes.
Examples:
- “Use OpenProject and list the projects I can access.”
- “Use OpenProject and show my assigned tasks.”
- “Use OpenProject and export a project health report for
pod-initiativeas HTML.”
If the request maps to a tool the plugin exposes, Codex can do it directly.
For first-time setup, you can do this directly in chat instead of editing files:
- Ask Codex to show OpenProject connection status.
- If setup is missing, ask Codex to configure OpenProject with your base URL and API token.
- Ask Codex to test the connection.
- Start using normal project-management prompts.
Tooling Notes
Generic API access
If a specific OpenProject endpoint is not yet wrapped as a dedicated tool, Codex can still use:
openproject_call_api
That makes it possible to hit other /api/v3/... endpoints without waiting for a first-class wrapper.
Work package custom fields
Some OpenProject instances require extra custom fields on create or update.
For those cases, the work package tools support:
field_overrideslink_overrides
Use those to pass instance-specific fields without changing plugin code.
Local Verification
Read-only smoke test
python3 ./scripts/smoke_test.py
This validates:
- API connectivity
- project listing
- role listing
- user listing
- group listing
- “my work” retrieval
Live write smoke test
OPENPROJECT_SMOKE_WRITE=1 python3 ./scripts/smoke_test.py
This creates and removes disposable test artifacts for:
- boards
- wiki pages
- meetings
- wiki and meeting attachments
Optional work package bulk smoke
OPENPROJECT_SMOKE_WRITE=1 OPENPROJECT_SMOKE_WORK_PACKAGE_BULK=1 python3 ./scripts/smoke_test.py
If your instance requires a specific custom option when creating work packages, set:
OPENPROJECT_SMOKE_CUSTOM_OPTION_HREF=/api/v3/custom_options/21
Reporting Examples
These are direct tool examples that Codex can use:
openproject_report_assignee_workload(project="pod-initiative")openproject_report_burndown(query_id=123)openproject_dashboard_overdue_by_team(project="pod-initiative")openproject_export_project_health(project="pod-initiative", file_format="html")openproject_export_project_health(project="pod-initiative", file_format="png")
Current Limits
- Board card and column manipulation is not yet wrapped as a first-class tool surface.
- Meeting editing beyond create/delete is not yet first-class.
- Some OpenProject instances expose project-scoped query routes differently; global query access is more reliable across instances.
- Instance-specific permissions may still block destructive operations even when read and update access works.
Why This Plugin Exists
OpenProject has an official /mcp endpoint, but in practice the writable surface is still limited for many real workflows.
This plugin exists so teams can do real project operations from Codex now:
- operational work
- bulk work
- reporting
- dashboard export
- project coordination
without treating Codex as read-only.
Repository Structure
.agents/plugins/marketplace.jsonrepo-level Codex marketplace manifestplugins/openproject-codex/installable plugin bundle used by the marketplaceplugins/openproject-codex/.codex-plugin/plugin.jsonplugin metadataplugins/openproject-codex/.mcp.jsonMCP server wiring exampleplugins/openproject-codex/scripts/openproject_mcp.pyMCP server implementationplugins/openproject-codex/scripts/smoke_test.pyverification scriptplugins/openproject-codex/skills/openproject-codex/SKILL.mdCodex skill guidance.codex-plugin/plugin.jsonroot plugin manifest kept for direct local development compatibility
License
MIT
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。