コンテンツにスキップ

Rigor MCPサーバー — AIエージェント統合

rigor mcprigortype gemに同梱されているModel Context Protocol(MCP)サーバーです。Rigorの解析ツールを改行区切りstdioストリーム上のJSON-RPC 2.0ツール呼び出しとして公開するため、AIコーディングアシスタント——Claude Code、Cursor、Cline、VS Code Copilot Chat、その他のMCP対応エージェント——がセッション中にRigorを直接呼び出せます。

この章の内容 MCP対LSP · ツール一覧 · 前提条件 · CLI · クライアント設定 — Claude Desktop · Claude Code · Cursor · Cline · 汎用 · ツールリファレンス — rigor_check · rigor_type_of · rigor_triage · rigor_annotate · rigor_sig_gen · rigor_explain · rigor_coverage · トラブルシューティング · ステータスとロードマップ

rigor lsprigor mcpは同じ基盤エンジンを公開します。違いは消費者です。

rigor lsprigor mcp
プロトコルLanguage Server ProtocolModel Context Protocol
消費者エディタAIコーディングエージェント
インタラクション継続的(セーブのたびに診断をプッシュ)オンデマンド(エージェントが判断したときにツールを呼び出す)
トランスポートstdio(TCPキュー)stdio(HTTPキュー)
使用場面エディタ統合AI支援開発

インラインの診断とNeovim、VS Code、Helix、Emacsでのホバーを得るにはrigor lspを使います。AIエージェントがリファクタ提案前に型チェックし、カーソル位置の型を調べ、コードレビューセッションのコンテキストとしてプロジェクトの診断セットをトリアージできるようにするにはrigor mcpを使います。

両方を同時に実行しても競合はありません。

ツール基盤コマンド返り値
rigor_checkrigor check --format jsonJSON診断レポート
rigor_type_ofrigor type-of --format jsonFILE:LINE:COLのJSON型
rigor_triagerigor triage --format jsonJSON分布 + ホットスポット + ヒント
rigor_annotaterigor annotate --no-color注釈付きRubyソース
rigor_sig_genrigor sig-gen --print --format jsonJSON RBSスケルトン候補
rigor_explainrigor explain --format jsonJSONルールカタログエントリー
rigor_coveragerigor coverage --format jsonJSON精度ティア内訳

すべてのツールは読み取り専用です。書き込み側の操作(rigor initrigor baseline generaterigor sig-gen --write)は意図的に除外されています——プロジェクトファイルの変更は開発者が行うものであり、エージェントのツール呼び出しではありません。

唯一の前提条件はPATH上のrigor ——rigor checkrigor lspが既に使っているのと同じ実行ファイルです。Rigorのインストールのどのインストールチャネルでも提供されます;miseが推奨チャネルです。shims経由でシェル環境を継承しないプロセス(AIエージェント)にもrigorを利用可能にするためです。

rigortypeをプロジェクトのGemfileに追加しないでください。Rigorはツールであり、ライブラリではありません。Rigorのインストール §「推奨 — ランタイムバージョンマネージャー」を参照してください。

Terminal window
rigor mcp [--transport=stdio] [--config=PATH]
  • --transport=stdio — デフォルト;v1で受け付ける唯一の値。HTTPトランスポートはv2に先送り。
  • --config=PATH — セッションレベルのデフォルト設定パス。個々のツール呼び出しが独自のconfig引数を提供でき、それが優先されます。どちらもない場合、Configuration.discoverがワーキングディレクトリから.rigor.yml / .rigor.dist.ymlを探索します。

終了コード: 0(クリーンシャットダウン — stdin EOF)、64(不明な--transport)。

~/Library/Application Support/Claude/claude_desktop_config.json(macOS)または%APPDATA%\Claude\claude_desktop_config.json(Windows)にエントリーを追加します:

{
"mcpServers": {
"rigor": {
"command": "rigor",
"args": ["mcp"]
}
}
}

Claude Desktopを再起動します。rigor_checkrigor_type_ofなどのツールがモデルのツールパレットに表示されます。特定のプロジェクト設定に解析をピン留めするには:

{
"mcpServers": {
"rigor": {
"command": "rigor",
"args": ["mcp", "--config=/path/to/project/.rigor.yml"]
}
}
}

Claude CodeはプロジェクトレベルのMCPサーバー定義をその設定から読み込みます。プロジェクトルートの.claude/settings.jsonに追加します:

{
"mcpServers": {
"rigor": {
"command": "rigor",
"args": ["mcp"]
}
}
}

または~/.claude/settings.jsonにグローバルに登録して、すべてのプロジェクトで利用可能にします。登録すると、Claude CodeはこれからRigorを使えます。

.cursor/mcp.json(プロジェクトルート)または~/.cursor/mcp.json(ユーザーレベル)に追加します:

{
"mcpServers": {
"rigor": {
"command": "rigor",
"args": ["mcp"]
}
}
}

CursorのComposerはRigorツールを組み込み機能と並べて提供します。rigor_checkはComposerリファクタの前に特に有用です——まず実行して現在の診断ベースライン(baseline)を把握し、その後で比較します。

Clineパネル → MCPサーバー → サーバーを追加 → カスタムを開き、以下を入力します:

フィールド
名前rigor
コマンドrigor
引数["mcp"]

またはClineのcline_mcp_settings.jsonに直接追加します:

{
"mcpServers": {
"rigor": {
"command": "rigor",
"args": ["mcp"]
}
}
}

汎用 / カスタムMCPクライアント

Section titled “汎用 / カスタムMCPクライアント”

rigor mcpMCPstdioトランスポートを使います: 1行1つのJSON-RPC 2.0メッセージ、\n終端、Content-Lengthフレームなし。この規約に従うどのクライアントでも動作します。初期化シーケンス:

→ {"jsonrpc":"2.0","id":0,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"my-agent","version":"1.0"}}}
← {"jsonrpc":"2.0","id":0,"result":{"protocolVersion":"2024-11-05","capabilities":{"tools":{"listChanged":false}},"serverInfo":{"name":"rigor","version":"0.1.15"}}}
→ {"jsonrpc":"2.0","method":"notifications/initialized"}
→ {"jsonrpc":"2.0","id":1,"method":"tools/list"}
← {"jsonrpc":"2.0","id":1,"result":{"tools":[...]}}

notifications/*以外のすべてのメッセージはレスポンスを必要とします。notifications/*idを持たず、静かに消費されます。

1つ以上のRubyファイルまたはディレクトリを型エラー、未定義メソッド、引数数の不一致、nilレシーバーリスクについて解析します。

入力:

引数必須デフォルト
pathsstring[]はい
configstringいいえセッションデフォルト

返り値: JSON — rigor check --format jsonと同じ構造。

{
"diagnostics": [
{
"path": "app/models/user.rb",
"line": 42,
"column": 5,
"rule": "call.undefined-method",
"severity": "error",
"message": "undefined method `naem` for String"
}
]
}

isErrorは、診断が見つかった場合でも実行が正常完了したときはfalseisError: trueはCLIがEXIT_USAGE(64)で終了したとき——不正な引数またはランタイム失敗——のみ設定されます。AIクライアントはisError: falseのJSON診断配列を通常通り読み取れます。

典型的なエージェントの使い方:エージェントが編集しようとするファイルに対してrigor_checkを呼び出してベースラインを記録し、編集を適用し、再度呼び出して2つの診断配列の差分を取ることで変更が問題を導入または解決したかを確認する。


特定のソース位置での式の推論型を取得します。

入力:

引数必須
filestringはい
lineinteger(1ベース)はい
colinteger(1ベース)はい
configstringいいえ

返り値: JSON — rigor type-of --format jsonと同じ。

{
"file": "lib/order.rb",
"line": 17,
"column": 10,
"node": "LocalVariableReadNode",
"type": "Integer | nil",
"erased": "Integer?"
}

典型的なエージェントの使い方:ホバー説明の根拠(「このカーソル位置のxの型は何か?」)、またはシグネチャを生成する前の型仮定の検証。


プロジェクトの診断ストリームを要約します: ルール分布、ファイルごとのホットスポット、最も一般的なエラークラスタに対するヒューリスティックヒント。

入力:

引数必須デフォルト
pathsstring[]いいえ設定済みパス
topintegerいいえ10
configstringいいえセッションデフォルト

返り値: JSON — rigor triage --format jsonと同じ。

{
"summary": { "total_diagnostics": 488, "files_with_diagnostics": 31 },
"distribution": [
{ "rule": "call.possible-nil-receiver", "count": 212, "pct": 43.4 }
],
"hotspots": [
{ "path": "app/models/account.rb", "count": 38 }
],
"hints": [
{ "id": "H1", "message": "Likely missing ActiveSupport core_ext RBS ...", "action": "..." }
]
}

典型的なエージェントの使い方:コードレビューまたはクリーンアップセッションの開始時にrigor_triageを実行して、どのルールとファイルに注力するかを決める前に診断の全体像を把握する。


指定されたRubyソースファイルに各行の最後の式の型を#=> dump_type:コメントとして付加して返します。defヘッダー行はメソッドの推論戻り型を表示します。

入力:

引数必須
filestringはい
configstringいいえ

返り値:プレーンテキスト(注釈付きRubyソース)。JSONではありません。

module Rigor
VERSION = "0.1.15" #=> dump_type: "0.1.15"
end

典型的なエージェントの使い方: rigor_type_ofを行ごとに呼び出すことなく、特定のファイルを通じてRigorが型を推論する方法を理解する。


RubyソースファイルからRBSスケルトンシグネチャを推論して生成します。

入力:

引数必須デフォルト
pathsstring[]いいえ設定済みパス
params"untyped""observed"いいえ
configstringいいえセッションデフォルト

params: "observed"spec/(または基盤CLIの--observe=PATHで指定されたディレクトリ)から呼び出しサイト引数型を収集します。

返り値: JSON — rigor sig-gen --print --format jsonと同じ。

{
"candidates": [
{
"class_name": "Order",
"method_name": "total",
"kind": "instance",
"classification": "new-method",
"rbs": "def total: () -> Integer"
}
]
}

分類: new-filenew-methodtighter-returnequivalentskipped

典型的なエージェントの使い方: rigor_sig_genを呼び出してどのメソッドがsig/に書く価値のある精確な戻り値を持つかを確認し、候補を生成して挿入する。エージェントはシグネチャを自動的に書くべきではありません — 候補を人間のレビューのために提示し、確認済みエントリーのみをrigor sig-gen --writeで適用する。


1つまたはすべてのRigor診断ルールの説明を調べます。

入力:

引数必須備考
rulestringいいえ省略するとフルカタログを取得

受け付ける値: 正規ルールID(call.undefined-method)、レガシーエイリアス(undefined-method)、またはファミリープレフィックス(callflowassertdumpdef)。

返り値: JSON — ルールカタログエントリーの配列。

[
{
"id": "call.undefined-method",
"summary": "Method not found on the inferred receiver type.",
"severity_authored": "error",
"since": "0.0.1",
"fires_when": ["..."],
"does_not_fire_when": ["..."],
"suppression": "# rigor:disable call.undefined-method"
}
]

典型的なエージェントの使い方:診断をユーザーに説明する、または特定の状況でルールが発火するかどうかを調べて発見が実際のバグかどうかを判断する。


型精度カバレッジを報告します: RigorがConstant / Nominal / shaped / refined(精確)として型付けする式の割合対Dynamic[Top]またはtop(不透明)の割合。

入力:

引数必須
pathsstring[]はい
configstringいいえ

返り値: JSON — rigor coverage --format jsonと同じ。

{
"summary": {
"files_processed": 12,
"expressions_typed": 3841,
"precision_ratio": 0.447
},
"tiers": {
"constant": 312, "nominal": 903, "shaped": 46,
"refined": 71, "bot": 381,
"dynamic_specific": 512, "dynamic_top": 1498, "top": 118
},
"files": [
{
"path": "lib/order.rb",
"expressions_typed": 214,
"precision_ratio": 0.612
}
]
}

典型的なエージェントの使い方: foldルールやRBSアノテーションを追加した影響を測定する——前後でrigor_coverageを呼び出してprecision_ratioのデルタを比較する。


MCPサーバーは起動するがクライアントにツールが表示されない

ターミナルでrigor mcpを手動で実行してハンドシェイクを送信します:

Terminal window
echo '{"jsonrpc":"2.0","id":0,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"0"}}}' | rigor mcp

JSONレスポンスが返るはずです。何も返らないかシェルエラーが出る場合、rigorPATH上にありません——まずインストールパスを修正してください(Rigorのインストールを参照)。

rigor_check / rigor_triageがエラーのあるプロジェクトで空の診断配列を返す

ツールはMCPサーバーが起動したワーキングディレクトリからConfiguration.discoverを使います。クライアントがホームまたは一時ディレクトリからrigor mcpを起動した場合、.rigor.ymlが見つからず設定済みパスが空のセットにデフォルトします。対処法:

  • 起動時に--config=/path/to/project/.rigor.ymlを渡す: "args": ["mcp", "--config=/path/to/project/.rigor.yml"]
  • またはツール呼び出しに絶対paths引数を渡す: { "name": "rigor_check", "arguments": { "paths": ["/path/to/project/lib"] } }

rigor_type_ofisError: trueを報告する

ファイルパスはサーバープロセスから読み取り可能なオンディスクの正確なパスでなければなりません。相対パスはサーバーのワーキングディレクトリから解決されます。曖昧さを避けるためAIエージェントからは絶対パスを使ってください。

最初の呼び出しは遅く、その後は速い

セッションの最初の呼び出しでRubyのrequireキャッシュのコールドブートが行われます;以降の呼び出しではロード済みエンジンコードを再利用します。期待されるウォームパスのレイテンシ:

ツールコールド(最初の呼び出し)ウォーム(以降の呼び出し)
rigor_explain< 200 ms< 5 ms
rigor_type_of~1.5秒~200 ms
rigor_check(小プロジェクト)~2秒~500 ms
rigor_triage(小プロジェクト)~2秒~700 ms

コールドスタートはRBS環境構築が支配的です。事前のrigor check実行でウォームアップされた.rigor/cacheで大幅に短縮されます。

rigor mcpはすべての7ツールとstdioトランスポートを伴うv0.2.0評価リリースで出荷されます。キューされたフォローアップは需要駆動です:

  • HTTPトランスポート(スライス(slice)2) — CI / リモートエージェント向けの--transport=http;最小限のRackエンドポイント。
  • コール間環境キャッシュ(スライス3) — コール間でウォームなEnvironment + Cache::Storeをサーバー内に保持し、mtimeベースのチェックで無効化;同じプロジェクトへの繰り返し呼び出しのウォームパスレイテンシをほぼゼロに削減。
  • rigor_checkバッファモード — ファイルパスの代わりに(または加えて)インメモリのソースバッファを受け付ける;--tmp-file / --instead-ofエディタモードフラグをミラー。AIエージェントがファイルの内容をインメモリで編集して書き込む前にチェックしたいときに有用。
  • rigor_baseline_generate(書き込み側、ゲート付き) — 確認済みの書き込み権限を持つエージェント向けの明示的オプトインの書き込みツール。明確な需要シグナルが出るまで先送り。

キューされた機能のリクエストや問題の報告はGitHub issueを開いてください: MCPクライアント + バージョン、Rigorバージョン(rigor version)、問題を引き起こしたJSON-RPC交換を含めてください。

© 2026 TypedDuck. Licensed under CC BY-SA 4.0.