Devin MCP Proxy
by kohzih
README.md
# Devin MCP プロキシサーバー
任意のMCPクライアントとDevin MCP APIをシームレスに統合するFastMCPベースのプロキシサーバーです。AIを活用したリポジトリ分析と質疑応答機能を提供します。
## 🚀 クイックスタート
### Dockerを使用(推奨)
```bash
# 1. リポジトリをクローン
git clone https://github.com/your-username/devin-mcp-proxy.git
cd devin-mcp-proxy
# 2. 環境設定
cp .env.example .env
# .envファイルを編集してDEVIN_API_KEYを設定
# 3. ワンコマンドでデプロイ
./scripts/deploy.sh
```
### Pythonで直接実行
```bash
# 1. 依存関係をインストール
uv sync
# 2. 環境設定
cp .env.example .env
# .envファイルを編集してDEVIN_API_KEYを設定
# 3. サーバー起動
uv run python main.py
```
## 📋 機能
- **🔗 MCPプロトコル準拠**: 任意のMCPクライアント(Claude Desktop、Cursor、Clineなど)で動作
- **🤖 Devin統合**: DevinのAI駆動リポジトリ分析への直接アクセス
- **🐳 Docker対応**: プロダクション級設定での完全なコンテナ化
- **🔒 セキュア**: 非rootユーザー実行、環境変数管理、入力検証
- **📊 可観測性**: 組み込みヘルスチェック、包括的ログ機能
- **⚡ 高速**: 適切なエラーハンドリングを含む最適化された非同期実装
- **📱 簡単デプロイ**: ビルドとデプロイの自動化スクリプト
## 🏗️ アーキテクチャ
```
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ MCPクライアント │ │ Devin MCP │ │ Devin MCP │
│ (Claude等) │───▶│ プロキシサーバー │───▶│ APIサービス │
│ │ │ (このプロジェクト) │ │ │
└─────────────────┘ └──────────────────┘ └─────────────────┘
```
プロキシサーバーの動作:
1. クライアントからMCPツール呼び出しを受信
2. `ask_question`リクエストをDevin MCP APIに転送
3. 設定されたリポジトリに関するAI生成レスポンスを返却
## 🛠️ 前提条件
- **Docker & Docker Compose**(コンテナ化デプロイ用)
- **Python 3.10以降**(直接実行用)
- **有効なDevin APIキー**(全てのデプロイで必要)
## 📦 インストール
### オプション1: Dockerデプロイ
1. **クイックセットアップ**
```bash
git clone https://github.com/your-username/devin-mcp-proxy.git
cd devin-mcp-proxy
cp .env.example .env
# .envを編集: DEVIN_API_KEY=実際のAPIキー
./scripts/deploy.sh
```
2. **手動Docker**
```bash
docker-compose up -d --build
```
3. **プロダクションデプロイ**
```bash
# レジストリ用ビルド
REGISTRY=your-registry.com ./scripts/build.sh v1.0.0
# プロダクション環境でデプロイ
docker-compose -f docker-compose.prod.yml up -d
```
### オプション2: ローカルPython
1. **UV のインストール**(未インストールの場合)
```bash
curl -LsSf https://astral.sh/uv/install.sh | sh
source $HOME/.local/bin/env
```
2. **プロジェクトセットアップ**
```bash
git clone https://github.com/your-username/devin-mcp-proxy.git
cd devin-mcp-proxy
uv sync
cp .env.example .env
# .envを編集: DEVIN_API_KEY=実際のAPIキー
```
3. **サーバー実行**
```bash
uv run python main.py
```
## ⚙️ 設定
### 環境変数
| 変数名 | 必須 | デフォルト | 説明 |
|-------|------|-----------|------|
| `DEVIN_API_KEY` | ✅ | - | あなたのDevin APIキー |
| `REPO_NAME` | ❌ | `smartfnexta/pms` | クエリ対象のリポジトリ |
### リポジトリ設定
対象リポジトリを変更するには、`main.py`を編集:
```python
REPO_NAME = "your-org/your-repo" # この行を変更
```
## 🔧 使用方法
### Difyとの連携
1. **DifyでMCPサーバーを追加**
- Dify管理パネルでツール → MCPに移動
- サーバーを追加: `http://localhost:8000/sse/`
- プロトコルバージョン: `2025-03-26`
2. **ワークフローでの使用**
- `ask_question`ツールを選択
- リポジトリに関する質問を入力
- コードベースに関するAI駆動の洞察を取得
### Claude Desktopとの連携
Claude Desktop設定に追加:
```json
{
"mcpServers": {
"devin-proxy": {
"serverUrl": "http://localhost:8000/sse",
"headers": {
"Authorization": "Bearer オプション認証トークン"
}
}
}
}
```
### 直接APIテスト
```bash
# サーバーエンドポイントのテスト
curl http://localhost:8000
# ヘルスチェック
curl http://localhost:8000/health
```
## 📊 監視
### ヘルスチェック
```bash
# Dockerヘルス状態
docker-compose ps
# 手動ヘルスチェック
curl -f http://localhost:8000 && echo "✅ 正常" || echo "❌ 異常"
```
### ログ
```bash
# Dockerログ
docker-compose logs -f devin-mcp-proxy
# タイムスタンプ付きログ
docker-compose logs -f --timestamps devin-mcp-proxy
# システムサービスログ(systemd使用時)
sudo journalctl -u devin-mcp-proxy -f
```
## 🚀 開発
### プロジェクト構成
```
devin-mcp-proxy/
├── main.py # メインサーバーアプリケーション
├── pyproject.toml # Python依存関係(uv)
├── requirements.txt # Python依存関係(pip)
├── Dockerfile # コンテナ定義
├── docker-compose.yml # ローカルデプロイ
├── .env.example # 環境テンプレート
├── scripts/
│ ├── build.sh # ビルド自動化
│ └── deploy.sh # デプロイ自動化
├── CLAUDE.md # Claude Code用ガイダンス
├── DOCKER.md # Docker詳細ガイド
└── README.md # このファイル
```
### ローカル開発
```bash
# 開発モードでインストール
uv sync --dev
# 自動リロード付き実行(開発用)
uv run python main.py
# テスト実行(利用可能な場合)
uv run pytest
# コードフォーマット
uv run black main.py
uv run isort main.py
```
### カスタムイメージのビルド
```bash
# カスタムタグでビルド
./scripts/build.sh v1.2.3
# 特定レジストリ用ビルド
REGISTRY=ghcr.io/your-org ./scripts/build.sh v1.2.3
# レジストリにプッシュ
docker push ghcr.io/your-org/devin-mcp-proxy:v1.2.3
```
## 🔒 セキュリティ
- **非root実行**: コンテナは`mcp`ユーザーで実行
- **環境分離**: APIキーは環境変数経由
- **入力検証**: 全ての入力は処理前に検証
- **最小攻撃面**: 必要なポートのみ公開
- **定期更新**: セキュリティパッチのためのベースイメージ更新
## 📚 ドキュメント
- **[DOCKER.md](DOCKER.md)** - 包括的なDockerデプロイガイド
- **[CLAUDE.md](CLAUDE.md)** - Claude Code用開発セットアップ
- **[プラン.md](プラン.md)** - 原実装計画
- **[要件.md](要件.md)** - 要件仕様
## 🐛 トラブルシューティング
### よくある問題
| 問題 | 原因 | 解決策 |
|------|------|--------|
| `Repository not found` | 無効なリポジトリ名または権限 | リポジトリの存在とアクセス可能性を確認 |
| `Invalid API key` | 間違ったまたは未設定のDevin APIキー | `.env`の`DEVIN_API_KEY`を確認 |
| `Port already in use` | ポート8000が使用中 | `docker-compose.yml`でポートを変更 |
| `Container unhealthy` | サービスが応答しない | ログを確認: `docker-compose logs devin-mcp-proxy` |
### デバッグコマンド
```bash
# コンテナステータス確認
docker-compose ps
# 詳細ログ表示
docker-compose logs --details devin-mcp-proxy
# コンテナ内でシェル実行
docker-compose exec devin-mcp-proxy bash
# 環境変数確認
docker-compose exec devin-mcp-proxy env | grep DEVIN
# MCP接続の手動テスト
docker-compose exec devin-mcp-proxy python -c "
import asyncio
from main import call_devin_mcp
print(asyncio.run(call_devin_mcp('このリポジトリについて教えて')))
"
```
### パフォーマンス調整
```bash
# メモリ制限を増加
echo "
deploy:
resources:
limits:
memory: 1G
cpus: '1.0'
" >> docker-compose.yml
# レプリカのスケール(ロードバランサーと併用)
docker-compose up -d --scale devin-mcp-proxy=3
```
## 🤝 貢献
1. リポジトリをフォーク
2. フィーチャーブランチを作成: `git checkout -b feature/your-feature`
3. 変更を加えて十分にテスト
4. コミット: `git commit -m "機能を追加"`
5. プッシュ: `git push origin feature/your-feature`
6. プルリクエストを開く
### 開発ガイドライン
- Python PEP 8スタイルガイドラインに従う
- 新機能にはテストを追加
- 変更に対してドキュメントを更新
- Dockerビルドが通ることを確認
- 複数のMCPクライアントでテスト
## 📄 ライセンス
このプロジェクトはMITライセンスの下でライセンスされています。詳細は[LICENSE](LICENSE)ファイルをご覧ください。
## 🙏 謝辞
- **[FastMCP](https://gofastmcp.com)** - 優秀なMCPサーバーフレームワーク
- **[Devin AI](https://devin.ai)** - AI駆動開発プラットフォーム
- **[Model Context Protocol](https://modelcontextprotocol.io)** - 標準化されたAIツール統合
- **[Anthropic](https://anthropic.com)** - ClaudeとMCPエコシステム
## 📞 サポート
- **問題報告**: [GitHub Issues](https://github.com/your-username/devin-mcp-proxy/issues)
- **ディスカッション**: [GitHub Discussions](https://github.com/your-username/devin-mcp-proxy/discussions)
- **ドキュメント**: 詳細ガイドについては`docs/`フォルダを確認
---
<div align="center">
**❤️ [Claude Code](https://claude.ai/code)で作成**
[🏠 ホーム](https://github.com/your-username/devin-mcp-proxy) · [📚 ドキュメント](DOCKER.md) · [🐛 問題報告](https://github.com/your-username/devin-mcp-proxy/issues) · [💬 ディスカッション](https://github.com/your-username/devin-mcp-proxy/discussions)
</div>This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues