Project COR MCP server
Commit 2. Nov. 2026Ermöglicht es einem AI-Client, Projekte, Aufgaben, Kunden, Verträge und Zeiterfassung über die Project COR REST API zu verwalten.
Auch bekannt als fxckcode/mcp-cor
- Stars
- 0
- Tools
- 61
- Downloads, 30 Tage
- —
- Neueste Version
- —
- Letzter Commit
- 2. Nov. 2026
- Lizenz
- MIT
Was ist Project COR MCP?
Project COR ist ein MCP server. Ermöglicht es einem AI-Client, Projekte, Aufgaben, Kunden, Verträge und Zeiterfassung über die Project COR REST API zu verwalten. Er stellt 61 Tools bereit, etwa cor_list_projects, cor_get_project, cor_create_project.
Zusammenfassung generiert aus dem README des Projekts
Über Project COR MCP server
Mit diesem Server ist es möglich, kreative und professionelle Workflows über einen AI-Assistenten zu steuern, indem er mit der Project COR Plattform verbunden wird. Er bietet 61 Tools, die es einem AI-Client ermöglichen, vollständige CRUD-Operationen über 11 verschiedene Module hinweg durchzuführen, darunter Projekte, Aufgaben, Kunden, Verträge und Zeiterfassung. Dies erlaubt es Nutzern, alles zu erledigen – von der Projektrentabilität und Kostenschätzungen bis hin zum Loggen von Arbeitsstunden und der Verwaltung von Team-Zuweisungen.
Entwickler können dies mit jedem MCP-kompatiblen Client wie Claude Desktop, Cursor, Windsurf, Cline oder Hermes Agent nutzen. Der Server unterstützt zwei Authentifizierungsmethoden: persönliche User Credentials mittels E-Mail und Passwort oder Server-zu-Server-Zugriff via API Key und Client Secret. Er ist mit asynchronem I/O für non-blocking Performance gebaut und bietet sowohl stdio-Transport für lokale Agenten als auch SSE-Transport für den Remote-Zugriff. Das Deployment wird durch Docker-Support und den uv Package Manager vereinfacht.
Was du damit machen kannst
- 1Projektrentabilität trackenBitte deine AI, Finanzdetails und Rentabilitätskennzahlen für ein bestimmtes Projekt abzurufen.
- 2Team-Zeiterfassungen verwaltenAnweise die AI, Stunden für eine bestimmte Aufgabe zu loggen oder in bestehenden Zeiteinträgen zu suchen.
- 3Aufgaben-Workflows organisierenLass die AI nach ausstehenden Aufgaben suchen oder den Status und die Mitwirkenden einer Aufgabe aktualisieren.
- 4Kunden- und Vertragsdaten verwaltenNutze die AI, um neue Kunden anzulegen oder Vertragspositionen und -details zu verwalten.
Geschrieben aus dem README des Projekts. Jeder Use Case wurde gegen ein Zitat daraus geprüft.
Project COR MCP tools 61
Erkannt aus dem READMEcor_list_projectscor_get_projectcor_create_projectcor_update_projectcor_delete_projectcor_get_project_collaboratorscor_add_project_collaboratorcor_remove_project_collaboratorcor_get_project_costscor_add_project_costcor_get_project_labelscor_get_project_ratecard
| cor_list_projects | — | |
| cor_get_project | — | |
| cor_create_project | — | |
| cor_update_project | — | |
| cor_delete_project | — | |
| cor_get_project_collaborators | — | |
| cor_add_project_collaborator | — | |
| cor_remove_project_collaborator | — | |
| cor_get_project_costs | — | |
| cor_add_project_cost | — | |
| cor_get_project_labels | — | |
| cor_get_project_ratecard | — |
Alle 61 Tools anzeigenWeniger Tools anzeigen
cor_get_project_templatescor_get_project_profitabilitycor_search_taskscor_get_my_pending_taskscor_get_taskcor_create_taskcor_update_taskcor_delete_taskcor_get_task_collaboratorscor_sync_task_collaboratorscor_add_task_labelcor_remove_task_labelcor_get_my_profilecor_list_userscor_get_usercor_list_teamscor_create_teamcor_add_team_userscor_remove_team_userscor_get_working_timecor_list_clientscor_get_clientcor_create_clientcor_update_clientcor_delete_clientcor_get_client_feescor_list_contractscor_get_contractcor_create_contractcor_get_contract_positionscor_create_contract_positioncor_log_hourscor_search_time_entriescor_get_hours_by_datecor_change_hours_statuscor_accept_suggested_hourscor_get_task_messagescor_post_task_messagecor_get_project_messagescor_post_project_messagecor_list_ratecardscor_get_ratecardcor_create_ratecardcor_get_allocations_by_projectcor_save_allocationcor_delete_allocationcor_list_productscor_create_productcor_get_labels
| cor_get_project_templates | — | |
| cor_get_project_profitability | — | |
| cor_search_tasks | — | |
| cor_get_my_pending_tasks | — | |
| cor_get_task | — | |
| cor_create_task | — | |
| cor_update_task | — | |
| cor_delete_task | — | |
| cor_get_task_collaborators | — | |
| cor_sync_task_collaborators | — | |
| cor_add_task_label | — | |
| cor_remove_task_label | — | |
| cor_get_my_profile | — | |
| cor_list_users | — | |
| cor_get_user | — | |
| cor_list_teams | — | |
| cor_create_team | — | |
| cor_add_team_users | — | |
| cor_remove_team_users | — | |
| cor_get_working_time | — | |
| cor_list_clients | — | |
| cor_get_client | — | |
| cor_create_client | — | |
| cor_update_client | — | |
| cor_delete_client | — | |
| cor_get_client_fees | — | |
| cor_list_contracts | — | |
| cor_get_contract | — | |
| cor_create_contract | — | |
| cor_get_contract_positions | — | |
| cor_create_contract_position | — | |
| cor_log_hours | — | |
| cor_search_time_entries | — | |
| cor_get_hours_by_date | — | |
| cor_change_hours_status | — | |
| cor_accept_suggested_hours | — | |
| cor_get_task_messages | — | |
| cor_post_task_message | — | |
| cor_get_project_messages | — | |
| cor_post_project_message | — | |
| cor_list_ratecards | — | |
| cor_get_ratecard | — | |
| cor_create_ratecard | — | |
| cor_get_allocations_by_project | — | |
| cor_save_allocation | — | |
| cor_delete_allocation | — | |
| cor_list_products | — | |
| cor_create_product | — | |
| cor_get_labels | — |
Konfiguration
COR_API_KEYCOR_API_URLCOR_CLIENT_SECRETCOR_EMAILCOR_PASSWORD
| Name | Beschreibung | Typ |
|---|---|---|
| COR_API_KEY | — | |
| COR_API_URL | — | |
| COR_CLIENT_SECRET | — | |
| COR_EMAIL | — | |
| COR_PASSWORD | — |
Automatisierte Checks
Geluften am 14. Nov. 2026Vollständiger Bericht →Noch nicht verifiziert. Ein Server benötigt einen Score von 80, keine kritischen Befunde und genug Daten für unsere Prüfung. Wie die Checks funktionieren · Was du für mehr Punkte verbessern kannst
- Source Repository verknüpft und erreichbarfxckcode/mcp-cor is public and reachablegithub.com/fxckcode/mcp-cor ↗Bestanden
- Paket nennt dieses Repository als QuelleNicht geprüft
- Build-Provenienz (Sigstore-Attestierung)Nicht geprüft
- Open Source Lizenz (OSI)MITspdx.org/licenses/MIT.html ↗Bestanden
- Commit oder Release im letzten JahrLast commit or release 2026-11-02github.com/fxckcode/mcp-cor ↗Bestanden
- OpenSSF ScorecardNicht geprüft
- Package-Name ähnelt keinem populären PackageNicht geprüft
- Keine kritischen Advisories im Paket oder seinen AbhängigkeitenNicht geprüft
- Keine versteckten Anweisungen an das Modell61 tool descriptions and the README read; no override phrases, credential paths or hidden charactersBestanden
- Destruktive Tools sind markiertNo tool named like delete, drop or execBestanden
- Remote-Endpoint beantwortet den MCP-HandshakeNicht geprüft
README
Auf GitHub ansehen⬡ COR MCP Server
61 MCP tools for Project COR — the project management platform for creative and professional teams.
Exposes the complete COR REST API surface as MCP tools — usable from any MCP-compatible client: Hermes Agent, Claude Desktop, Cursor, Claude Code, Cline, Windsurf, and more.
✨ Features
- 61 MCP tools — full CRUD for all COR entities across 11 modules
- Dual authentication — pick what suits you:
- User Credentials (email + password) — quick personal use
- Client Credentials (API key + client secret) — server-to-server
- Async everywhere —
httpx+asyncio, non-blocking I/O - Dual transport —
stdio(default for agents) andsse(HTTP for remote access) - OAuth token auto-refresh — never worry about expiry mid-session
- Docker support — one-command deployment
- Hermes Agent skill included — see
skills/cor-mcp-setup/ - 24 passing tests — fully mocked, no live credentials required
Entity Coverage
| Module | Tools | Covers |
|---|---|---|
| Projects | 14 | CRUD, collaborators, costs, labels, ratecards, templates, profitability |
| Tasks | 10 | Search, CRUD, collaborators, labels |
| Team & Users | 8 | Profile, users, teams, working time |
| Clients | 6 | CRUD, fees |
| Contracts | 5 | CRUD, positions |
| Time Tracking | 5 | Log, search, status, accept suggested |
| Messaging | 4 | Project + task messages |
| Allocations | 3 | CRUD |
| Ratecards | 3 | CRUD |
| Products | 2 | CRUD |
| Labels | 1 | By entity type |
🚀 Quick Start
Prerequisites
- Python 3.11+
- uv (recommended) or pip
- COR account with credentials
Install & Run
# Clone
git clone https://github.com/fxckcode/mcp-cor.git
cd mcp-cor
# Install with uv (recommended)
uv sync
# Or with pip
pip install -e .
Configure
cp .env.example .env
Then choose one auth mode in .env:
Mode A — Email + Password (recommended for personal use)
COR_EMAIL=your.email@company.com
COR_PASSWORD=your_password
COR_API_URL=https://api.projectcor.com/v1
Mode B — API Key + Client Secret (for server-to-server)
COR_API_KEY=your_api_key
COR_CLIENT_SECRET=your_client_secret
COR_API_URL=https://api.projectcor.com/v1
The server auto-detects which mode you configured. Email/password takes priority when both are set.
Run
# stdio transport (default — for MCP agents)
uv run cor-mcp-server
# SSE/HTTP transport (for remote access)
uv run cor-mcp-server --transport sse --host 0.0.0.0 --port 8000
# Verbose logging
uv run cor-mcp-server --verbose
🔐 Authentication
Two modes supported. The server auto-detects which to use.
User Credentials (Mode A)
POST https://api.projectcor.com/v1/auth/login
Content-Type: application/x-www-form-urlencoded
email=user@corp.com&password=*****
Returns JWT access_token + refresh_token. Auto-refresh built in.
Client Credentials (Mode B)
POST https://api.projectcor.com/v1/oauth/token?grant_type=client_credentials
Authorization: Basic base64(api_key:client_secret)
Returns access_token (1-hour TTL). Cached and auto-refreshed with a 60-second safety margin.
🔌 Connecting from MCP Clients
Add to ~/.hermes/config.yaml:
mcp_servers:
cor:
command: "uv"
args: ["run", "--directory", "/path/to/cor-mcp-server", "python", "-m", "cor_mcp_server"]
env:
COR_EMAIL: "your.email@company.com"
COR_PASSWORD: "your_password"
COR_API_URL: "https://api.projectcor.com/v1"
timeout: 180
connect_timeout: 60
Then restart or run /reload-mcp.
Add to claude_desktop_config.json:
{
"mcpServers": {
"cor": {
"command": "uv",
"args": ["run", "--directory", "/path/to/cor-mcp-server", "python", "-m", "cor_mcp_server"],
"env": {
"COR_EMAIL": "your.email@company.com",
"COR_PASSWORD": "your_password",
"COR_API_URL": "https://api.projectcor.com/v1"
}
}
}
}
In MCP Servers settings, add:
- Name: COR
- Type: command
- Command:
uv run --directory /path/to/cor-mcp-server python -m cor_mcp_server - Environment variables:
COR_EMAIL,COR_PASSWORD,COR_API_URL
env COR_EMAIL=your@email.com COR_PASSWORD=your_pass COR_API_URL=https://api.projectcor.com/v1 \
npx @anthropic/claude-code --mcp "uv run --directory /path/to/cor-mcp-server python -m cor_mcp_server"
Docker
docker build -t cor-mcp-server .
# stdio mode
docker run -i --rm \
-e COR_EMAIL=your@email.com \
-e COR_PASSWORD=your_password \
-e COR_API_URL=https://api.projectcor.com/v1 \
cor-mcp-server
# SSE mode
docker run -i --rm \
-p 8000:8000 \
-e COR_EMAIL=your@email.com \
-e COR_PASSWORD=your_password \
-e COR_API_URL=https://api.projectcor.com/v1 \
cor-mcp-server --transport sse
🛠 Available Tools
All tool names are prefixed with cor_ for clean discoverability.
Projects (14 tools)
| Tool | Description |
|---|---|
cor_list_projects |
List projects with filters (clientId, status, health, dates) |
cor_get_project |
Get project details |
cor_create_project |
Create a new project |
cor_update_project |
Update a project (partial) |
cor_delete_project |
Delete a project |
cor_get_project_collaborators |
Get project collaborators |
cor_add_project_collaborator |
Add collaborator to project |
cor_remove_project_collaborator |
Remove collaborator from project |
cor_get_project_costs |
Get project costs/estimates |
cor_add_project_cost |
Add cost to project |
cor_get_project_labels |
Get project labels |
cor_get_project_ratecard |
Get project ratecard |
cor_get_project_templates |
Get available project templates |
cor_get_project_profitability |
Get project profitability |
Tasks (10 tools)
| Tool | Description |
|---|---|
cor_search_tasks |
Search tasks with filters (projectId, clientId, status, text, dates, labels) |
cor_get_my_pending_tasks |
Get my pending tasks |
cor_get_task |
Get task details |
cor_create_task |
Create a new task |
cor_update_task |
Update a task |
cor_delete_task |
Delete a task |
cor_get_task_collaborators |
Get task collaborators |
cor_sync_task_collaborators |
Sync (replace) task collaborators |
cor_add_task_label |
Add label to task |
cor_remove_task_label |
Remove label from task |
Team & Users (8 tools)
| Tool | Description |
|---|---|
cor_get_my_profile |
Get current user profile |
cor_list_users |
List users with filters |
cor_get_user |
Get user details |
cor_list_teams |
List teams |
cor_create_team |
Create a new team |
cor_add_team_users |
Add users to a team |
cor_remove_team_users |
Remove users from a team |
cor_get_working_time |
Get working time for users |
Clients (6 tools)
| Tool | Description |
|---|---|
cor_list_clients |
List clients |
cor_get_client |
Get client details |
cor_create_client |
Create a new client |
cor_update_client |
Update a client |
cor_delete_client |
Delete a client |
cor_get_client_fees |
Get client fees |
Contracts (5 tools)
| Tool | Description |
|---|---|
cor_list_contracts |
List contracts |
cor_get_contract |
Get contract details |
cor_create_contract |
Create a new contract |
cor_get_contract_positions |
Get contract positions |
cor_create_contract_position |
Create position in contract |
Time Tracking (5 tools)
| Tool | Description |
|---|---|
cor_log_hours |
Log hours against a task |
cor_search_time_entries |
Search time entries with filters |
cor_get_hours_by_date |
Get time entries by date |
cor_change_hours_status |
Change time entry status |
cor_accept_suggested_hours |
Accept suggested hours |
Messaging (4 tools)
| Tool | Description |
|---|---|
cor_get_task_messages |
Get messages on a task |
cor_post_task_message |
Post a message on a task |
cor_get_project_messages |
Get messages on a project |
cor_post_project_message |
Post a message on a project |
Ratecards (3 tools)
| Tool | Description |
|---|---|
cor_list_ratecards |
List ratecards |
cor_get_ratecard |
Get ratecard details |
cor_create_ratecard |
Create a new ratecard |
Allocations (3 tools)
| Tool | Description |
|---|---|
cor_get_allocations_by_project |
Get allocations for a project |
cor_save_allocation |
Create/update a resource allocation |
cor_delete_allocation |
Delete a resource allocation |
Products (2 tools)
| Tool | Description |
|---|---|
cor_list_products |
List products |
cor_create_product |
Create a new product |
Labels (1 tool)
| Tool | Description |
|---|---|
cor_get_labels |
Get labels (filter by entity type: project, task, user) |
🏗 Architecture
┌──────────────────────┐ ┌───────────────────────────┐ ┌──────────────────────┐
│ MCP Client │ │ COR MCP Server │ │ COR REST API │
│ (Hermes / Claude / │◄───►│ (FastMCP + httpx) │────►│ api.projectcor.com │
│ Cursor / etc.) │ │ │ │ /v1 │
└──────────────────────┘ ├───────────────────────────┤ └──────────────────────┘
│ Auth auto-detection │
│ • Email/Password (prio) │
│ • API Key + Secret │
└───────────────────────────┘
🧑💻 Development
# Install dev deps
uv sync --dev
# Run tests (24 passing tests — no live API needed, uses mocking)
uv run pytest tests/ -v
# Test server startup
uv run cor-mcp-server --help
# Lint
uv run ruff check .
Adding New Tools
To add a new tool to the COR MCP Server:
-
Create or edit a tool module in
cor_mcp_server/tools/(e.g.,reports.py). -
Write an async function with the
cor_prefix pattern:from ..context import get_client async def cor_list_reports(page: int = 1, per_page: int = 20) -> str: """List reports. Args: page: Page number (default: 1) per_page: Results per page (default: 20) """ client = get_client() data = await client.get("/reports", page=page, per_page=per_page) import json return json.dumps(data, indent=2, ensure_ascii=False, default=str) -
Register the tool in
cor_mcp_server/server.py:from .tools import reports as _reports mcp.tool( name="cor_list_reports", description=_reports.cor_list_reports.__doc__, )(_reports.cor_list_reports) -
Add tests in
tests/test_tools.pyfollowing the existing patterns (import assertion + tool count update). -
Update the tool count in
tests/test_tools.pyif needed.
The get_client() function provides a fully-authenticated CORClient instance with automatic Bearer token handling. All tools return JSON strings for consistent serialization.
Test Structure
Tests are in tests/test_tools.py and cover:
TestTokenStore— Thread-safe token caching, expiry, and refresh logicTestCORClient— HTTP methods (GET, POST, PUT, DELETE), pagination, auth headersTestToolFunctions— Import verification for all 61 tool functions across 11 modulesTestServerCreation— Server factory creates a valid FastMCP instance
All tests use mocking — no live COR credentials required to run them.
📁 Project Structure
cor-mcp-server/
├── pyproject.toml # Dependencies and metadata
├── README.md # This file
├── LICENSE # MIT license
├── .env.example # Env var template (both auth modes)
├── Dockerfile # Container deployment
├── skills/ # Hermes Agent skills
│ └── cor-mcp-setup/
│ └── SKILL.md # Skill: setup + usage guide
├── handoff-personal-hermes.md # Self-contained instructions for personal Hermes
├── cor_mcp_server/
│ ├── __init__.py # Package init
│ ├── __main__.py # CLI entry point
│ ├── server.py # FastMCP server + tool registration (all 61 tools)
│ ├── auth.py # OAuth 2.0 dual-mode (user creds + client creds)
│ ├── client.py # COR API HTTP client (httpx, async)
│ ├── context.py # Shared client context / dependency injection
│ ├── models.py # Pydantic models (14 entity types)
│ └── tools/
│ ├── __init__.py
│ ├── projects.py # 14 tools
│ ├── tasks.py # 10 tools
│ ├── time_tracking.py # 5 tools
│ ├── clients.py # 6 tools
│ ├── contracts.py # 5 tools
│ ├── messaging.py # 4 tools
│ ├── team.py # 8 tools
│ ├── labels.py # 1 tool
│ ├── ratecards.py # 3 tools
│ ├── allocations.py # 3 tools
│ └── products.py # 2 tools
├── tests/
│ ├── __init__.py
│ └── test_tools.py # 24 tests for auth, client, and tools
├── .github/ # GitHub community files
│ ├── dependabot.yml # Dependency auto-updates
│ ├── ISSUE_TEMPLATE/ # Bug report + feature request templates
│ ├── PULL_REQUEST_TEMPLATE.md
│ └── workflows/ # CI + Release pipelines
├── .gitignore
├── .gitattributes
├── CONTRIBUTING.md
├── CODE_OF_CONDUCT.md
└── SECURITY.md
📄 License
👤 Author
Alejandro Duran — Omnicom Media Group
Project COR MCP Fragen
Welche Tools bietet Project COR MCP?
Er stellt 61 Tools bereit, darunter cor_list_projects, cor_get_project, cor_create_project, cor_update_project, cor_delete_project.
Welche Authentifizierungsmodi unterstützt der Server?
Der Server unterstützt zwei Modi: User Credentials (E-Mail und Passwort) für die persönliche Nutzung und Client Credentials (API Key und Client Secret) für die Server-zu-Server-Kommunikation.
Kann ich diesen Server mit Docker ausführen?
Ja, der Server bietet Docker-Support für ein Ein-Befehl-Deployment sowohl im stdio- als auch im SSE-Modus.
Mit welchen MCP-Clients kann ich mich verbinden?
Er ist kompatibel mit jedem MCP-kompatiblen Client, einschließlich Hermes Agent, Claude Desktop, Cursor, Claude Code, Cline und Windsurf.
Behandelt der Server das Ablaufen von Token?
Ja, er verfügt über ein integriertes OAuth-Token-Auto-Refresh, um das Ablaufen von Sessions zu verhindern.