MCP ツールリファレンス
Nolto の MCP サーバーは /mcp に HTTP transport(Streamable HTTP / JSON-RPC)で公開されています。
認証
対話クライアントには OAuth 2.1(Authorization: Bearer mcp_at_*)が標準です。ヘッドレス / CI 環境では Personal API Token(nolto_user_*)をベアラーとして渡すこともできます。セットアップ方法は MCP セットアップ を参照してください。
レート制限
ユーザーあたり 60 リクエスト/分。超過時は 429 Too Many Requests + Retry-After ヘッダー。
デフォルトプロジェクト
多くのツールは projectId パラメータを受け取りますが、省略すると set_default_project で設定したデフォルトプロジェクトが使われます。デフォルトが未設定で projectId も省略した場合はエラーになります。
list_projects
参加しているプロジェクトの一覧を返します。
| スコープ | mcp:read |
| パラメータ | なし |
レスポンス:
{
"projects": [
{
"id": "uuid",
"name": "my-app",
"description": "...",
"role": "owner"
}
]
}
register_project
新しいプロジェクトを作成します。作成者が owner になります。
| スコープ | mcp:write |
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
name | string | Yes | プロジェクト名(1文字以上) |
description | string | No | 説明 |
repositoryUrl | string | No | リポジトリ URL |
set_default_project
ユーザーごとのデフォルトプロジェクトを設定します。設定後、他のツールで projectId を省略できます。
| スコープ | mcp:write |
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
projectId | UUID | Yes | デフォルトに設定するプロジェクト ID |
list_plans
プロジェクトのプラン一覧を返します。
| スコープ | mcp:read |
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
projectId | UUID | No | プロジェクト ID(省略時はデフォルト) |
status | string | No | ステータスフィルタ(not_started / in_progress / done / discarded) |
get_plan
プランの詳細(フェーズ、イベント含む)を返します。
| スコープ | mcp:read |
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
planId | UUID | Yes | プラン ID |
projectId | UUID | No | プロジェクト ID(省略時はデフォルト) |
register_plan
プランを登録し、LLM 変換ジョブをキューに入れます。
| スコープ | mcp:write |
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
projectId | UUID | No | プロジェクト ID(省略時はデフォルト) |
plan.title | string | Yes | タイトル(1〜500文字) |
plan.content | string | Yes | 本文(1〜50,000文字) |
plan.status | string | No | 初期ステータス(デフォルト: not_started) |
plan.phases | array | No | フェーズのリスト(最大50件) |
plan.plannedStartAt | string | No | 予定開始日時(ISO 8601) |
plan.plannedEndAt | string | No | 予定終了日時(ISO 8601) |
source.kind | string | No | 登録元(デフォルト: mcp) |
source.path | string | No | ファイルパス |
source.url | string | No | URL |
source.hash | string | No | コンテンツハッシュ |
git.userName | string | No | Git ユーザー名 |
git.userEmail | string | No | Git メールアドレス |
レスポンス:
{
"planId": "uuid",
"transformStatus": "queued",
"detailUrl": "https://nolto.app/projects/.../plans/..."
}
プランの登録は月間 AI 変換クォータを 1 回分消費します。
register_structured_plan
AI ツール側で既に正規の 2 階層 StructuredPlan(グループ → タスク)を構築済みの場合に、それを直接登録します。register_plan との違いは 構造抽出(haiku)ステップをスキップ する点だけで、日本語サマリ生成(sonnet)と課金(変換 1 回分)は同じです。
| スコープ | mcp:write |
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
projectId | UUID | No | プロジェクト ID(省略時はデフォルト) |
plan.title | string | Yes | タイトル(1〜500文字、空不可) |
plan.content | string | Yes | 本文の raw markdown(1〜50,000文字、空不可) |
plan.status | string | No | 初期ステータス(デフォルト: not_started。この階層は discarded も可) |
plan.documents | array | No | 添付ドキュメント(最大10件) |
structuredPlan | object | Yes | 構築済みの正規 StructuredPlan(下記) |
source.* | – | No | 登録元メタデータ(register_plan と同じ) |
git.* | – | No | Git コミッタ情報(register_plan と同じ) |
plan.phases は受け付けません。フェーズ構造は必ず structuredPlan で渡してください。
structuredPlan の形
@nolto/llm の正規 structuredPlan と同じ形で、.strict()(不明なキーは拒否)です。
| フィールド | 型 | 制限 | 説明 |
|---|---|---|---|
plan.title | string | 最大500文字 | プランタイトル |
plan.scale | string | null | 最大500文字 | 規模表記(任意) |
plan.status | enum | 3値のみ | not_started / in_progress / done |
groups[] | array | 最大50グループ | 作業グループ(フェーズ) |
groups[].id | string | 最大256文字 | グループ識別子 |
groups[].label | string | 最大500文字 | 見出しテキスト |
groups[].status | enum | 3値のみ | グループのステータス |
groups[].body_md | string | null | 最大20,000文字 | グループ本文(markdown) |
groups[].tasks[] | array | 1グループ最大100タスク | グループ内のタスク |
groups[].tasks[].id | string | 最大256文字 | タスク識別子 |
groups[].tasks[].label | string | 最大500文字 | 見出しテキスト |
groups[].tasks[].status | enum | 3値のみ | タスクのステータス |
groups[].tasks[].body_md | string | null | 最大20,000文字 | タスク本文(markdown) |
groups[].tasks[].depends_on | string[] | – | 依存タスクの id |
groups[].tasks[].diff | string | null | 最大500文字 | 差分サイズ表記(任意) |
context_sections[] | array | 最大50件 | 作業外の文脈セクション |
context_sections[].id | string | 最大256文字 | セクション識別子 |
context_sections[].label | string | 最大500文字 | 見出しテキスト |
context_sections[].kind | enum | – | confirmed_decisions / open_questions / other |
context_sections[].body_md | string | 最大20,000文字 | セクション本文(markdown) |
structuredPlan 内の status は 3 値(not_started / in_progress / done)のみです。discarded はプラン全体の plan.status でのみ指定できます。構造が不正な場合はフィールドパス付きのエラーで拒否され、register_plan への自動フォールバックはありません(修正して再試行してください)。
レスポンスは register_plan と同じ(planId / transformStatus / detailUrl)です。
upload_plan_document
プラン(または特定のフェーズ)に成果物ドキュメントを添付します。同一内容はコンテンツハッシュで重複排除されます。
| スコープ | mcp:write |
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
planId | UUID | Yes | プラン ID |
projectId | UUID | No | プロジェクト ID(省略時はデフォルト) |
phaseId | UUID | No | 紐付けるフェーズ ID(省略時はプラン全体) |
kind | string | Yes | 種別: plan / final_report / review_report / test_report / other |
filename | string | Yes | ファイル名(1〜255文字) |
content | string | Yes | ファイル内容(encoding に従ってデコード) |
encoding | string | No | utf8(デフォルト) / base64 |
デコード後のサイズは 2 MiB までです。
レスポンス:
{
"documentId": "uuid",
"deduped": false,
"sizeBytes": 1024,
"mimeType": "text/markdown"
}
deduped が true の場合、同一内容の既存ドキュメントが再利用されています。
update_plan_status
プランのステータスを更新します。
| スコープ | mcp:write |
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
planId | UUID | Yes | プラン ID |
projectId | UUID | No | プロジェクト ID(省略時はデフォルト) |
status | string | Yes | 新しいステータス |
message | string | No | 変更理由(最大1,000文字) |
許可される遷移は データモデル を参照してください。
update_phase_status
フェーズのステータスを更新します。親プランのステータスが自動的に再計算されます。
| スコープ | mcp:write |
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
planId | UUID | Yes | プラン ID |
phaseId | UUID | Yes | フェーズ ID |
projectId | UUID | No | プロジェクト ID(省略時はデフォルト) |
status | string | Yes | 新しいステータス |
message | string | No | 変更理由(最大1,000文字) |
レスポンス:
{
"ok": true,
"planStatus": "in_progress"
}
planStatus は再計算後の親プランのステータスです。派生ルールは データモデル を参照してください。
record_phase_test_result
フェーズのテスト結果を記録します。追記式で、同じフェーズに複数回記録できます(再テストのたびにラウンドが増えます)。ステータスは変更しません。
| スコープ | mcp:write |
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
planId | UUID | Yes | プラン ID |
phaseId | UUID | Yes | フェーズ ID |
projectId | UUID | No | プロジェクト ID(省略時はデフォルト) |
verdict | string | Yes | passed(合格) / failed(不合格) / skipped(対象外) |
round | int | No | ラウンド番号(1以上)。省略時は最大値 +1(初回は 1) |
summary | string | No | コメント(最大1,000文字) |
レスポンス:
{
"ok": true,
"round": 2,
"verdict": "passed"
}
record_plan_review
プランの最終レビュー結果(GO / NO-GO)を記録します。追記式で、同じプランに複数回記録できます。ステータスは変更しません(GO = 完了ではありません)。
| スコープ | mcp:write |
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
planId | UUID | Yes | プラン ID |
projectId | UUID | No | プロジェクト ID(省略時はデフォルト) |
verdict | string | Yes | go(GO・承認) / no_go(NO-GO・差し戻し) |
summary | string | No | コメント(最大1,000文字) |
レスポンス:
{
"ok": true,
"verdict": "go"
}