AndyEverything/openproject-mcp-server
If you are the rightful owner of openproject-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
The OpenProject MCP Server is an early-stage project designed to integrate seamlessly with the OpenProject API v3, enabling LLM applications to manage projects, track work packages, and create tasks.
⚠️ This is an early-stage project. Do not use it productively – contributions welcome!
OpenProject MCP Server
A Model Context Protocol (MCP) server that provides seamless integration with OpenProject API v3. This server enables LLM applications to interact with OpenProject for project management, work package tracking, and task creation.
Features
- 🔌 Full OpenProject API v3 Integration
- 📋 Project Management: List and filter projects
- 📝 Work Package Management: Create, list, and filter work packages
- 🏷️ Type Management: List available work package types
- 🔐 Secure Authentication: API key-based authentication
- 🌐 Proxy Support: Optional HTTP proxy configuration
- 🚀 Async Operations: Built with modern async/await patterns
- 📊 Comprehensive Logging: Configurable logging levels
Prerequisites
- Python 3.8 or higher
- An OpenProject instance (cloud or self-hosted)
- OpenProject API key (generated from your user profile)
Installation
- Clone the repository:
git clone https://github.com/yourusername/openproject-mcp.git
cd openproject-mcp
- Create a virtual environment:
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
- Install dependencies:
pip install -r requirements.txt
- Copy the environment template:
cp .env.example .env
- Edit
.env
and add your OpenProject configuration:
OPENPROJECT_URL=https://your-instance.openproject.com
OPENPROJECT_API_KEY=your-api-key-here
Configuration
Environment Variables
Variable | Required | Description | Example |
---|---|---|---|
OPENPROJECT_URL | Yes | Your OpenProject instance URL | https://mycompany.openproject.com |
OPENPROJECT_API_KEY | Yes | API key from your OpenProject user profile | 8169846b42461e6e... |
OPENPROJECT_PROXY | No | HTTP proxy URL if needed | http://proxy.company.com:8080 |
LOG_LEVEL | No | Logging level (DEBUG, INFO, WARNING, ERROR) | INFO |
TEST_CONNECTION_ON_STARTUP | No | Test API connection when server starts | true |
Getting an API Key
- Log in to your OpenProject instance
- Go to My account (click your avatar)
- Navigate to Access tokens
- Click + Add to create a new token
- Give it a name and copy the generated token
Usage
Running the Server
python openproject-mcp.py
Note: If you renamed the file from openproject_mcp_server.py
, update your configuration accordingly.
Integration with Claude Desktop
Add this configuration to your Claude Desktop config file:
Windows: %APPDATA%\Claude\claude_desktop_config.json
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"openproject": {
"command": "python",
"args": ["path/to/openproject-mcp.py"]
}
}
}
Available Tools
1. test_connection
Test the connection to your OpenProject instance.
Example:
Test the OpenProject connection
2. list_projects
List all projects you have access to.
Parameters:
active_only
(boolean, optional): Show only active projects (default: true)
Example:
List all active projects
3. list_work_packages
List work packages with optional filtering.
Parameters:
project_id
(integer, optional): Filter by specific projectstatus
(string, optional): Filter by status - "open", "closed", or "all" (default: "open")
Example:
Show all open work packages in project 5
4. list_types
List available work package types.
Parameters:
project_id
(integer, optional): Filter types by project
Example:
List all work package types
5. create_work_package
Create a new work package.
Parameters:
project_id
(integer, required): The project IDsubject
(string, required): Work package titletype_id
(integer, required): Type ID (e.g., 1 for Task)description
(string, optional): Description in Markdown formatpriority_id
(integer, optional): Priority IDassignee_id
(integer, optional): User ID to assign to
Example:
Create a new task in project 5 titled "Update documentation" with type ID 1
Development
Running Tests
pytest tests/
Code Formatting
black openproject-mcp.py
flake8 openproject-mcp.py
Troubleshooting
Connection Issues
- 401 Unauthorized: Check your API key is correct and active
- 403 Forbidden: Ensure your user has the necessary permissions
- 404 Not Found: Verify the OpenProject URL and that resources exist
- Proxy Errors: Check proxy settings and authentication
Debug Mode
Enable debug logging by setting:
LOG_LEVEL=DEBUG
Common Issues
- No projects found: Ensure your API user has project view permissions
- SSL errors: May occur with self-signed certificates or proxy SSL interception
- Timeout errors: Increase timeout or check network connectivity
Security Considerations
- Never commit your
.env
file to version control - Use environment variables for sensitive data
- Rotate API keys regularly
- Use HTTPS for all OpenProject connections
- Configure proxy authentication securely if needed
Contributing
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
License
This project is licensed under the MIT License - see the file for details.
Acknowledgments
- Built for the Model Context Protocol
- Integrates with OpenProject
- Inspired by the MCP community
Support
- 🐛 Issues: GitHub Issues
- 💬 Discussions: GitHub Discussions