Provides comprehensive integration with OpenProject's API v3, enabling AI agents to manage projects, work packages, users, time entries, attachments, versions, and all other project management operations through natural language interactions.
Tonle OpenProject MCP Server
A Model Context Protocol Server for OpenProject - Open Source Project Management Software
Project Overview
Vision Statement
The OpenProject MCP Server is a comprehensive Model Context Protocol (MCP) server that provides seamless integration between AI assistants (such as Claude, Cursor, Windsurf, and other MCP-compatible clients) and OpenProject, the leading open-source project management software. This server enables AI agents to perform the full spectrum of project management operations through OpenProject's API v3, making it possible to automate, query, and manage all aspects of project management through natural language interactions.
What is OpenProject?
OpenProject is an open-source project management software supporting classic, agile, and hybrid project management methodologies. It provides:
Task Management: Work packages with customizable types, statuses, and workflows
Gantt Charts: Visual project timelines and scheduling
Boards: Kanban-style boards for agile workflows
Team Collaboration: User management, memberships, and notifications
Time & Cost Reporting: Time tracking and budget management
Document Management: Wiki pages, attachments, and file storage integrations
Repository Integration: Version control and revision tracking
What is MCP (Model Context Protocol)?
The Model Context Protocol, developed by Anthropic, is an open standard that enables AI applications to connect to external data sources and tools in a standardized way. MCP provides:
Standardized Communication: JSON-RPC 2.0 based protocol for consistent interactions
Universal Compatibility: One integration works with any MCP-compatible AI client
Three Core Primitives: Tools (actions), Resources (data), and Prompts (templates)
Secure Data Access: Controlled, authenticated access to external systems
Project Goals
Primary Objectives
Complete API Coverage: Implement tools for every OpenProject API v3 endpoint, ensuring no functionality is left inaccessible
Intuitive Tool Design: Create well-named, well-documented tools that AI agents can effectively discover and use
Production-Ready Quality: Build a robust, secure, and performant server suitable for enterprise deployment
Extensibility: Design an architecture that can easily accommodate future OpenProject API expansions
Target Users
Development Teams: Automate project management tasks through AI-assisted workflows
Project Managers: Query project status, generate reports, and manage resources via natural language
DevOps Engineers: Integrate project management into CI/CD pipelines and automation scripts
Enterprise Organizations: Enable AI-driven project management at scale
Technical Architecture
Technology Stack
To install dependencies:
To run:
Core Technologies
Component | Technology | Purpose |
Runtime | Bun | Server execution environment |
Language | TypeScript 5.x | Type-safe development |
MCP SDK | @modelcontextprotocol/sdk | MCP protocol implementation |
Validation | Zod | Runtime schema validation |
HTTP Client | Axios/Fetch | OpenProject API communication |
Testing | Vitest | Unit and integration testing |
Documentation | TypeDoc | API documentation generation |
Transport Options
The server supports multiple transport mechanisms:
Stdio Transport: For local development and Claude Desktop integration
Streamable HTTP Transport: For remote deployments and web-based clients
SSE (Server-Sent Events): For real-time notifications and streaming responses
OpenProject API v3 - Complete Endpoint Coverage
API Fundamentals
The OpenProject API v3 is a hypermedia REST API using HAL+JSON format. Key characteristics:
Base URL:
/api/v3/Authentication: OAuth2, Session-based, or Basic Auth (API key)
Response Format: HAL+JSON with embedded resources and links
Pagination: Offset-based with configurable page size (max 1000)
Filtering: JSON-based filter expressions
Sorting: JSON-based sort criteria
Complete Endpoint Categories
The MCP server implements tools for all OpenProject API v3 endpoints organized into the following categories:
1. Work Packages (Core Project Tasks)
Work packages are the fundamental unit of work in OpenProject, representing tasks, features, bugs, milestones, and other work items.
Tool Name | HTTP Method | Endpoint | Description |
| GET |
| List all work packages with filtering |
| GET |
| Get a single work package |
| POST |
| Create a new work package |
| PATCH |
| Update an existing work package |
| DELETE |
| Delete a work package |
| POST |
| Get form for creating work packages |
| POST |
| Get form for updating work packages |
| GET |
| List work packages in a project |
| POST |
| Create work package in a project |
| GET |
| Get work package schema |
| GET |
| List all work package schemas |
| GET |
| Get users who can watch |
| GET |
| List work package watchers |
| POST |
| Add a watcher |
| DELETE |
| Remove a watcher |
| GET |
| Get assignable users |
| GET |
| Get responsible users |
| POST |
| Execute custom action |
Supported Work Package Properties:
Subject, description, type, status, priority
Assignee, responsible, author
Start date, due date, estimated time, remaining time
Percentage done, spent time
Parent work package, children
Project, version, category
Custom fields (customFieldN)
Attachments, relations, watchers
2. Projects
Projects are containers that organize work packages, members, and other resources.
Tool Name | HTTP Method | Endpoint | Description |
| GET |
| List all visible projects |
| GET |
| Get a single project |
| POST |
| Create a new project |
| PATCH |
| Update a project |
| DELETE |
| Delete a project |
| POST |
| Get form for creating projects |
| POST |
| Get form for updating projects |
| POST |
| Copy an existing project |
| GET |
| List available project statuses |
| GET |
| Get a project status |
Supported Project Properties:
Name, identifier, description
Public/private visibility
Active status
Parent project
Status (on_track, at_risk, off_track)
Status explanation
Custom fields
3. Users & Authentication
Tool Name | HTTP Method | Endpoint | Description |
| GET |
| List all users |
| GET |
| Get a single user |
| POST |
| Create a new user |
| PATCH |
| Update a user |
| DELETE |
| Delete a user |
| POST |
| Lock a user account |
| DELETE |
| Unlock a user account |
| GET |
| Get the authenticated user |
User Properties:
Login, email, first name, last name
Admin status
Status (active, registered, locked, invited)
Avatar, language preference
Identity URL (for SSO)
4. Groups
Tool Name | HTTP Method | Endpoint | Description |
| GET |
| List all groups |
| GET |
| Get a single group |
| POST |
| Create a new group |
| PATCH |
| Update a group |
| DELETE |
| Delete a group |
5. Principals (Users, Groups, Placeholder Users)
Tool Name | HTTP Method | Endpoint | Description |
| GET |
| List all principals |
| GET |
| List placeholder users |
| GET |
| Get a placeholder user |
| POST |
| Create placeholder user |
| PATCH |
| Update placeholder user |
| DELETE |
| Delete placeholder user |
6. Memberships
Tool Name | HTTP Method | Endpoint | Description |
| GET |
| List all memberships |
| GET |
| List members within a project |
| GET |
| List members of the project owning a work package |
| GET |
| Get a single membership |
| POST |
| Create a membership |
| PATCH |
| Update a membership |
| DELETE |
| Delete a membership |
| POST |
| Get form for memberships |
| GET |
| Get membership schema |
Membership Features:
Custom notification messages on create/update
Multiple role assignment
Project-specific permissions
7. Roles
Tool Name | HTTP Method | Endpoint | Description |
| GET |
| List all roles |
| GET |
| Get a single role |
8. Time Entries
Tool Name | HTTP Method | Endpoint | Description |
| GET |
| List all time entries |
| GET |
| Get a single time entry |
| POST |
| Create a time entry |
| PATCH |
| Update a time entry |
| DELETE |
| Delete a time entry |
| POST |
| Get form for time entries |
| GET |
| Get time entry schema |
9. Time Entry Activities
Tool Name | HTTP Method | Endpoint | Description |
| GET |
| Get a time entry activity |
10. Activities (Journal Entries)
Tool Name | HTTP Method | Endpoint | Description |
| GET |
| Get an activity |
| PATCH |
| Update activity comment |
| GET |
| List work package activities |
Activity Features:
Internal/external visibility
Attachments on comments
Emoji reactions
11. Attachments
Tool Name | HTTP Method | Endpoint | Description |
| GET |
| Get an attachment |
| DELETE |
| Delete an attachment |
| POST |
| Upload a new attachment |
| GET |
| List work package attachments |
| POST |
| Add attachment to work package |
| GET |
| List activity attachments |
| POST |
| Add attachment to activity |
Attachment Features:
Multipart upload with metadata
Containerless attachments (upload then claim)
Download location links
Content type and file size information
12. Versions (Releases/Milestones)
Tool Name | HTTP Method | Endpoint | Description |
| GET |
| List all versions |
| GET |
| Get a single version |
| POST |
| Create a version |
| PATCH |
| Update a version |
| DELETE |
| Delete a version |
| GET |
| List project versions |
| POST |
| Get form for versions |
| GET |
| Get projects for version creation |
Version Properties:
Name, description, status
Start date, end date
Sharing scope (none, descendants, hierarchy, tree, system)
Custom fields
13. Categories
Tool Name | HTTP Method | Endpoint | Description |
| GET |
| List all categories |
| GET |
| Get a single category |
| GET |
| List project categories |
14. Types (Work Package Types)
Tool Name | HTTP Method | Endpoint | Description |
| GET |
| List all work package types |
| GET |
| Get a single type |
| GET |
| List types available in a project |
Type Properties:
Name, color, position
Is default, is milestone
Attribute groups and visibility
15. Statuses (Work Package Statuses)
Tool Name | HTTP Method | Endpoint | Description |
| GET |
| List all statuses |
| GET |
| Get a single status |
Status Properties:
Name, color, position
Is closed, is default, is readonly
16. Priorities
Tool Name | HTTP Method | Endpoint | Description |
| GET |
| List all priorities |
| GET |
| Get a single priority |
17. Relations
Tool Name | HTTP Method | Endpoint | Description |
| GET |
| List all relations |
| GET |
| Get a single relation |
| POST |
| Create a relation |
| PATCH |
| Update a relation |
| DELETE |
| Delete a relation |
| GET |
| List work package relations |
Relation Types:
relates, duplicates, duplicated, blocks, blocked
precedes, follows, includes, partof, requires, required
18. Queries (Saved Filters)
Tool Name | HTTP Method | Endpoint | Description |
| GET |
| List all queries |
| GET |
| Get a single query |
| POST |
| Create a query |
| PATCH |
| Update a query |
| DELETE |
| Delete a query |
| GET |
| Get the default query |
| PATCH |
| Star a query |
| PATCH |
| Unstar a query |
19. Query Filters, Columns, Operators, Sort Bys
Tool Name | HTTP Method | Endpoint | Description |
| GET |
| List available filters |
| GET |
| Get a single filter |
| GET |
| List available columns |
| GET |
| Get a single column |
| GET |
| List available operators |
| GET |
| Get a single operator |
| GET |
| List available sort options |
| GET |
| Get a single sort option |
| GET |
| Get filter instance schema |
20. Views
Tool Name | HTTP Method | Endpoint | Description |
| GET |
| List all views |
| GET |
| Get a single view |
| POST |
| Create table view |
| POST |
| Create team planner view |
| POST |
| Create Gantt view |
21. Notifications
Tool Name | HTTP Method | Endpoint | Description |
| GET |
| List all notifications |
| GET |
| Get a single notification |
| POST |
| Mark as read |
| POST |
| Mark as unread |
| POST |
| Mark all as read |
| POST |
| Mark all as unread |
Notification Reasons:
mentioned, assigned, responsible, watched
dateAlert, commented, created, scheduled
22. News
Tool Name | HTTP Method | Endpoint | Description |
| GET |
| List all news articles |
| GET |
| Get a single news article |
| GET |
| List project news |
23. Posts (Forum Messages)
Tool Name | HTTP Method | Endpoint | Description |
| GET |
| Get a forum post |
24. Wiki Pages
Tool Name | HTTP Method | Endpoint | Description |
| GET |
| Get a wiki page |
| PUT |
| Update a wiki page |
25. Documents
Tool Name | HTTP Method | Endpoint | Description |
| GET |
| List all documents |
| GET |
| Get a single document |
| GET |
| List project documents |
26. Budgets
Tool Name | HTTP Method | Endpoint | Description |
| GET |
| Get a single budget |
| GET |
| List project budgets |
27. Revisions (Repository Commits)
Tool Name | HTTP Method | Endpoint | Description |
| GET |
| Get a revision |
| GET |
| List work package revisions |
28. File Links & Storages (External File Integration)
Tool Name | HTTP Method | Endpoint | Description |
| GET |
| List all storages |
| GET |
| Get a single storage |
| POST |
| Create a storage |
| PATCH |
| Update a storage |
| DELETE |
| Delete a storage |
| POST |
| Create OAuth credentials |
| GET |
| List project storages |
| GET |
| Get a project storage |
| GET |
| List file links |
| POST |
| Create a file link |
| GET |
| Get a file link |
| DELETE |
| Delete a file link |
Supported Storage Types:
Nextcloud
OneDrive/SharePoint
29. Grids (Dashboard Layouts)
Tool Name | HTTP Method | Endpoint | Description |
| GET |
| List all grids |
| GET |
| Get a single grid |
| POST |
| Create a grid |
| PATCH |
| Update a grid |
| POST |
| Get form for grids |
Grid Widgets:
time_entries_current_user
news, documents
work_packages_table
and more...
30. Work Schedule (Days & Non-Working Days)
Tool Name | HTTP Method | Endpoint | Description |
| GET |
| List days with working status |
| GET |
| Get a single day |
| GET |
| List week days |
| GET |
| Get a week day |
| PATCH |
| Update week day settings |
| GET |
| List non-working days |
| GET |
| Get a non-working day |
| POST |
| Create non-working day |
| PATCH |
| Update non-working day |
| DELETE |
| Delete non-working day |
31. Actions & Capabilities
Tool Name | HTTP Method | Endpoint | Description |
| GET |
| List all actions |
| GET |
| Get a single action |
| GET |
| List user capabilities |
| GET |
| Get a capability |
32. Custom Actions
Tool Name | HTTP Method | Endpoint | Description |
| GET |
| Get a custom action |
| POST |
| Execute custom action |
33. Custom Options (Custom Field Values)
Tool Name | HTTP Method | Endpoint | Description |
| GET |
| Get a custom option |
34. Help Texts
Tool Name | HTTP Method | Endpoint | Description |
| GET |
| List all help texts |
| GET |
| Get a single help text |
35. Project Phases & Definitions
Tool Name | HTTP Method | Endpoint | Description |
| GET |
| List project phases |
| GET |
| Get a project phase |
| GET |
| List phase definitions |
| GET |
| Get phase definition |
36. Previewing (Markup Preview)
Tool Name | HTTP Method | Endpoint | Description |
| POST |
| Preview markdown |
| POST |
| Preview plain text |
37. Schemas
Tool Name | HTTP Method | Endpoint | Description |
| GET |
| Get a specific schema |
38. User Preferences
Tool Name | HTTP Method | Endpoint | Description |
| GET |
| Get current user preferences |
| PATCH |
| Update user preferences |
39. Values (String Objects)
Tool Name | HTTP Method | Endpoint | Description |
| GET |
| Get string object value |
40. Root & Configuration
Tool Name | HTTP Method | Endpoint | Description |
| GET |
| Get API root |
| GET |
| Get instance configuration |
Configuration Properties:
Maximum attachment file size
Host name
Per-page options
Duration format
Active feature flags
41. OAuth 2.0
Tool Name | HTTP Method | Endpoint | Description |
| GET |
| List OAuth applications |
| GET |
| Get OAuth application |
| POST |
| Create OAuth application |
| DELETE |
| Delete OAuth application |
| GET |
| List client credentials |
MCP Server Implementation Details
Tool Implementation Pattern
Each tool follows a consistent implementation pattern:
Resource Implementation
Resources provide read-only access to OpenProject data:
Prompt Templates
Pre-built prompts for common operations:
Configuration
Prerequisites
Before configuring the MCP server, ensure you have:
Bun installed - The server requires Bun runtime
# Install Bun (macOS, Linux, WSL) curl -fsSL https://bun.sh/install | bash # Or using npm npm install -g bunOpenProject API Key - Generate one from your OpenProject instance:
Navigate to your OpenProject instance
Go to "My account" → "Access tokens"
Click "Generate" and copy the API key
Store it securely (you won't be able to see it again)
Clone this repository:
git clone https://github.com/yourusername/tonle.git cd tonle bun install
Environment Variables
The server requires these environment variables:
Note: The current implementation reads environment variables directly. Advanced configuration features (rate limiting, retries) are planned for future releases.
MCP Client Configuration
Claude Desktop
Claude Desktop is Anthropic's official desktop application with built-in MCP support.
Configuration Location
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.json
Configuration
Edit or create the claude_desktop_config.json file:
Important:
Use the absolute path to your
index.tsfileReplace
your-instance.openproject.comwith your actual OpenProject URLReplace
your-api-key-herewith your generated API keyRestart Claude Desktop after configuration changes
Verification
Restart Claude Desktop
Look for the 🔌 icon in the bottom-right corner
Click it to see available MCP servers
You should see "openproject" listed with available tools
Try asking: "List all my OpenProject projects"
Claude Code (CLI)
Claude Code is Anthropic's official command-line interface with built-in MCP support.
Installation
Configuration Location
macOS:
~/.config/claude-code/config.jsonWindows:
%APPDATA%\claude-code\config.jsonLinux:
~/.config/claude-code/config.json
Configuration
Edit or create the config.json file:
Usage
After configuration, start Claude Code:
The OpenProject MCP server will automatically connect when you start Claude Code.
Verification
Start Claude Code CLI
Check for connection messages in the terminal
Try asking: "List all OpenProject tools available"
Test with: "Show me my OpenProject projects"
Tips
Use
claude-code --helpto see all available optionsCheck logs with
claude-code --verbosefor debuggingThe CLI respects the same configuration format as Claude Desktop
Cursor IDE
Cursor is an AI-powered code editor with MCP support.
Configuration Location
All platforms:
.cursor/mcp.jsonin your project root or home directory
Configuration
Create or edit .cursor/mcp.json:
Note: Check Cursor's documentation for the latest MCP configuration format as it may evolve.
Windsurf IDE
Windsurf is an AI-powered development environment with MCP support.
Configuration
Windsurf typically uses a similar configuration format. Check the Windsurf documentation for:
Configuration file location
MCP server registration format
Environment variable handling
Expected configuration format:
MCP Inspector (Development & Testing)
The MCP Inspector is a browser-based tool for testing and debugging MCP servers.
Installation & Usage
What You Can Do
Test Tools: Execute any tool with custom parameters
View Responses: See raw JSON responses from the OpenProject API
Debug Errors: Inspect error messages and stack traces
Explore Schema: View input/output schemas for all tools
Inspector Workflow
Start the Inspector (it will open in your browser)
The server will automatically connect
Browse available tools in the left sidebar
Select a tool to see its parameters
Fill in parameters and click "Execute"
View the response in the output panel
Pro Tip: Use the Inspector to test your OpenProject connection before configuring client applications.
HTTP Transport (Remote/Web Clients)
The MCP server supports HTTP transport using the Streamable HTTP protocol, enabling remote connections from web-based clients or distributed systems.
Starting the HTTP Server
Environment Variables
HTTP Endpoints
Endpoint | Method | Description |
| POST | Handle MCP JSON-RPC requests |
| GET | Get session status |
| DELETE | Close a session |
| GET | Health check endpoint |
Testing the HTTP Server
Use curl to verify the server is running:
Programmatic HTTP Client Integration
MCP Inspector with HTTP Transport
Deploying the HTTP Server
For production deployments:
Using a process manager (PM2):
pm2 start "bun run start:http" --name openproject-mcpUsing Docker:
FROM oven/bun:1 WORKDIR /app COPY . . RUN bun install ENV MCP_HTTP_PORT=3100 EXPOSE 3100 CMD ["bun", "run", "start:http"]Behind a reverse proxy (nginx):
location /mcp { proxy_pass http://localhost:3100; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; }
Configuring MCP Clients to Use HTTP Transport
Many MCP clients (IDEs, CLIs, or custom applications) can connect to a remote MCP server over HTTP instead of spawning it via stdio.
1. Start the HTTP server: Run
bun run start:http(orMCP_HTTP_PORT=3100 bun run start:http) on the machine where the OpenProject MCP server is hosted.2. Expose the : Ensure
http://HOST:PORT/mcpis reachable from your MCP client (optionally via reverse proxy, VPN, or SSH tunnel).3. Configure the client for HTTP:
Point the client to
http://HOST:PORT/mcpas the MCP endpoint.Select HTTP/Streamable HTTP (or equivalent) as the transport type in your client's configuration.
Keep
OPENPROJECT_URLandOPENPROJECT_API_KEYconfigured only on the server side; the client never needs the OpenProject API key.
4. Verify the connection:
Use your client's "list tools" or "introspect MCP servers" feature to confirm that the
openprojecttools are visible.Call a simple tool such as
get_current_userorlist_projectsto confirm end-to-end HTTP connectivity.
The exact JSON configuration format (for example, in
claude_desktop_config.json,.cursor/mcp.json, or other clients) depends on the specific MCP client you use. Refer to your client's documentation for the current syntax for registering HTTP-based MCP servers, usinghttp://HOST:PORT/mcpas the server URL.
Example mcpServers Configuration with HTTP Protocol
For clients that support HTTP transport configuration, use the following format:
Remote Server Configuration:
Notes:
The
typefield specifies HTTP transport (may vary by client:"http","streamable-http", or"sse")Environment variables in
envare passed to the HTTP server when applicableFor remote servers, ensure the endpoint is accessible and properly secured (HTTPS recommended)
The OpenProject credentials (
OPENPROJECT_URLandOPENPROJECT_API_KEY) should be configured on the server side, not in the client configuration
Custom MCP Clients
The server supports two transport mechanisms:
Option 1: STDIO Transport (Local/Subprocess)
Best for local development and desktop applications that spawn the server as a subprocess.
Protocol: Standard input/output streams
Command:
bun run /path/to/tonle/index.tsEnvironment Variables: Pass
OPENPROJECT_URLandOPENPROJECT_API_KEYProtocol Version: MCP SDK version 1.22.0
Option 2: HTTP Transport (Remote/Web)
Best for web applications, remote clients, or microservice architectures.
Protocol: Streamable HTTP (JSON-RPC over HTTP with SSE)
URL:
http://your-server:3100/mcpEnvironment Variables: Set on the server side
Protocol Version: MCP SDK version 1.22.0
Testing Your Configuration
Quick Connection Test
After configuring your MCP client, test the connection:
List all tools: Ask your AI assistant to show available OpenProject tools
Get current user: Try
get_current_usertool to verify authenticationList projects: Try
list_projectsto confirm API access
Example Queries
Try these natural language queries:
"Show me all my OpenProject projects"
"List work packages in project X"
"Create a new task in project Y with title 'Setup testing environment'"
"Who is the current authenticated user?"
"Show me all work package types available"
Troubleshooting
Issue | Solution |
Server not appearing in client | Check absolute path to
, restart client |
Authentication errors | Verify API key is correct and has proper permissions |
Connection timeout | Check
is accessible and correct |
Bun command not found | Ensure Bun is installed and in your PATH |
Tools not loading | Check server logs for errors, verify OpenProject instance is running |
Viewing Server Logs
When running via MCP clients, server logs (from console.error()) typically appear in:
Claude Desktop: View → Developer → Toggle Developer Tools → Console
MCP Inspector: Visible in the terminal where you ran the inspector
Cursor/Windsurf: Check the IDE's output/debug panels
Advanced Configuration
Using Environment Files
For development, create a .env file (never commit this):
Load it before running:
Multiple OpenProject Instances
To connect to multiple OpenProject instances, create separate server entries:
Docker Deployment
While the server primarily uses stdio transport (local only), future HTTP transport support will enable Docker deployment:
Note: HTTP transport implementation is planned for future releases.
Security Considerations
Authentication
API Key Security: API keys should be stored securely using environment variables or secret management systems
OAuth 2.0: Support for OAuth 2.0 with authorization code flow and PKCE
Session Management: Proper handling of session tokens with secure refresh mechanisms
Authorization
All operations respect OpenProject's permission system
Tools only expose actions the authenticated user is authorized to perform
Sensitive operations require explicit confirmation
Data Protection
HTTPS enforcement for all API communications
No sensitive data logging
Request/response payload sanitization
Error Handling
Standard Error Responses
Error Recovery
Automatic retry with exponential backoff for transient errors
Clear error messages with actionable suggestions
Graceful degradation for non-critical failures
Testing Strategy
Unit Tests
Individual tool handler testing
Schema validation testing
Error handling verification
Integration Tests
Full API endpoint testing against OpenProject test instance
Authentication flow testing
Rate limiting behavior verification
End-to-End Tests
Complete workflow testing with MCP Inspector
Claude Desktop integration testing
Performance benchmarking
Deployment Options
Local Development
Docker Deployment
Kubernetes Deployment
Project Roadmap
Phase 1: Core Implementation (MVP)
Project setup and configuration
OpenProject API client implementation
Work packages CRUD tools
Projects CRUD tools
Basic authentication (API key)
Stdio transport support
Phase 2: Extended Coverage
All remaining endpoint implementations
OAuth 2.0 authentication
Resource providers
Prompt templates
HTTP transport support
Phase 3: Enterprise Features
Rate limiting and throttling
Caching layer
Audit logging
Multi-instance support
SSO integration
Phase 4: Advanced Features
Webhook event handling
Real-time notifications via SSE
Batch operations
Advanced filtering DSL
AI-assisted project planning prompts
Contributing
Development Setup
Code Style
ESLint with TypeScript rules
Prettier for formatting
Conventional commits for changelog generation
Pull Request Process
Create feature branch from
mainImplement changes with tests
Ensure all tests pass
Update documentation
Submit PR with detailed description
License
MIT License - See LICENSE file for details
Acknowledgments
OpenProject GmbH for the excellent open-source project management software
Anthropic for developing the Model Context Protocol
MCP Community for tooling and best practices
Support & Resources
OpenProject Documentation: https://www.openproject.org/docs/
OpenProject API Reference: https://www.openproject.org/docs/api/
MCP Specification: https://spec.modelcontextprotocol.io/
MCP TypeScript SDK: https://github.com/modelcontextprotocol/typescript-sdk
This project description was created as a comprehensive blueprint for implementing a full-featured MCP server for OpenProject. The implementation covers all available API endpoints to provide complete project management capabilities through AI assistants.
This server cannot be installed