Project COR MCP server
Commit 2 Nov 2026Memungkinkan AI client untuk mengelola proyek, tugas, klien, kontrak, dan time tracking melalui Project COR REST API.
Juga dikenal sebagai fxckcode/mcp-cor
- Stars
- 0
- Tools
- 61
- Unduhan, 30 hari
- —
- Versi terbaru
- —
- Commit terakhir
- 2 Nov 2026
- Lisensi
- MIT
Apa itu Project COR MCP?
Project COR adalah MCP server. Memungkinkan AI client untuk mengelola proyek, tugas, klien, kontrak, dan time tracking melalui Project COR REST API. Server ini menyediakan 61 tool, seperti cor_list_projects, cor_get_project, cor_create_project.
Ringkasan dibuat dari README proyek
Tentang Project COR MCP server
Mengelola workflow kreatif dan profesional melalui asisten AI kini dimungkinkan dengan server ini, yang terhubung ke platform Project COR. Server ini menyediakan 61 tools yang memungkinkan AI client melakukan operasi CRUD lengkap di 11 modul berbeda, termasuk proyek, tugas, klien, kontrak, dan time tracking. Hal ini memungkinkan Anda menangani segalanya, mulai dari profitabilitas proyek dan estimasi biaya hingga pencatatan jam kerja dan pengelolaan alokasi tim.
Developer dapat menggunakan ini dengan client apa pun yang kompatibel dengan MCP seperti Claude Desktop, Cursor, Windsurf, Cline, atau Hermes Agent. Server ini mendukung dua metode autentikasi: kredensial user pribadi menggunakan email dan password, atau akses server-to-server melalui API key dan client secret. Server ini dibangun dengan asynchronous I/O untuk performa non-blocking dan menawarkan transport stdio untuk agent lokal serta transport SSE untuk akses jarak jauh. Deployment menjadi lebih mudah berkat dukungan Docker dan package manager uv.
Apa yang bisa Anda lakukan dengannya
- 1Pantau profitabilitas proyekMinta AI Anda untuk mengambil detail finansial dan metrik profitabilitas untuk proyek tertentu.
- 2Kelola log waktu timInstruksikan AI untuk mencatat jam kerja pada tugas tertentu atau mencari entri waktu yang sudah ada.
- 3Atur workflow tugasGunakan AI untuk mencari tugas yang tertunda atau memperbarui status dan kolaborator dalam sebuah tugas.
- 4Kelola data klien dan kontrakGunakan AI untuk membuat klien baru atau mengelola posisi dan detail kontrak.
Ditulis berdasarkan README proyek. Setiap use case diperiksa terhadap kutipan dari README tersebut.
Tool Project COR MCP 61
Terdeteksi dari 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 | — |
Tampilkan semua 61 toolTampilkan lebih sedikit tool
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 | — |
Konfigurasi
COR_API_KEYCOR_API_URLCOR_CLIENT_SECRETCOR_EMAILCOR_PASSWORD
| Nama | Deskripsi | Tipe |
|---|---|---|
| COR_API_KEY | — | |
| COR_API_URL | — | |
| COR_CLIENT_SECRET | — | |
| COR_EMAIL | — | |
| COR_PASSWORD | — |
Pengecekan otomatis
Berjalan 14 Nov 2026Laporan lengkap →Belum diverifikasi. Sebuah server memerlukan skor 80, tidak ada temuan serius, dan data yang cukup untuk kami periksa. Cara kerja checks · Yang perlu diperbaiki untuk menambah poin
- Source repository terhubung dan dapat dijangkaufxckcode/mcp-cor is public and reachablegithub.com/fxckcode/mcp-cor ↗Lolos
- Nama paket mencantumkan repositori ini sebagai sumbernyaTidak diperiksa
- Provenance build (atestasi Sigstore)Tidak diperiksa
- Lisensi open source (OSI)MITspdx.org/licenses/MIT.html ↗Lolos
- Ada commit atau release dalam satu tahun terakhirLast commit or release 2026-11-02github.com/fxckcode/mcp-cor ↗Lolos
- OpenSSF ScorecardTidak diperiksa
- Nama package tidak mirip dengan package populerTidak diperiksa
- Tidak ada advisory kritis pada paket atau dependensinyaTidak diperiksa
- Tidak ada instruksi tersembunyi untuk model61 tool descriptions and the README read; no override phrases, credential paths or hidden charactersLolos
- Tools yang bersifat destruktif telah diberi labelNo tool named like delete, drop or execLolos
- Endpoint remote merespons handshake MCPTidak diperiksa
README
Lihat di 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
Pertanyaan tentang Project COR MCP
Tool apa yang disediakan Project COR MCP?
Server ini menyediakan 61 tool, termasuk cor_list_projects, cor_get_project, cor_create_project, cor_update_project, cor_delete_project.
Mode autentikasi apa saja yang didukung oleh server ini?
Server ini mendukung dua mode: User Credentials (email dan password) untuk penggunaan pribadi, dan Client Credentials (API key dan client secret) untuk komunikasi server-to-server.
Apakah saya bisa menjalankan server ini menggunakan Docker?
Ya, server ini menyertakan dukungan Docker untuk deployment satu perintah baik dalam mode stdio maupun SSE.
MCP client mana saja yang bisa saya hubungkan?
Server ini kompatibel dengan semua client yang mendukung MCP termasuk Hermes Agent, Claude Desktop, Cursor, Claude Code, Cline, dan Windsurf.
Apakah server ini menangani masa berlaku token?
Ya, server ini memiliki fitur auto-refresh token OAuth bawaan untuk mencegah sesi berakhir.