244 lines
5.8 KiB
Markdown
244 lines
5.8 KiB
Markdown
|
|
# MCP Server セットアップガイド
|
|||
|
|
Claude Code + ローカルLLM統合環境
|
|||
|
|
|
|||
|
|
## 🚀 セットアップ手順
|
|||
|
|
|
|||
|
|
### 1. 依存関係のインストール
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 仮想環境作成
|
|||
|
|
python -m venv mcp-env
|
|||
|
|
mcp-env\Scripts\activate # Windows
|
|||
|
|
# source mcp-env/bin/activate # Linux/Mac
|
|||
|
|
|
|||
|
|
# 必要なパッケージをインストール
|
|||
|
|
pip install mcp requests pathlib asyncio
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. Ollamaのセットアップ
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Ollamaのインストール(https://ollama.com)
|
|||
|
|
# Windows: インストーラーをダウンロード
|
|||
|
|
# Linux: curl -fsSL https://ollama.com/install.sh | sh
|
|||
|
|
|
|||
|
|
# Qwen2.5-Coderモデルをダウンロード
|
|||
|
|
ollama pull qwen2.5-coder:14b-instruct-q4_K_M
|
|||
|
|
|
|||
|
|
# Ollamaサーバー起動確認
|
|||
|
|
ollama serve
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. Claude Desktop設定
|
|||
|
|
|
|||
|
|
#### claude_desktop_config.json の作成
|
|||
|
|
**Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
|
|||
|
|
**macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|||
|
|
**Linux**: `~/.config/claude/claude_desktop_config.json`
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"mcpServers": {
|
|||
|
|
"local-llm": {
|
|||
|
|
"command": "python",
|
|||
|
|
"args": ["/path/to/your/local_llm_mcp_server.py"],
|
|||
|
|
"env": {
|
|||
|
|
"OLLAMA_URL": "http://localhost:11434",
|
|||
|
|
"DEFAULT_MODEL": "qwen2.5-coder:14b-instruct-q4_K_M"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 4. Claude Code設定
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Claude Codeをインストール(既にインストール済みの場合はスキップ)
|
|||
|
|
# 公式サイトからダウンロード
|
|||
|
|
|
|||
|
|
# MCP サーバーを追加
|
|||
|
|
claude mcp add local-llm
|
|||
|
|
|
|||
|
|
# または手動で設定ファイルを編集
|
|||
|
|
# ~/.config/claude-code/config.json
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🎯 使用方法
|
|||
|
|
|
|||
|
|
### Claude Codeから使用
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Claude Codeを起動
|
|||
|
|
claude code
|
|||
|
|
|
|||
|
|
# プロンプト例:
|
|||
|
|
# "Use local LLM to implement a Python quicksort function"
|
|||
|
|
# "Analyze main.py with local model for potential bugs"
|
|||
|
|
# "Generate a REST API using the local coding model"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 利用可能なツール
|
|||
|
|
|
|||
|
|
1. **code_with_local_llm**
|
|||
|
|
- タスク: `"Implement a binary search tree in Python"`
|
|||
|
|
- プロジェクトコンテキスト含む: `true`
|
|||
|
|
|
|||
|
|
2. **read_file_with_analysis**
|
|||
|
|
- ファイルパス: `"src/main.py"`
|
|||
|
|
- 分析タイプ: `"bugs"` | `"optimization"` | `"documentation"`
|
|||
|
|
|
|||
|
|
3. **write_code_to_file**
|
|||
|
|
- ファイルパス: `"utils/helpers.py"`
|
|||
|
|
- タスク説明: `"Create utility functions for data processing"`
|
|||
|
|
|
|||
|
|
4. **debug_with_llm**
|
|||
|
|
- エラーメッセージ: `"IndexError: list index out of range"`
|
|||
|
|
- コードコンテキスト: 該当するコード部分
|
|||
|
|
|
|||
|
|
5. **explain_code**
|
|||
|
|
- コード: 解説したいコード
|
|||
|
|
- 詳細レベル: `"basic"` | `"medium"` | `"detailed"`
|
|||
|
|
|
|||
|
|
6. **switch_model**
|
|||
|
|
- モデル名: `"qwen2.5-coder:7b-instruct"`
|
|||
|
|
|
|||
|
|
## 🔧 カスタマイズ
|
|||
|
|
|
|||
|
|
### モデル設定の変更
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
# デフォルトモデルの変更
|
|||
|
|
llm = LocalLLMServer("deepseek-coder:6.7b-instruct-q4_K_M")
|
|||
|
|
|
|||
|
|
# 複数モデル対応
|
|||
|
|
models = {
|
|||
|
|
"coding": "qwen2.5-coder:14b-instruct-q4_K_M",
|
|||
|
|
"general": "qwen2.5:14b-instruct-q4_K_M",
|
|||
|
|
"light": "mistral-nemo:12b-instruct-q5_K_M"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### プロンプトのカスタマイズ
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
# システムプロンプトの調整
|
|||
|
|
system_prompt = """You are an expert coding assistant specialized in:
|
|||
|
|
- Clean, efficient code generation
|
|||
|
|
- Best practices and design patterns
|
|||
|
|
- Security-conscious development
|
|||
|
|
- Performance optimization
|
|||
|
|
|
|||
|
|
Always provide:
|
|||
|
|
- Working, tested code
|
|||
|
|
- Comprehensive comments
|
|||
|
|
- Error handling
|
|||
|
|
- Performance considerations"""
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🛠️ トラブルシューティング
|
|||
|
|
|
|||
|
|
### よくある問題
|
|||
|
|
|
|||
|
|
1. **MCPサーバーが起動しない**
|
|||
|
|
```bash
|
|||
|
|
# ログ確認
|
|||
|
|
tail -f ~/.config/claude-desktop/logs/mcp.log
|
|||
|
|
|
|||
|
|
# Pythonパスの確認
|
|||
|
|
which python
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
2. **Ollamaに接続できない**
|
|||
|
|
```bash
|
|||
|
|
# Ollamaの状態確認
|
|||
|
|
ollama ps
|
|||
|
|
curl http://localhost:11434/api/tags
|
|||
|
|
|
|||
|
|
# サービス再起動
|
|||
|
|
ollama serve
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
3. **モデルが見つからない**
|
|||
|
|
```bash
|
|||
|
|
# インストール済みモデル確認
|
|||
|
|
ollama list
|
|||
|
|
|
|||
|
|
# モデルの再ダウンロード
|
|||
|
|
ollama pull qwen2.5-coder:14b-instruct-q4_K_M
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### パフォーマンス最適化
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
# Ollamaの設定調整
|
|||
|
|
{
|
|||
|
|
"temperature": 0.1, # 一貫性重視
|
|||
|
|
"top_p": 0.95, # 品質バランス
|
|||
|
|
"num_predict": 2048, # 応答長制限
|
|||
|
|
"num_ctx": 4096 # コンテキスト長
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### セキュリティ設定
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
# ファイルアクセス制限
|
|||
|
|
ALLOWED_DIRECTORIES = [
|
|||
|
|
os.getcwd(),
|
|||
|
|
os.path.expanduser("~/projects")
|
|||
|
|
]
|
|||
|
|
|
|||
|
|
# 実行可能コマンドの制限
|
|||
|
|
ALLOWED_COMMANDS = ["git", "python", "node", "npm"]
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🎉 使用例
|
|||
|
|
|
|||
|
|
### 1. 新機能の実装
|
|||
|
|
```
|
|||
|
|
Claude Code Prompt:
|
|||
|
|
"Use local LLM to create a user authentication system with JWT tokens in Python Flask"
|
|||
|
|
|
|||
|
|
→ MCPサーバーがローカルLLMでコード生成
|
|||
|
|
→ ファイルに自動保存
|
|||
|
|
→ Claude Codeが結果を表示
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. バグ修正
|
|||
|
|
```
|
|||
|
|
Claude Code Prompt:
|
|||
|
|
"Analyze app.py for bugs and fix them using the local model"
|
|||
|
|
|
|||
|
|
→ ファイル読み込み + LLM分析
|
|||
|
|
→ 修正版コードを生成
|
|||
|
|
→ バックアップ作成後に上書き
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. コードレビュー
|
|||
|
|
```
|
|||
|
|
Claude Code Prompt:
|
|||
|
|
"Review the entire codebase with local LLM and provide optimization suggestions"
|
|||
|
|
|
|||
|
|
→ プロジェクト全体をスキャン
|
|||
|
|
→ 各ファイルをLLMで分析
|
|||
|
|
→ 改善提案をレポート形式で生成
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 📊 パフォーマンス比較
|
|||
|
|
|
|||
|
|
| 機能 | Claude Code (公式) | ローカルLLM + MCP |
|
|||
|
|
|------|-------------------|-------------------|
|
|||
|
|
| 応答速度 | ⚡ 高速 | 🟡 中程度 |
|
|||
|
|
| プライバシー | 🟡 クラウド | 🟢 完全ローカル |
|
|||
|
|
| カスタマイズ | 🟡 限定的 | 🟢 完全自由 |
|
|||
|
|
| コスト | 💰 従量課金 | 🟢 無料 |
|
|||
|
|
| 専門性 | 🟢 汎用的 | 🟢 カスタマイズ可能 |
|
|||
|
|
|
|||
|
|
## 🔄 今後の拡張
|
|||
|
|
|
|||
|
|
- [ ] 複数LLMモデルの同時利用
|
|||
|
|
- [ ] コード実行環境の統合
|
|||
|
|
- [ ] Gitワークフローの自動化
|
|||
|
|
- [ ] プロジェクトテンプレートの生成
|
|||
|
|
- [ ] 自動テスト生成機能
|