LM Studio や Bionic でコード生成を行う際、毎回プロンプトで「Gemini を呼び出してレビューして」と打つのは手間がかかります。
そこで今回は、Gemini CLI / SDK を MCP (Model Context Protocol) サーバーとして統合し、スキル設定経由で勝手にコードレビューを実行させる環境を構築しました。途中で発生した Workspace Trust (信頼設定) エラーの回避方法も含めて解説します。
1. 開発環境・ディレクトリ構成
OS: macOS
環境: LM Studio / Bionic, Python 3.14 (venv)
役割: Gemini CLI をバックグラウンドで起動し、stdio (標準入出力) で LM Studio と通信する MCP サーバー
/Users/hidenari/mcp/gemini-review/
├── .venv/ # Python 3.14 仮想環境
├── server.py # MCP サーバー本体コード
└── start.sh # LM Studio から呼び出される起動スクリプト
2. MCP サーバーの実装 (server.py)
mcp ライブラリを使用して、gemini CLI コマンドを MCP ツールとして登録します。subprocess で CLI を非対話モード(-p)で呼び出し、標準出力をそのまま返却するシンプルな実装です。
from mcp.server.mcpserver import MCPServer
import subprocess
mcp = MCPServer("Gemini Reviewer")
GEMINI = "/Users/hidenari/.local/bin/gemini"
@mcp.tool()
def gemini_review(prompt: str) -> str:
"""Geminiにコードや設計のレビューを依頼する。"""
try:
result = subprocess.run(
[
GEMINI,
"-p",
prompt
],
capture_output=True,
text=True,
timeout=300
)
if result.returncode != 0:
return f"Gemini error:\n{result.stderr}"
return result.stdout
except subprocess.TimeoutExpired:
return "Gemini review timed out after 300 seconds."
except Exception as e:
return f"Failed to execute Gemini: {e}"
if __name__ == "__main__":
mcp.run()
3. 起動スクリプト (start.sh) の作成
最重要ポイントは Gemini CLI の Workspace Trust (ディレクトリ信頼チェック) を環境変数で回避すること です。これを設定しないと、非対話モードでの呼び出し時に信頼エラーで停止してしまいます。
#!/bin/bash
# Gemini CLI の信頼チェックを回避する環境変数をセット
export GEMINI_SKIP_TRUST=1
export GEMINI_ALLOW_UNTRUSTED=true
# 仮想環境の Python で server.py を起動
exec /Users/hidenari/mcp/gemini-review/.venv/bin/python \
/Users/hidenari/mcp/gemini-review/server.py
作成後、実行権限を付与しておきます。
chmod +x /Users/hidenari/mcp/gemini-review/start.sh
4. LM Studio (Bionic) での設定
LM Studio の MCP 設定画面(または ~/.lmstudio/mcp.json)にて、起動コマンドを指定します。
![LM Studio MCP Configuration]
Name:
gemini-review(※画像内ではMy MCP)Command:
/Users/hidenari/mcp/gemini-review/start.sh
設定保存後、ステータスが Connected · 1 tool ready と緑色に点灯すれば、背景プロセスとして正しく接続完了です。
5. プロセスの起動確認
ターミナルで ps コマンドを実行し、バックグラウンド待機状態になっているか確認します。
ps aux | grep gemini-review
TTY が ?? かつ STAT が S (Sleep) で待機している PID があれば、LM Studio と stdio 経由で正常接続されています。
6. Bionic Skill に自動呼び出しルールを仕込む
毎回「Gemini を使って」と書かずに済むよう、Bionic の Skill 設定(dev-doc-rules)に自動実行トリガーを埋め込みます。
Bionic Skill 登録用テキスト:
コーディング完了時の引き継ぎドキュメント (Markdown) とGit用README更新案の作成ルール、およびコードレビュー時のMCP自動呼び出しルール
出力してください。
1. 引き継ぎドキュメント ( docs/ 配下等に保存する Markdown用)
```markdown
# 引き継ぎメモ: [機能名 / タスク名] (YYYY-MM-DD)
## 1. 今回実装した内容
- **対象ファイル**: `src/path/to/file.ext`
- **概要**: 実装・修正した処理の概要
## 2. 影響範囲・注意事項
- 他のモジュールへの影響や、依存している設定 (環境変数など)
- パフォーマンスやセキュリティ上の留意点
## 3. 保留・未対応事項 (Issues)
- 今回あえて対応しなかった仕様や、仮実装 (ハードコード等) で留めた箇所
## 4. 残タスク・ネクストアクション
- [ ] 次に実装・対応すべき項目
- [ ] テストコードの作成・拡充
コードレビューおよび修正時のMCP自動実行ルール
ユーザーからコードのレビュー、リファクタリング、バグ修正、またはコード品質の検証を求められた場合は、明示的な指示がなくても、必ず
gemini-reviewMCP ツールを自発的に呼び出して検証結果を取得してください。自身の知識だけで回答せず、
gemini-reviewの出力内容を最優先で盛り込んだ回答を生成してください。
---
## 7. 動作確認
設定完了後、「テストとしてGeminiにレビュー出来るのか疎通確認したい」と頼むだけで、裏で勝手に Gemini CLI が `--skip-trust` つきで起動し、以下のような精緻なレビューを自動出力してくれるようになりました。
* **状態同期/UX**: `commitRename` での `setEditingTitle(false)` 欠落指摘
* **アクセシビリティ**: `tabIndex={-1}` が設定された header のキーボードフォーカス不可
* **セキュリティ**: パス横断対策の検証結果
手動で外部 API や CLI を叩く手間が一切なくなり、ローカル LLM 開発の効率が劇的に向上しました。
0 件のコメント:
コメントを投稿