Serveur MCP Project COR
Commit 2 nov. 2026Permet à un client IA de gérer des projets, des tâches, des clients, des contrats et le suivi du temps via l'API REST de Project COR.
Aussi connu sous fxckcode/mcp-cor
- Étoiles
- 0
- Outils
- 61
- Téléchargements, 30 jours
- —
- Dernière version
- —
- Dernier commit
- 2 nov. 2026
- Licence
- MIT
Qu'est-ce que Project COR MCP ?
Project COR est un serveur MCP. Permet à un client IA de gérer des projets, des tâches, des clients, des contrats et le suivi du temps via l'API REST de Project COR. Il expose 61 outils, comme cor_list_projects, cor_get_project, cor_create_project.
Résumé généré à partir du README du projet
À propos du MCP server Project COR
La gestion des flux de travail créatifs et professionnels via un assistant IA est possible grâce à ce serveur, qui se connecte à la plateforme Project COR. Il fournit 61 outils permettant à un client IA d'effectuer des opérations CRUD complètes sur 11 modules différents, incluant les projets, les tâches, les clients, les contrats et le suivi du temps. Cela permet aux utilisateurs de tout gérer, de la rentabilité des projets et des estimations de coûts jusqu'à la saisie des heures et la gestion de l'affectation des équipes.
Les développeurs peuvent l'utiliser avec n'importe quel client compatible MCP tel que Claude Desktop, Cursor, Windsurf, Cline ou Hermes Agent. Le serveur prend en charge deux méthodes d'authentification : les identifiants utilisateur personnels via un e-mail et un mot de passe, ou l'accès de serveur à serveur via une clé API et un client secret. Il est conçu avec des entrées/sorties asynchrones pour des performances non bloquantes et propose à la fois le transport stdio pour les agents locaux et le transport SSE pour l'accès à distance. Le déploiement est simplifié grâce à la prise en charge de Docker et du gestionnaire de paquets uv.
Ce que vous pouvez faire avec
- 1Suivre la rentabilité des projetsDemandez à votre IA de récupérer les détails financiers et les indicateurs de rentabilité pour un projet spécifique.
- 2Gérer les feuilles de temps de l'équipeDonnez instruction à l'IA de saisir des heures pour une tâche spécifique ou de rechercher dans les entrées de temps existantes.
- 3Organiser les flux de travail des tâchesUtilisez l'IA pour rechercher des tâches en attente ou pour mettre à jour le statut et les collaborateurs d'une tâche.
- 4Gérer les données clients et contratsUtilisez l'IA pour créer de nouveaux clients ou pour gérer les postes et les détails des contrats.
Extrait du README du projet. Chaque cas d'utilisation est vérifié par rapport à une citation du document.
Outils MCP Project COR 61
Détectés depuis le 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 | — |
Afficher les 61 outilsAfficher moins d'outils
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 | — |
Configuration
COR_API_KEYCOR_API_URLCOR_CLIENT_SECRETCOR_EMAILCOR_PASSWORD
| Nom | Description | Type |
|---|---|---|
| COR_API_KEY | — | |
| COR_API_URL | — | |
| COR_CLIENT_SECRET | — | |
| COR_EMAIL | — | |
| COR_PASSWORD | — |
Vérifications automatisées
Exécuté le 14 nov. 2026Rapport complet →Pas encore vérifié. Un serveur nécessite un score de 80, aucune faille sérieuse et suffisamment de données pour que nous puissions effectuer les vérifications. Fonctionnement des vérifications · Ce qu'il faut corriger pour gagner des points
- Dépôt source lié et accessiblefxckcode/mcp-cor is public and reachablegithub.com/fxckcode/mcp-cor ↗Réussi
- Le nom du package correspond au dépôt sourceNon vérifié
- Provenance du build (attestation Sigstore)Non vérifié
- Licence open source (OSI)MITspdx.org/licenses/MIT.html ↗Réussi
- Commit ou version publiée au cours de l'année écouléeLast commit or release 2026-11-02github.com/fxckcode/mcp-cor ↗Réussi
- OpenSSF ScorecardNon vérifié
- Nom du package non proche d'un package populaireNon vérifié
- Aucun avis critique dans le package ou ses dépendancesNon vérifié
- Aucune instruction cachée destinée au modèle61 tool descriptions and the README read; no override phrases, credential paths or hidden charactersRéussi
- Les outils destructifs sont étiquetésNo tool named like delete, drop or execRéussi
- Le point de terminaison distant répond à la poignée de main MCPNon vérifié
README
Voir sur GitHub⬡ 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
Questions sur Project COR MCP
Quels outils Project COR MCP fournit-il ?
Il expose 61 outils, dont cor_list_projects, cor_get_project, cor_create_project, cor_update_project, cor_delete_project.
Quels modes d'authentification le serveur prend-il en charge ?
Le serveur prend en charge deux modes : User Credentials (e-mail et mot de passe) pour un usage personnel, et Client Credentials (clé API et client secret) pour la communication de serveur à serveur.
Puis-je exécuter ce serveur avec Docker ?
Oui, le serveur inclut la prise en charge de Docker pour un déploiement en une seule commande, que ce soit en mode stdio ou SSE.
À quels clients MCP puis-je me connecter ?
Il est compatible avec tout client compatible MCP, notamment Hermes Agent, Claude Desktop, Cursor, Claude Code, Cline et Windsurf.
Le serveur gère-t-il l'expiration des jetons ?
Oui, il dispose d'une fonction d'auto-actualisation des jetons OAuth intégrée pour éviter l'expiration de la session.