Project COR MCPサーバー
コミット 2026年11月2日Project COR REST APIを介して、AIクライアントによるプロジェクト、タスク、クライアント、契約、およびタイムトラッキングの管理を可能にします。
別名 fxckcode/mcp-cor
- スター
- 0
- ツール
- 61
- ダウンロード数(30日間)
- —
- 最新バージョン
- —
- 最終コミット
- 2026年11月2日
- ライセンス
- MIT
Project COR MCPとは
Project CORはMCPサーバーです。 Project COR REST APIを介して、AIクライアントによるプロジェクト、タスク、クライアント、契約、およびタイムトラッキングの管理を可能にします。. 61個のツールを提供しており、cor_list_projects, cor_get_project, cor_create_projectなどがあります。
プロジェクトのREADMEから生成された概要
Project COR MCP server について
このサーバーはProject CORプラットフォームに接続することで、AIアシスタントを通じたクリエイティブおよびプロフェッショナルなワークフローの管理を実現します。プロジェクト、タスク、クライアント、契約、タイムトラッキングを含む11の異なるモジュールにわたって、AIクライアントが完全なCRUD操作を実行できる61個のツールを提供します。これにより、プロジェクトの収益性や見積もりから、稼働時間の記録、チームの割り当て管理まで、あらゆる業務を扱うことが可能になります。
開発者は、Claude Desktop、Cursor、Windsurf、Cline、Hermes AgentなどのあらゆるMCP対応クライアントで使用できます。認証方法には、メールアドレスとパスワードを使用する個人ユーザー認証と、APIキーとクライアントシークレットを使用するサーバー間アクセスの2種類があります。非ブロッキングなパフォーマンスを実現するために非同期I/Oで構築されており、ローカルエージェント向けのstdioトランスポートと、リモートアクセス向けのSSEトランスポートの両方をサポートしています。Dockerおよびuvパッケージマネージャーのサポートにより、デプロイも簡素化されています。
できること
- 1プロジェクト収益性の追跡特定のプロジェクトに関する財務詳細や収益性指標を取得するようAIに依頼できます。
- 2チームのタイムログ管理特定のタスクに対して稼働時間を記録したり、既存のタイムエントリーを検索したりするようAIに指示できます。
- 3タスクワークフローの整理保留中のタスクを検索したり、タスクのステータスやコラボレーターを更新したりすることをAIに任せられます。
- 4クライアントおよび契約データの管理AIを使用して、新しいクライアントの作成や、契約条件および詳細の管理が行えます。
プロジェクトの README から作成されています。すべてのユースケースは、その引用と照らし合わせて確認されています。
Project COR MCPツール 61
READMEから検出cor_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 | — |
61個のツールをすべて表示ツールを折りたたむ
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 | — |
設定
COR_API_KEYCOR_API_URLCOR_CLIENT_SECRETCOR_EMAILCOR_PASSWORD
| 名前 | 説明 | 種類 |
|---|---|---|
| COR_API_KEY | — | |
| COR_API_URL | — | |
| COR_CLIENT_SECRET | — | |
| COR_EMAIL | — | |
| COR_PASSWORD | — |
自動チェック
実行日 2026年11月14日完全なレポート →まだ検証されていません。サーバーには80点のスコア、重大な問題がないこと、および検証に必要な十分なデータが必要です。 チェックの仕組み · 点数を上げるための改善点
- ソースリポジトリがリンクされており、アクセス可能fxckcode/mcp-cor is public and reachablegithub.com/fxckcode/mcp-cor ↗合格
- パッケージがこのリポジトリをソースとして指定未チェック
- ビルドの来歴 (Sigstore 証明)未チェック
- オープンソースライセンス (OSI)MITspdx.org/licenses/MIT.html ↗合格
- 過去1年以内にコミットまたはリリースありLast commit or release 2026-11-02github.com/fxckcode/mcp-cor ↗合格
- OpenSSF Scorecard未チェック
- パッケージ名が有名なパッケージに酷似していない未チェック
- パッケージおよびその依存関係に重大な勧告なし未チェック
- モデルへの隠れた指示がない61 tool descriptions and the README read; no override phrases, credential paths or hidden characters合格
- 破壊的なツールがラベル付けされているNo tool named like delete, drop or exec合格
- リモートエンドポイントが MCP ハンドシェイクに応答未チェック
README
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
Project COR MCPのよくある質問
Project COR MCPが提供するツールは
61個のツールを提供しており、cor_list_projects, cor_get_project, cor_create_project, cor_update_project, cor_delete_projectなどがあります。
このサーバーがサポートしている認証モードは何ですか?
このサーバーは2つのモードをサポートしています。個人利用向けのユーザー認証(メールアドレスとパスワード)、およびサーバー間通信向けのクライアント認証(APIキーとクライアントシークレット)です。
Dockerを使用してこのサーバーを実行できますか?
はい、このサーバーはDockerをサポートしており、stdioモードとSSEモードの両方でワンコマンドでのデプロイが可能です。
どのMCPクライアントに接続できますか?
Hermes Agent、Claude Desktop、Cursor、Claude Code、Cline、Windsurfを含む、すべてのMCP対応クライアントと互換性があります。
サーバーはトークンの期限切れを処理できますか?
はい、セッション切れを防ぐために、OAuthトークンの自動リフレッシュ機能が組み込まれています。