weeek-mcp について
weeek-mcpは、stdio経由でAIクライアントをWeeekのワークスペースに接続するローカルMCPサーバーです。標準では読み取り専用で、設定により書き込みツールを選択して有効化できます。
主な機能
- 01プロジェクト、タスク、メンバー、タグの一覧
- 02ボードと列の確認
- 03書き込みツールの既定での非表示
- 04ツール名による許可リスト
- 05レスポンスサイズの上限設定
活用シーン
- 01Weeekのワークスペースでタスクやプロジェクトを確認
- 02読み取り専用でボード情報を照会
- 03必要に応じてタスク作成や更新を有効化
MCP 対応
stdio経由でAIクライアントにWeeekの照会・タスク管理ツールを提供します。既定では読み取りツールを10個登録し、READ_ONLY=falseにすると最大5個の書き込みツールを公開できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y weeek-mcpWEEEK_ACCESS_TOKENシークレットWeeek Public API v1 access token. Required — the server refuses to start without it.READ_ONLYGate for the write tools. Defaults to 'true': a fresh install exposes only the ten read tools. Set to 'false' to additionally expose the five write tools (create/update/move/complete a task, set an MR link) — an explicit operator opt-in, never the default.ENABLED_TOOLSOptional comma-separated allowlist of tool names to register (still subject to READ_ONLY). Pair with READ_ONLY=false for a granular write rollout, e.g. 'weeek_complete_task'.WEEEK_BASE_URLOverride the Weeek API base URL. Defaults to the public v1 endpoint.WEEEK_TIMEOUT_MSPer-request timeout in milliseconds.MAX_RESPONSE_CHARSUpper bound on the JSON length of a single tool response, protecting the agent's context window from unbounded list/detail payloads.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
weeek-mcp
Weeek 向けのローカル MCP サーバーです。デフォルトでは読み取り専用で、オプトインすると書き込みツールを利用できます。
weeek-mcp は、stdio を介して AI クライアント(Claude Desktop、Claude Code、Cursor、MCP
Inspector)を Weeek ワークスペースに接続します。デフォルトでは読み取り専用です。標準のインストールではプロジェクト、タスク、ボード、メンバー、タグを一覧表示できますが、変更は一切行いません。また、READ_ONLY=false でオプトインした場合に限り、5 つの書き込みツールが公開されます。Node ≥ 20 で動作し、npx でインストールできるため、クローンやビルドは不要です。
これを選ぶ理由
- npm で公開済み。
npx -y weeek-mcpはすぐに使えます。クローン、ビルド、絶対パスは不要です。 - デフォルトでは読み取り専用で、組み合わせ可能な制限機能を備えています。 オプトインしない限り、書き込み機能は登録されません。
ENABLED_TOOLSで利用可能なツールを指定し、MAX_RESPONSE_CHARSですべてのペイロードの上限を設定できます。クライアント側の慣習ではなく、サーバー側で適用されます。 - 2 言語に対応。 英語版とロシア語版のドキュメントを完全に同じ内容で提供しています。
- 詳細なエラーモデル。 エージェントが文章を解析せずに再試行するか諦めるかを判断できるよう、エージェントが読み取れるメッセージを含む 9 種類のエラーコードを用意しています。
クイックスタート
推奨されるインストール方法は npx です。クローンもビルドも不要です。
examples/claude_desktop.mcp.json を
MCP クライアントの設定に追加し、YOUR_WEEEK_TOKEN_HERE を
https://app.weeek.net/ws/_/settings/apps/api で取得した実際のトークンに置き換えて、クライアントを再起動してください。
{
"mcpServers": {
"weeek": {
"command": "npx",
"args": ["-y", "weeek-mcp"],
"env": {
"WEEEK_ACCESS_TOKEN": "YOUR_WEEEK_TOKEN_HERE"
}
}
}
}
初回起動時に npx が weeek-mcp をダウンロードしてキャッシュします。Cursor と Cline でも同じ mcpServers 形式を使用します。examples/cursor.mcp.json
と examples/cline.mcp.json を参照してください。その他の環境変数には安全なデフォルト値が設定されています。必要なものだけを上書きしてください(設定を参照)。npx が node を見つけられない場合(nvm 使用時によく発生します)は、トラブルシューティングを参照してください。依存関係なしで動作確認するには、docs/smoke.md を参照してください。
examples/は GitHub 上にのみあります。npm の tarball に含まれるのはdist/、README.md、README.ru.md、LICENSEです。
ツール
デフォルトで 10 個の読み取りツールが公開されます。READ_ONLY=false の場合に限り、15 個すべてが公開されます(書き込みツールを有効にするを参照)。
| 読み取りツール | 戻り値 |
|---|---|
ping | pong: <msg> — トランスポートのヘルスチェック。API 呼び出しもトークンも不要です |
weeek_get_me | 認証済みユーザー(id、email、name)— トークンを確認します |
weeek_list_projects | トークンで表示可能なすべてのプロジェクト |
weeek_get_project | ID で指定した単一のプロジェクト。description を含みます |
weeek_list_tasks | タスクの 1 ページ分(フィルターと offset/per_page によるページネーション) |
weeek_get_task | ID で指定した単一のタスク。複数担当者のフィールドを含みます |
weeek_list_members | ワークスペースのすべてのメンバー |
weeek_list_tags | すべてのタグ |
weeek_list_boards | プロジェクト内のすべてのボード |
weeek_list_board_columns | ボードのすべての列(並び順) |
書き込みツール(READ_ONLY=false) | 機能 |
|---|---|
weeek_complete_task | 完了フラグを切り替えます。completed: false にすると未完了に戻します |
weeek_move_task | タスクをボードの列に移動します(列はステータスを表します) |
weeek_create_task | 新しいタスクを作成し、新しい ID とともに返します |
weeek_update_task | タイトル/優先度/種別/期限を編集します |
weeek_set_task_mr_link | カスタムフィールドにマージリクエスト/プルリクエストの URL を記録します |
フィールド単位の詳細なリファレンス(入力、出力、エッジケース、切り詰め、複数担当者)→ docs/tools.md。
書き込みツールを有効にする
デフォルトのインストールでは、ワークスペースに変更を加えることはできません。 変更を加える5つのツールはすべて READ_ONLY(デフォルトは true)によって非表示になっており、登録されないため、tools/list に表示されることはありません。READ_ONLY=false にすると、tools/list に表示されるツールが10個から15個に増え、エージェントがトークンでアクセスできるワークスペース内でタスクを作成、編集、移動、完了できるようになります。サーバー側での確認手順はありません。annotations はヒントにすぎず、MCP クライアントは無視できます。内容の変更を許容できるワークスペースをトークンのアクセス先にしてください。
"env": {
"WEEEK_ACCESS_TOKEN": "YOUR_WEEEK_TOKEN_HERE",
"READ_ONLY": "false"
}
まずは5つすべてではなく、ツールを1つだけ使いましょう。 READ_ONLY=false と ENABLED_TOOLS を組み合わせると、書き込みを有効にしつつ、指定した1つのツールだけを使えます。
"env": {
"WEEEK_ACCESS_TOKEN": "YOUR_WEEEK_TOKEN_HERE",
"READ_ONLY": "false",
"ENABLED_TOOLS": "weeek_complete_task"
}
READ_ONLY は外側のゲートです。ENABLED_TOOLS に書き込みツールを指定しただけでは、書き込みは有効になりません。許可リストは追加方式ではないため、必要な読み取りツールもあわせて指定してください。
examples/claude_desktop.write.mcp.json は、まさにそれを設定できる、すぐに編集して使える構成ファイルです。
各書き込みツールでできること、できないこと
| ツール | 変更内容 | 元に戻す方法 | destructiveHint | idempotentHint |
|---|---|---|---|---|
weeek_complete_task | 1つの完了フラグ | completed: false を指定して再実行する | false | true |
weeek_set_task_mr_link | 1つのカスタムフィールドの値 | 値を再設定する | false | true |
weeek_move_task | タスクのボード列(およびボード) | 元の場所が分かっている場合は、そこに戻す | true | false |
weeek_update_task | タイトル/優先度/種類/期限 | 以前の値が分かっている場合は、各フィールドを再設定する | true | false |
weeek_create_task | 新しいタスクを作成する | 削除する。ただし、このサーバーでは削除できない | true | false |
true の3行は、エージェントが以前の値を確認しておらず、元に戻せないため、「人間による確認が望ましい」と示されています。特に注意が必要なのは weeek_create_task です。このサーバーでは作成したタスクを元に戻せず、再試行すると2つ目のタスクが作成されます。weeek_set_task_mr_link は、custom_field_id/custom_field_name を渡さない限り、名前でカスタムフィールドを特定します。一致する名前と曖昧さの扱いについては、
docs/tools.md
をご覧ください。
設定
起動時に環境変数を読み込み、zod で検証します。無効な値があると、起動は stderr にエラーを出力してゼロ以外の終了コードで中断されます。サーバーが .env ファイルを直接読み込むことはありません。環境変数は MCP クライアントの env ブロックまたはシェルを通じて渡してください。
| 変数 | 必須 | デフォルト | 用途 |
|---|---|---|---|
WEEEK_ACCESS_TOKEN | はい | — | 個人用 Weeek API トークン(20文字以上。プレースホルダーと空白で囲まれた値は拒否されます)。 |
WEEEK_BASE_URL | いいえ | https://api.weeek.net/public/v1 | Weeek HTTP クライアントのベース URL。セルフホストのプロキシを使用する場合は上書きします。 |
WEEEK_TIMEOUT_MS | いいえ | 30000 | リクエストごとのタイムアウト(ms)。正の整数を指定します。 |
READ_ONLY | いいえ | true | 書き込みツールを非表示にします。true の場合、readOnlyHint !== true のツールは登録されません。true/false/1/0 を指定できます。 |
ENABLED_TOOLS | いいえ | (未設定=すべて) | ツール名をカンマ区切りで指定する許可リスト。READ_ONLY との照合も行われます。不明な名前は WARN として記録され、結果が空の場合は起動が中断されます。 |
MAX_RESPONSE_CHARS | いいえ | 65536 | レスポンスごとのバイト上限。上限を超えたペイロードは切り詰められ、truncated: true のフラグが付けられます。最小 1024、最大 1000000。 |
LOG_LEVEL | いいえ | info | ロガーのしきい値:debug、info、warn、error。不明な値は info にフォールバックします。 |
どちらのゲートもサーバー側で実行されます。非表示のツールは登録されないため、エージェントは呼び出せません。READ_ONLY は重要な設定です。エージェントにワークスペースを変更させる意図がない限り、デフォルトのままにしてください。コピーして使えるテンプレートは .env.example をご覧ください。
トラブルシューティング
| 症状 | 考えられる原因 | 対処方法 |
|---|---|---|
| クライアントにサーバーが表示されない | command が、クライアントから見つけられない node を指しているか、dist/index.js が存在しない、または実行可能ではない | npm run build を実行し、ls -la dist/index.js で 0755 と表示されることを確認してください。which node で確認できる絶対パスを使用してください(下記の NVM に関する注意事項を参照)。 |
MCP server failed to start がすぐに表示される | 上記と同じ原因に加え、node_modules が見つからない | リポジトリのルートで npm install && npm run build を実行してください。 |
標準エラー出力に invalid env: WEEEK_ACCESS_TOKEN: ... が表示される | トークンに空白文字や制御文字が含まれているか、プレースホルダーが指定されている | https://app.weeek.net/ws/_/settings/apps/api で本物のトークンを生成し、前後にスペースや改行を含めずに貼り付けてください。 |
invalid env: WEEEK_BASE_URL: ... が表示される | URL のスキームが http(s) 以外であるか、user:pass@ が含まれている | https://api.weeek.net/public/v1 をそのまま使用してください。認証情報は WEEEK_ACCESS_TOKEN を通じて渡してください。 |
dist/index.js の起動時に EACCES が表示される | postbuild での chmod が実行されなかった | chmod +x dist/index.js を実行してください。 |
npm start は動作するが、クライアントでは失敗する | クライアントが、シェルとは異なる PATH で起動している | 下記の NVM 回避策を参照してください。 |
NVM 回避策 — spawn npx ENOENT / spawn node ENOENT
Claude Desktop と Cursor は、~/.nvm/nvm.sh を読み込まない非対話型
シェルで MCP サブプロセスを起動するため、Node が nvm 経由でインストールされている場合、
"command": "npx" のようにパスを指定しないと、気付かないうちに失敗します。絶対パスを直接指定する方法があります
— which npx を実行し、その結果を command として貼り付けてください(nvm のバージョンを
切り替えるたびに更新してください)。パッケージは初回実行時に引き続きダウンロードされ、キャッシュされます。
{ "command": "/Users/<you>/.nvm/versions/node/v20.18.0/bin/npx", "args": ["-y", "weeek-mcp"] }
— または、~/.nvm/nvm.sh を読み込んでから exec npx "$@" を実行する小さなラッパースクリプトを
command に指定すれば、nvm のバージョンを切り替えても動作します。
エラー
すべての Weeek ツールは同じ形式で失敗します。isError: true と、1 行の
<tool> failed (<weeek_code>): <one English sentence> が返されます。weeek_<code> トークンは、
安定した機械処理可能な契約であり、文は自己修正の指針となります。
9 つのコードは、未認証/アクセス禁止/見つからない/検証エラー/レート制限/
サーバー/ネットワーク/タイムアウト/無効なレスポンスを網羅し、それぞれに再試行の指針があります。
weeek_get_task failed (weeek_not_found): Weeek returned 404 for this resource. Verify the id exists in the configured workspace and was not deleted.
weeek_list_tasks failed (weeek_rate_limited): Weeek rate-limited the request (HTTP 429). Retry after a brief delay or reduce the call frequency.
再試行の動作を含む完全な表 → docs/errors.md。
貢献 · セキュリティ · ライセンス
- 貢献 — 問題の報告や機能リクエストを歓迎します。ただし、プルリクエストは事前の合意が必要です (このリポジトリでは、厳密に直線的な増分プロセスを採用しています)。 CONTRIBUTING.md を参照してください。
- セキュリティ — トークンや標準出力の 1 バイトでも漏えいさせる方法を見つけた場合は、公開の問題を作成しないでください。 非公開の連絡先と脅威モデルについては SECURITY.md を参照してください。
- ライセンス — MIT。
- AI コーディングエージェント向け — エントリーポイントの契約(不変条件、固定された依存関係、 マージ前チェックリスト)は CLAUDE.md に記載されています。
CONTRIBUTING.md、SECURITY.md、CLAUDE.md は GitHub 上にのみあり、
examples/ と同様、npm の tarball には含まれていません。例外は LICENSE で、パッケージに同梱されています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。