OpenProject MCP Server
OpenProject MCP Server
Ein hochwertiger Model Context Protocol (MCP)-Server, um Claude mit deiner OpenProject-Instanz zu verbinden. Er ermöglicht Claude, Projekte, Work Packages, Benutzer und Zeiteinträge direkt aus Gesprächen heraus abzufragen, zu durchsuchen und zu verwalten.
🚀 Funktionen
✅ Projektzugriff – Projekte auflisten, filtern und Details abrufen
✅ Work-Package-Verwaltung – Aufgaben, Bugs, Features mit erweiterter Filterung anzeigen
✅ Volltextsuche – Work Packages nach Inhalt durchsuchen
✅ Aktivitätsverlauf – Änderungen und Kommentare an Work Packages einsehen
✅ Benutzerverwaltung – Benutzer auflisten und Informationen abrufen
✅ Zeiteinträge – Registrierte Zeiten nach Projekt, Benutzer, Zeitraum abfragen
✅ Intelligente Paginierung – Unterstützung für große Datensätze
✅ Robuste Fehlerbehandlung – Klare und umsetzbare Meldungen
✅ Vollständige Typisierung – TypeScript für maximale Typsicherheit
Related MCP server: OpenProject MCP Server
📋 Voraussetzungen
Node.js 18+ oder Bun 1.0+
Eine OpenProject-Instanz 13+ mit API-Zugang
Ein API-Token von OpenProject (in den Einstellungen generierbar)
🔧 Installation
1. Server klonen oder herunterladen
cd openproject-mcp-server2. Abhängigkeiten installieren
npm install
# o con bun
bun install3. Umgebungsvariablen konfigurieren
Kopiere .env.example nach .env und fülle die Werte aus:
cp .env.example .envBearbeite .env:
OPENPROJECT_URL=https://openproject.empresa.com
OPENPROJECT_API_TOKEN=tu-token-api-aqui
OPENPROJECT_PAGE_SIZE=50So erstellst du einen API-Token in OpenProject:
Gehe in OpenProject zu Administration → API & Webhooks → Personal Access Tokens
Klicke auf „+ New Personal Access Token"
Vergib einen beschreibenden Namen (z. B. „Claude MCP")
Markiere die erforderlichen Berechtigungen:
✅
view_work_packages✅
view_projects✅
view_users✅
view_time_entries✅
edit_work_packages(falls du erstellen/bearbeiten möchtest)
Kopiere das generierte Token in
.env
4. Server kompilieren
npm run build🎯 Verwendung
Option A: In Claude Code
Öffne Claude Code
Gehe zu Settings → MCP Servers
Klicke auf + Add Local Server
Konfiguriere:
Name:
openprojectCommand:
nodeArguments:
["path/to/openproject-mcp-server/dist/index.js"]Environment Variables: Die Werte aus
.env
Speichern und zu Claude neu verbinden
Option B: Lokal zum Testen ausführen
npm run devVerwende dann in einem anderen Terminal den MCP Inspector:
npm run inspectDadurch wird eine Weboberfläche geöffnet, in der du jedes Tool testen kannst.
Option C: In Claude.ai
Öffne claude.ai/code
Gehe zu Settings → MCP Servers
Füge einen Remote-Server hinzu, falls du diesen Server auf einem erreichbaren Host bereitgestellt hast
Konfiguriere Zugangsdaten
🛠️ Verfügbare Tools
📦 Projekte
list_projects
Listet alle Projekte mit optionaler Filterung auf.
Parameter:
offset(number, optional): Für Paginierungname_filter(string, optional): Nach Namen filternstatus(enum: "active" | "archived", optional): Nach Status filtern
Beispiel:
Claude: List all active projects
→ OpenProject: Muestra proyectos activosget_project
Ruft vollständige Details eines Projekts ab.
Parameter:
project_id(string | number): ID oder Kennung des Projekts
📋 Work Packages (Aufgaben)
list_work_packages
Listet Work Packages mit erweiterter Filterung auf.
Parameter:
project_id(string | number, optional): Nach Projekt filternstatus(string, optional): Status (z. B. "Open", "In Progress")priority(string, optional): Prioritätassignee_id(number, optional): Zugewiesen an Benutzersearch(string, optional): Textsucheoffset(number, optional): Paginierung
get_work_package
Ruft vollständige Details eines Work Packages ab.
Parameter:
work_package_id(number): ID des Work Packages
get_work_package_activities
Ruft den Verlauf von Änderungen und Kommentaren ab.
Parameter:
work_package_id(number): ID des Work Packages
search_work_packages
Volltextsuche in Work Packages.
Parameter:
query(string, required): Suchbegriffproject_id(string | number, optional): Auf Projekt beschränkenstatus(string, optional): Nach Status filternpriority(string, optional): Nach Priorität filtern
👤 Benutzer
list_users
Listet alle Benutzer in OpenProject auf.
Parameter:
offset(number, optional): Paginierung
get_user
Ruft Details eines bestimmten Benutzers ab.
Parameter:
user_id(number): ID des Benutzers
⏱️ Zeiteinträge
list_time_entries
Listet Zeiteinträge mit Filterung nach Zeitraum, Benutzer, Projekt auf.
Parameter:
work_package_id(number, optional): Nach Work Package filternuser_id(number, optional): Nach Benutzer filternproject_id(string | number, optional): Nach Projekt filternfrom_date(string, optional): Startdatum (YYYY-MM-DD)to_date(string, optional): Enddatum (YYYY-MM-DD)offset(number, optional): Paginierung
get_time_entry
Ruft Details eines Zeiteintrags ab.
Parameter:
time_entry_id(number): ID des Zeiteintrags
✍️ Schreiben (Epics und User Stories erstellen)
list_project_types
Listet die in einem Projekt verfügbaren Work-Package-Typen (Epic, User Story, Task, Bug...) mit ihrer ID auf. Zuerst verwenden – die Typ-IDs variieren zwischen OpenProject-Instanzen.
Parameter:
project_id(string | number): ID oder Kennung des Projekts
create_work_package
Erstellt ein Work Package (Epic, User Story, Aufgabe usw.). Verwende parent_id, um eine User Story unter ihr Epic zu hängen.
Parameter:
project_id(string | number)subject(string)description(string, optional, Markdown)type_id(number, optional): ID des Typs, abgerufen mitlist_project_typesparent_id(number, optional): ID des übergeordneten Epicspriority_id,assignee_id,start_date,due_date(optional)
create_work_packages_bulk
Erstellt mehrere Work Packages in einem einzigen Aufruf (ideal zum Hochladen aller aus einem Word-Dokument extrahierten User Stories). Jedes Element kann sein eigenes parent_id haben, sodass Stories aus verschiedenen Epics im selben Aufruf erstellt werden können. Gibt einen Bericht pro Element zurück (Erfolg/Fehler) und bricht den gesamten Batch nicht ab, wenn eines fehlschlägt.
Parameter:
project_id(string | number)items(array, max. 100): jedes mit denselben Feldern wiecreate_work_package(außerproject_id)
📋 Ablauf: Epics und User Stories aus Word hochladen
Typischer Anwendungsfall des Teams: Sie haben User Stories in .docx verfasst und müssen sie unter Beachtung der Beziehung Epic → Story in OpenProject laden.
Generiere dein persönliches API-Token (jeder Entwickler verwendet sein eigenes, siehe oben) und konfiguriere deine lokale
.env.Öffne das Gespräch mit Claude und füge die
.docx-Datei mit den Epics/Stories bei oder verweise darauf (Claude kann sie direkt lesen).Bitte Claude: „Lies dieses Word-Dokument, identifiziere die Epics und ihre User Stories und lade sie in Projekt X in OpenProject hoch."
Claude wird normalerweise Folgendes tun, ohne dass du es manuell orchestrieren musst:
list_project_typesfür das Projekt ausführen, um dietype_idvon Epic und User Story zu ermitteln.create_work_packagefür jedes Epic (wenige, einzeln, um ihre IDs zu erhalten).create_work_packages_bulkfür die User Stories, wobei dasparent_iddes jeweiligen Epics verwendet wird.
Überprüfe den Abschlussbericht (was erstellt wurde, was fehlgeschlagen ist) und korrigiere bei Bedarf in OpenProject.
Hinweis: Das Token benötigt die Berechtigung
edit_work_packages(siehe Abschnitt zur Token-Erstellung), um erstellen zu können, nicht nur lesen.
📊 Anwendungsfälle
1. Projektanalyse
Claude: "Análiza todos los proyectos activos y resume cuáles tienen más work packages abiertos"
→ El servidor lista proyectos, luego itera para contar paquetes abiertos2. Aufgabensuche
Claude: "Busca todas las tareas sobre 'API' en estado 'In Progress' del proyecto BACKEND"
→ search_work_packages con query="API", status="In Progress", project_id="BACKEND"3. Zeitbericht
Claude: "¿Cuántas horas registró Juan en la última semana?"
→ list_time_entries con user_id=juan, from_date=última_semana4. Projektstatus
Claude: "Dame un resumen del proyecto FRONTEND: qué se completó, qué está en progreso y qué sigue"
→ get_project + list_work_packages con diferentes status5. Änderungsaudit
Claude: "¿Quién cambió el estado del work package #123 y cuándo?"
→ get_work_package_activities para ver el historial🏗️ Architektur
src/
├── index.ts # Entry point del servidor MCP
├── client/
│ └── openproject.ts # Cliente HTTP para OpenProject API
├── tools.ts # Registro e implementación de herramientas
├── schemas/
│ └── index.ts # Validación Zod de inputs
└── utils/
└── formatters.ts # Formatos de salida Markdown🔐 Sicherheit
✅ Bearer-Token-Authentifizierung (sicher, keine Klartext-Zugangsdaten erforderlich)
✅ Eingabevalidierung mit Zod (verhindert Injection)
✅ Granulare Fehlerbehandlung (gibt keine sensiblen Daten preis)
✅ TypeScript Strict Mode (verhindert Typfehler)
⚠️ Das Token wird in
.envgespeichert – diese Datei niemals in Git committen
🚨 Fehlerbehebung
„Authentication failed"
Überprüfe, ob das Token in
.envgültig istGeneriere ein neues Token in OpenProject
„Connection error"
Überprüfe, ob
OPENPROJECT_URLvon deinem Rechner aus erreichbar istWenn du Proxy/VPN verwendest, konfiguriere die Proxy-Umgebungsvariablen
„No projects found"
Überprüfe, ob dein Benutzer Berechtigungen zum Anzeigen von Projekten hat
Überprüfe, ob in deiner Instanz Projekte existieren
Server startet nicht
npm run build
npm run devÜberprüfe die Fehlerausgabe im Terminal.
📈 Geplante Verbesserungen
Unterstützung zum Erstellen/Bearbeiten von Work Packages über Claude
Unterstützung für Kommentare an Work Packages
Integration mit Gantt-Diagrammen
Webhooks für Echtzeit-Benachrichtigungen
Daten-Cache für bessere Leistung
Umfassende Evaluierungen (SEP)
📦 Verteilung an dein Entwicklungsteam
Jeder Entwickler benötigt seine eigene Kopie + sein eigenes API-Token (niemals ein Token zwischen mehreren Personen teilen – Aktionen werden in OpenProject pro Benutzer protokolliert).
Empfohlene Option: gemeinsames Git-Repository
Lade diesen Ordner in ein privates Repository hoch (GitHub-Org oder das Gitea/GitLab von
linux.ie). Vergiss nicht, dass.envbereits in.gitignoresteht – es wird niemals hochgeladen.Jeder Entwickler:
git clone <url-del-repo> cd openproject-mcp-server npm install npm run build cp .env.example .envJeder generiert sein eigenes Token (Administration → API & Webhooks → Personal Access Tokens, mit Berechtigung
edit_work_packages, falls Stories erstellt werden sollen) und fügt es in seine.envein.Jeder fügt es in Claude Code hinzu (Settings → MCP Servers → Add Local Server), das auf sein lokales
dist/index.jsverweist.
Alternative ohne Git: komprimierter Ordner
Falls du das Repository noch nicht einrichten möchtest, kannst du ein .zip des Ordners teilen (ohne node_modules, dist und .env) und jeder Entwickler führt lokal npm install && npm run build aus. Es ist dieselbe Mechanik, nur das Verteilungsmedium ändert sich – es ist kein CI/CD erforderlich, da es keinen zentralen Server zum Bereitstellen gibt: Das MCP läuft über stdio auf dem Rechner jedes Entwicklers.
Falls du es später als gemeinsamen Remote-Server betreibst
Falls du statt lokalem Betrieb durch jeden Entwickler einen einzigen Server bevorzugst (z. B. auf linux.ie), den alle nutzen, dann gilt CI/CD (Build + Deploy bei jedem Push) und der Transport müsste von stdio auf HTTP migriert werden. Das ist ein größerer Architekturwechsel – sag mir Bescheid, falls das der Weg ist, den du gehen möchtest, und wir planen es separat.
🤝 Beitragen
Dies ist ein Open-Source-MCP-Server. Zur Verbesserung:
Forke das Repository
Erstelle einen Branch für dein Feature (
git checkout -b feature/mein-feature)Committe Änderungen (
git commit -am 'Füge mein-feature hinzu')Pushe den Branch (
git push origin feature/mein-feature)Öffne einen Pull Request
📄 Lizenz
MIT – Verwende, modifiziere und verbreite es frei
💬 Support
Zum Melden von Bugs, Stellen von Fragen oder Abgeben von Vorschlägen:
Öffne ein Issue im Repository
Konsultiere die MCP-Dokumentation
Sieh in die OpenProject-API-Dokumentation
Erstellt mit ❤️ für Integral de Empaques S.A.S.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to interact with OpenProject's API v3 for comprehensive project management operations including work packages, projects, time tracking, users, and all other OpenProject features through natural language.4MIT
- FlicenseAqualityDmaintenanceEnables comprehensive management of OpenProject work packages, projects, comments, and relations through natural language. Supports creating, updating, and organizing tasks with assignees, watchers, hierarchies, and inter-task relationships.21
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with OpenProject installations for comprehensive project management, including creating projects and work packages, managing users and assignments, creating dependencies, and generating Gantt charts through natural language commands.14
- AlicenseBqualityDmaintenanceEnables AI assistants to manage OpenProject work packages, projects, and time tracking. It provides comprehensive tools for creating, updating, and querying tasks and project metadata through the OpenProject API.11151MIT
Related MCP Connectors
Manage projects, tasks, time tracking, and team collaboration through natural language.
Connect to Atlassian Jira, Confluence, and Compass to search, create, and manage your work.
Persistent context for Claude. Your AI always knows your projects and next actions across sessions.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/devsergioherrera/openproject-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server