Devin テンプレート集
RAG 構築手順
MCP ローカル構築
Devin × RAG × MCP 連携

Devin AIエンジニア テンプレート集

プロンプトテンプレートで効率化するDevine活用術

2025年5月9日
実際の導入企業の知見に基づく

基本プロンプト構造

Devinは「新入社員エンジニア」と同じように指示するのが効果的

Devinへの指示は以下の構造に従うと効果的です:

基本テンプレート @Devin 【タスクの明確な目的】 以下のタスクを実行してください: 【具体的な作業内容】 1. 2. 3. 【成功基準】 - - 【参考となる既存の実装/ファイル】 - 【コーディング規約/ルール】 - 【制約条件】 - 【優先度/期限】 -

メンションの「@Devin」はSlack連携時に必要です。Web UIから直接指示する場合は不要です。

新機能実装テンプレート

タイプ:実装
難易度:中
新機能テンプレート @Devin 【タスク】新機能の実装 【機能概要】 [機能の詳細な説明と目的] 【技術スタック】 - フレームワーク: [例: React, Node.js, Express] - 言語: [例: TypeScript, JavaScript] - データベース: [例: PostgreSQL, MongoDB] 【実装の要件】 1. [具体的な要件1] 2. [具体的な要件2] 3. [具体的な要件3] 【参考実装】 以下のファイルに類似機能があります: - [ファイルパス]: [簡単な説明] - [ファイルパス]: [簡単な説明] 【セキュリティ要件】 - [セキュリティ要件がある場合] 【パフォーマンス要件】 - [パフォーマンス要件がある場合] 【テスト要件】 - 単体テストを必ず作成してください - 期待される入出力のテストケースを含めてください 【ドキュメント】 - コードには適切なコメントを入れてください - 使用方法の簡単な説明を含めてください 【優先度】 [高/中/低] まずは計画を立ててから実装を進めてください。途中で質問があれば遠慮なく確認してください。

バグ修正テンプレート

タイプ:修正
難易度:低〜中
バグ修正テンプレート @Devin 【タスク】バグ修正 【バグの再現手順】 1. [再現手順1] 2. [再現手順2] 3. [再現手順3] 【期待される動作】 [本来期待される動作の詳細] 【実際の動作】 [実際に起こっている問題の詳細] 【影響範囲】 [このバグが影響する機能やコンポーネント] 【エラーメッセージ/ログ】 ``` [エラーメッセージやログがあれば貼り付け] ``` 【関連するファイル】 - [ファイルパス1] - [ファイルパス2] 【発生環境】 - OS: [例: Windows 10, macOS, Ubuntu] - ブラウザ: [例: Chrome 108, Firefox 105] - デバイス: [例: デスクトップ, モバイル] 【優先度】 [緊急/高/中/低] 原因を特定して修正してください。修正後は、バグが解消されたことを確認するためのテストも実施してください。

バグ修正はDevinが最も得意とするタスクの一つです。詳細な再現手順と期待動作を伝えることで精度が大幅に向上します。

テスト作成テンプレート

タイプ:テスト
難易度:低
テスト作成テンプレート @Devin 【タスク】テストコードの作成 【テスト対象】 - ファイル: [ファイルパス] - クラス/関数: [テスト対象のクラス/関数名] 【テストフレームワーク】 [例: Jest, Mocha+Chai, pytest] 【カバレッジ要件】 [必要なカバレッジ率があれば記載: 例: 80%以上] 【テストすべきケース】 1. [正常系テストケース1] 2. [正常系テストケース2] 3. [異常系テストケース1] 4. [異常系テストケース2] 5. [エッジケース1] 【モック/スタブが必要な依存関係】 - [依存関係1]: [モックの目的] - [依存関係2]: [モックの目的] 【テスト環境のセットアップ要件】 [特別なセットアップが必要な場合] 【類似テストの参考例】 - [類似機能のテストファイルパス] テストコードはプロジェクトの既存のテスト構造に従って作成し、テストが通ることを確認してください。各テストケースには適切な説明コメントを含めてください。

テスト作成はDevinの強みの一つ!

以下のような複雑なテストでも対応可能:

  • 非同期処理のテスト
  • データベース連携のテスト
  • API統合テスト
  • ブラウザ操作のE2Eテスト

リファクタリングテンプレート

タイプ:改善
難易度:中
リファクタリングテンプレート @Devin 【タスク】コードリファクタリング 【対象コード】 - ファイル: [ファイルパス] - 範囲: [全体/特定の関数やクラス] 【リファクタリングの目的】 [例: パフォーマンス改善、可読性向上、保守性向上] 【具体的な問題点】 1. [問題点1: 例: 重複コードが多い] 2. [問題点2: 例: 関数が長すぎる] 3. [問題点3: 例: 命名規則が一貫していない] 【改善方針】 - [例: Single Responsibility Principleに従って分割] - [例: パフォーマンスボトルネックを最適化] - [例: デザインパターンXを適用] 【制約条件】 - 機能の動作は変更しないこと - 既存のテストはすべて通過すること - [その他の制約] 【コーディング規約】 - [プロジェクト固有のコーディング規約] 【優先度】 [高/中/低] リファクタリング前後の変更点と、改善による利点を説明してください。また、リファクタリング後にテストを実行して、機能に影響がないことを確認してください。

リファクタリングでは、デザインパターンや最適化戦略を具体的に指定すると、より質の高い結果が得られます。

ドキュメント生成テンプレート

タイプ:ドキュメント
難易度:低
ドキュメント生成テンプレート @Devin 【タスク】ドキュメント生成 【ドキュメントの種類】 [例: API仕様書、README、ユーザーマニュアル、開発者ガイド] 【対象】 - [ファイル/モジュール/プロジェクト名] 【目的】 [このドキュメントが誰のためのものか、どのように使われるか] 【必要なセクション】 1. [セクション1: 例: 概要] 2. [セクション2: 例: インストール手順] 3. [セクション3: 例: API参照] 4. [セクション4: 例: 使用例] 5. [セクション5: 例: トラブルシューティング] 【形式】 [例: Markdown, HTML, JSDoc] 【参考資料】 - [既存の関連ドキュメント] - [参考にすべきドキュメントの例] 【追加要件】 - [例: スクリーンショットを含める] - [例: サンプルコードを含める] コードを解析して、指定された形式で包括的なドキュメントを作成してください。技術的な詳細と使用例の両方を含め、初心者にも理解しやすい説明を心がけてください。

アーキテクチャ設計テンプレート

タイプ:設計
難易度:高
アーキテクチャ設計テンプレート @Devin 【タスク】アーキテクチャ設計 【プロジェクト概要】 [新規/既存プロジェクトの概要と目的] 【要件】 1. [機能要件1] 2. [機能要件2] 3. [非機能要件1: 例: スケーラビリティ] 4. [非機能要件2: 例: セキュリティ] 【技術スタック制約】 - バックエンド: [例: Node.js, Java Spring] - フロントエンド: [例: React, Vue.js] - データベース: [例: PostgreSQL, MongoDB] - インフラ: [例: AWS, Google Cloud] 【アーキテクチャパターン】 [指定があれば: 例: マイクロサービス, モノリス, イベント駆動] 【想定ユーザー数/負荷】 [例: 同時接続ユーザー数、データ量] 【セキュリティ要件】 [例: 認証方式、データ暗号化] 【デプロイ環境】 [例: コンテナ化、CD/CIパイプライン] 【予算/リソース制約】 [もしあれば] 以下の内容を含む設計ドキュメントを作成してください: 1. システム全体のアーキテクチャ図 2. コンポーネント間の関係と通信方法 3. データモデル 4. API設計 5. スケーラビリティと可用性の戦略 6. セキュリティ対策 7. 開発ロードマップと優先順位 技術的な選択肢と、それぞれの長所・短所も含めて説明してください。

アーキテクチャ設計はDevinにとって難度が高いタスクです。既存の設計パターンを参考にして、明確な制約条件を提示すると成功率が上がります。

デプロイ自動化テンプレート

タイプ:インフラ
難易度:中〜高
デプロイ自動化テンプレート @Devin 【タスク】デプロイ自動化の構築 【プロジェクト】 [プロジェクト名/リポジトリURL] 【現在のデプロイ状況】 [現在の手動/自動デプロイプロセスの説明] 【目標】 [例: CI/CDパイプラインの構築、デプロイの自動化] 【対象環境】 - 開発環境: [例: dev.example.com] - ステージング環境: [例: staging.example.com] - 本番環境: [例: www.example.com] 【技術スタック】 - CI/CDツール: [例: GitHub Actions, Jenkins, CircleCI] - インフラ: [例: AWS, Heroku, Vercel] - コンテナ化: [例: Docker, Kubernetes] 【必要なステップ】 1. [例: テスト自動化] 2. [例: ビルドプロセス] 3. [例: 環境変数の管理] 4. [例: デプロイスクリプト] 5. [例: ロールバック手順] 【セキュリティ要件】 - [例: 本番環境用のシークレット管理] - [例: アクセス制御] 【監視・アラート】 [もし必要であれば] 目標を達成するための詳細な手順と、必要な設定ファイル・スクリプトを作成してください。各ステップで考慮すべき事項と、ベストプラクティスも説明してください。

大規模リファクタリングテンプレート

タイプ:改善
難易度:高

大規模リファクタリングはDevinの強みの一つです!技術的負債の解消やコード品質の向上に最適です。

大規模リファクタリングテンプレート @Devin 【タスク】大規模リファクタリング 【プロジェクト概要】 [プロジェクトの概要と現状の課題] 【リファクタリングの目的】 - [例: レガシーコードのモダン化] - [例: パフォーマンス最適化] - [例: アーキテクチャパターンの導入] - [例: 技術負債の解消] 【対象範囲】 - [対象モジュール/ディレクトリ] - [主要改修対象ファイル] 【技術的課題】 1. [例: 古いフレームワークバージョンからの移行] 2. [例: コンポーネント間の密結合] 3. [例: テストカバレッジの不足] 4. [例: パフォーマンスボトルネック] 【目標アーキテクチャ/パターン】 [導入したいアーキテクチャやデザインパターン] 【段階的アプローチ】 このリファクタリングを複数のフェーズに分けて実施したいと考えています。 【制約条件】 - リファクタリング中も機能は維持すること - 既存のAPIインターフェースは変更しないこと - [その他の制約] 【成功指標】 - [例: テストカバレッジ90%以上] - [例: APIレスポンスタイム50%削減] - [例: メンテナンス性の向上] リファクタリングの詳細な計画を立てて、フェーズごとの実装アプローチを提案してください。各フェーズでのリスクと対策、テスト戦略も含めてください。

大規模リファクタリングは段階的に進めるのがコツです。Devinに明確なフェーズ分けを依頼しましょう。

RAG構築手順 for Devin

Pineconeを活用したRetrieval-Augmented Generation構築ガイド

2025年5月9日
実践的ガイド

RAG概要と構成

RAG(Retrieval-Augmented Generation)は以下の要素で構成されます:

  • ベクトルデータベース:ドキュメントやコードのエンベディングを格納
  • エンベディングモデル:テキストをベクトル化
  • 検索エンジン:クエリに関連する情報を取得
  • LLM:検索結果を使って回答生成
ユーザクエリ
エンベディング変換
Pinecone検索
関連コンテキスト取得
Devinによる回答生成

コードに対するRAG実装の利点:

  • 社内のコードベースをDevinが理解できる
  • 特定プロジェクトに特化した回答を生成可能
  • 最新の実装パターンやルールに基づいた提案

Pinecone設定

1

Pineconeアカウント作成

Pinecone公式サイトにアクセスし、アカウントを作成します。

2

APIキーの取得

コンソール画面から「API Keys」を選択し、APIキーを取得します。

3

インデックスの作成

Python
import pinecone

# Pineconeの初期化
pinecone.init(
    api_key="YOUR_API_KEY",
    environment="YOUR_ENVIRONMENT"
)

# インデックスの作成
pinecone.create_index(
    name="devin-code-index",
    dimension=1536,  # OpenAI text-embedding-3-small の次元数
    metric="cosine",
    pod_type="p1"
)

無料プランではp1タイプが利用できない場合があります。その場合はs1などの別タイプを選択してください。

コードベースのエンベディング

Python
import os
import glob
from openai import OpenAI
import pinecone

# OpenAI APIクライアントの初期化
client = OpenAI(api_key="YOUR_OPENAI_API_KEY")

# Pineconeの初期化
pinecone.init(
    api_key="YOUR_PINECONE_API_KEY",
    environment="YOUR_PINECONE_ENVIRONMENT"
)

# インデックスに接続
index = pinecone.Index("devin-code-index")

# コードファイルのパス
code_directory = "/path/to/your/codebase"
allowed_extensions = ['.py', '.js', '.ts', '.jsx', '.tsx', '.java', '.c', '.cpp', '.h']

# コードファイルを取得
code_files = []
for ext in allowed_extensions:
    code_files.extend(glob.glob(f"{code_directory}/**/*{ext}", recursive=True))

# ファイルごとにエンベディングを生成してPineconeに保存
for i, file_path in enumerate(code_files):
    try:
        # ファイルを読み込み
        with open(file_path, 'r', encoding='utf-8') as f:
            code_content = f.read()
        
        # ファイルが大きすぎる場合は分割(OpenAIのトークン制限に対応)
        if len(code_content) > 15000:
            # 簡易的な分割(より洗練された分割方法を使うことをお勧めします)
            chunks = [code_content[i:i+15000] for i in range(0, len(code_content), 15000)]
        else:
            chunks = [code_content]
        
        # 各チャンクに対してエンベディングを生成
        for chunk_idx, chunk in enumerate(chunks):
            # エンベディングの生成
            response = client.embeddings.create(
                input=chunk,
                model="text-embedding-3-small"
            )
            embedding = response.data[0].embedding
            
            # メタデータの作成
            metadata = {
                "file_path": file_path,
                "language": os.path.splitext(file_path)[1][1:],
                "chunk_idx": chunk_idx,
                "total_chunks": len(chunks)
            }
            
            # Pineconeに保存
            unique_id = f"{file_path}_{chunk_idx}".replace("/", "_").replace("\\", "_")
            index.upsert([(unique_id, embedding, metadata)])
        
        print(f"Processed {i+1}/{len(code_files)}: {file_path}")
    
    except Exception as e:
        print(f"Error processing {file_path}: {e}")

print("All code files have been embedded and stored in Pinecone.")

コードベースが大きい場合は、ファイルを意味のある単位で分割することをお勧めします。関数/クラス単位での分割が効果的です。

RAG検索インターフェース

Python
from openai import OpenAI
import pinecone

# 初期化
client = OpenAI(api_key="YOUR_OPENAI_API_KEY")
pinecone.init(
    api_key="YOUR_PINECONE_API_KEY",
    environment="YOUR_PINECONE_ENVIRONMENT"
)
index = pinecone.Index("devin-code-index")

def search_codebase(query, top_k=5):
    """
    クエリに関連するコードを検索する
    
    Args:
        query: 検索クエリ文字列
        top_k: 返す結果の数
        
    Returns:
        関連コードの配列
    """
    # クエリをエンベディングに変換
    response = client.embeddings.create(
        input=query,
        model="text-embedding-3-small"
    )
    query_embedding = response.data[0].embedding
    
    # Pineconeで類似検索を実行
    results = index.query(
        vector=query_embedding,
        top_k=top_k,
        include_metadata=True
    )
    
    # 結果を整形
    code_contexts = []
    for match in results['matches']:
        metadata = match['metadata']
        file_path = metadata['file_path']
        
        # ファイルを読み込み
        try:
            with open(file_path, 'r', encoding='utf-8') as f:
                content = f.read()
                
            # 大きなファイルの場合は、該当チャンク部分だけを抽出
            if metadata.get('total_chunks', 1) > 1:
                chunk_idx = metadata.get('chunk_idx', 0)
                total_chunks = metadata.get('total_chunks', 1)
                chunk_size = len(content) // total_chunks
                start_pos = chunk_idx * chunk_size
                end_pos = start_pos + chunk_size
                content = content[start_pos:end_pos]
            
            code_contexts.append({
                "file_path": file_path,
                "language": metadata.get('language', ''),
                "content": content,
                "similarity": match['score']
            })
        except Exception as e:
            print(f"Error reading file {file_path}: {e}")
    
    return code_contexts

def format_context_for_devin(code_contexts):
    """
    検索結果をDevinに渡すフォーマットに変換する
    
    Args:
        code_contexts: search_codebase()からの結果
        
    Returns:
        Devinへの入力に適したフォーマットのコンテキスト
    """
    context = "以下は関連するコードの抜粋です:\n\n"
    
    for i, code in enumerate(code_contexts, 1):
        context += f"### ファイル {i}: {code['file_path']} (類似度: {code['similarity']:.2f})\n"
        context += f"```{code['language']}\n{code['content']}\n```\n\n"
    
    return context

# 使用例
query = "ユーザー認証の実装方法"
code_contexts = search_codebase(query)
formatted_context = format_context_for_devin(code_contexts)

# このコンテキストをDevinへのプロンプトに含める
devin_prompt = f"""
@Devin

【タスク】ユーザー認証機能の実装

【参考コード】
{formatted_context}

上記のコードを参考にして、同じスタイルと設計パターンに沿ったユーザー認証機能を実装してください。
"""

print(devin_prompt)

MCPとの連携

RAGシステムをMCPサーバー化することで、Claude DesktopなどのMCPクライアントと連携できます。

Python - MCP RAG Server
import mcp
from openai import OpenAI
import pinecone
import os

# 初期化
client = OpenAI(api_key=os.environ.get("OPENAI_API_KEY"))
pinecone.init(
    api_key=os.environ.get("PINECONE_API_KEY"),
    environment=os.environ.get("PINECONE_ENVIRONMENT")
)
index = pinecone.Index("devin-code-index")

@mcp.tool()
def search_code(query: str, top_k: int = 5) -> str:
    """
    コードベースからクエリに関連するコードを検索します。
    
    Args:
        query: 検索クエリ文字列
        top_k: 返す結果の数
        
    Returns:
        関連コードの説明とコード片
    """
    # クエリをエンベディングに変換
    response = client.embeddings.create(
        input=query,
        model="text-embedding-3-small"
    )
    query_embedding = response.data[0].embedding
    
    # Pineconeで類似検索を実行
    results = index.query(
        vector=query_embedding,
        top_k=top_k,
        include_metadata=True
    )
    
    # 結果を整形
    output = f"## 「{query}」に関連するコード\n\n"
    
    for i, match in enumerate(results['matches'], 1):
        metadata = match['metadata']
        file_path = metadata['file_path']
        
        try:
            with open(file_path, 'r', encoding='utf-8') as f:
                content = f.read()
                
            # 大きなファイルの場合は、該当チャンク部分だけを抽出
            if metadata.get('total_chunks', 1) > 1:
                chunk_idx = metadata.get('chunk_idx', 0)
                total_chunks = metadata.get('total_chunks', 1)
                chunk_size = len(content) // total_chunks
                start_pos = chunk_idx * chunk_size
                end_pos = start_pos + chunk_size
                content = content[start_pos:end_pos]
            
            output += f"### {i}. {os.path.basename(file_path)} (類似度: {match['score']:.2f})\n"
            output += f"パス: {file_path}\n"
            output += f"言語: {metadata.get('language', '不明')}\n"
            output += f"```{metadata.get('language', '')}\n{content[:1500]}... (省略)\n```\n\n"
        
        except Exception as e:
            output += f"### {i}. {os.path.basename(file_path)} (エラー)\n"
            output += f"ファイルの読み込み中にエラーが発生しました: {e}\n\n"
    
    return output

if __name__ == "__main__":
    mcp.run()

このMCPサーバーをClaude Desktopの設定に追加することで、「search_code」ツールを使ってコードベースを検索できるようになります。

MCPローカル構築ガイド

Claude DesktopとDevinを連携するMCPサーバー構築手順

2025年5月9日
実践的ガイド

MCPとは

Model Context Protocol (MCP)とは:

  • Anthropicが2024年に提案したオープンプロトコル
  • LLMと外部ツール/データの連携を統一するための規格
  • 「AIにおけるUSB-Cポート」のような役割
  • あらゆるLLMがあらゆる外部データに統一的にアクセス可能に

MCPの主な利点:

  • ローカルファイルへのアクセスを安全に提供
  • 外部データソースとの連携を標準化
  • 専用APIs不要でツール間の連携が容易
  • 開発者・モデル提供者・ツール提供者の連携基盤
Claude Desktop
(MCP Client)
MCPサーバー
ローカルデータ/
外部ツール

MCPはRAG(Retrieval-Augmented Generation)と深く関連しており、外部データを動的に取得して高度な回答を提供します。

環境構築

1

Claude Desktopのインストール

Claude Desktop公式ページからインストーラーをダウンロードして実行します。

システム要件:macOS 10.15+、Windows 10+

2

Node.js環境の準備

多くのMCPサーバーはNode.jsベースですので、Node.jsをインストールしておきます。

コマンドライン
# macOS (Homebrew)
brew install node

# Windows (chocolatey)
choco install nodejs
3

Pythonのuv環境準備

Python MCPサーバー用のuvをインストールします。

コマンドライン
# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh

# Windows (PowerShell)
irm https://astral.sh/uv/install.ps1 | iex

基本的なMCPサーバー設定

Claude Desktopの設定ファイルを編集して、MCPサーバーを設定します。

1

設定ファイルを開く

Claude Desktopの設定ファイルは以下の場所にあります:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
2

設定ファイルの編集

JSON - ファイルシステムMCPサーバー
{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "/path/to/accessible/folder"
      ]
    }
  }
}

Windowsの場合は、パスをバックスラッシュでエスケープする必要があります:
"C:\\Users\\YourName\\Documents"

3

Claude Desktopの再起動

設定を反映させるためにClaude Desktopを完全に終了して再起動します。

設定が完了すると、Claude Desktopの画面に🧠のようなMCPアイコンが表示され、利用可能なツールが表示されます。

カスタムMCPサーバーの作成

独自のMCPサーバーを作成する方法を紹介します。例として、Devinで使えるコードベース検索サーバーを作ります。

Python - カスタムMCPサーバー
# code_search_mcp.py
import mcp
import os
import glob
import tempfile
import json

@mcp.tool()
def search_project_code(query: str, extensions: list = None, max_results: int = 5) -> str:
    """
    プロジェクト内のコードを検索します。
    
    Args:
        query: 検索したいキーワードやフレーズ
        extensions: 検索対象のファイル拡張子リスト (例: [".py", ".js"])
        max_results: 返す最大結果数
    
    Returns:
        検索結果のマークダウン形式のテキスト
    """
    if extensions is None:
        extensions = [".py", ".js", ".ts", ".jsx", ".tsx", ".html", ".css", ".java", ".c", ".cpp"]
    
    # 検索対象ディレクトリ
    project_dir = os.path.expanduser("~/projects")  # 適宜変更
    
    # 検索結果
    results = []
    
    # 全ファイルを走査
    for ext in extensions:
        for file_path in glob.glob(f"{project_dir}/**/*{ext}", recursive=True):
            try:
                with open(file_path, 'r', encoding='utf-8') as f:
                    content = f.read()
                    
                    # クエリを含むファイルを検索
                    if query.lower() in content.lower():
                        # ファイルパスを短縮表示
                        relative_path = os.path.relpath(file_path, project_dir)
                        
                        # 関連する行の抽出
                        lines = content.split('\n')
                        matching_lines = []
                        
                        for i, line in enumerate(lines):
                            if query.lower() in line.lower():
                                start = max(0, i - 2)
                                end = min(len(lines), i + 3)
                                context = lines[start:end]
                                matching_lines.append({
                                    "line_number": i + 1,
                                    "context": "\n".join(context)
                                })
                        
                        results.append({
                            "file": relative_path,
                            "extension": ext,
                            "matching_lines": matching_lines[:3]  # 最初の3つのマッチのみ
                        })
                        
                        # 最大結果数に達したら終了
                        if len(results) >= max_results:
                            break
            except Exception as e:
                continue
        
        # 最大結果数に達したら終了
        if len(results) >= max_results:
            break
    
    # 結果をマークダウン形式で出力
    if not results:
        return f"クエリ「{query}」に一致するコードが見つかりませんでした。"
    
    output = f"# 検索結果: '{query}'\n\n"
    
    for i, result in enumerate(results, 1):
        output += f"## {i}. {result['file']}\n\n"
        
        for j, match in enumerate(result['matching_lines'], 1):
            output += f"### マッチ {j} (行 {match['line_number']})\n\n"
            output += f"```{result['extension'][1:]}\n{match['context']}\n```\n\n"
    
    return output

if __name__ == "__main__":
    mcp.run(transport="stdio")
4

MCPサーバーの登録

JSON - Claude Desktop設定
{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "/path/to/accessible/folder"
      ]
    },
    "code-search": {
      "command": "/path/to/python",
      "args": [
        "/path/to/code_search_mcp.py"
      ],
      "env": {
        "PYTHONPATH": "/path/to/your/project"
      }
    }
  }
}

オススメMCPサーバー

Devinとの連携におすすめのMCPサーバー:

  • AWS Documentation MCP Server:AWS公式ドキュメントの検索と閲覧
  • RAG Web Browser Actor:Web検索とコンテンツスクレイピング
  • Obsidian MCP:Obsidianノートとの連携
  • Claude Crew:Claude Desktopのコーディングエージェントとしての機能拡張
1

AWS Documentation MCP Server

コマンドライン
# uvをインストール
curl -LsSf https://astral.sh/uv/install.sh | sh

# AWS Documentation MCP Serverをインストール
uvx awslabs.aws-documentation-mcp-server
JSON - Claude Desktop設定
{
  "mcpServers": {
    "awslabs.aws-documentation-mcp-server": {
      "command": "/path/to/uv/bin/uvx",
      "args": [
        "awslabs.aws-documentation-mcp-server@latest"
      ],
      "env": {
        "FASTMCP_LOG_LEVEL": "ERROR"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}
2

RAG Web Browser Actor

コマンドライン
npm install @apify/mcp-server-rag-web-browser
JSON - Claude Desktop設定
{
  "mcpServers": {
    "rag-web-browser": {
      "command": "npx",
      "args": [
        "@apify/mcp-server-rag-web-browser"
      ],
      "env": {
        "APIFY_TOKEN": "your-apify-api-token"
      }
    }
  }
}

MCPを介したDevinプロンプト

MCPを活用したDevinプロンプトの例を紹介します。

AWS関連タスク例 @Devin 【タスク】AWS DynamoDBを使ったバックエンドAPIの実装 【要件】 AWS DynamoDBを使用して、ユーザー情報を保存・取得・更新・削除するRESTful APIを実装してください。 【技術スタック】 - バックエンド: Node.js + Express - データベース: AWS DynamoDB - デプロイ: AWS Lambda + API Gateway 【必要なエンドポイント】 - ユーザー作成 (POST /users) - ユーザー取得 (GET /users/:id) - ユーザー一覧取得 (GET /users) - ユーザー更新 (PUT /users/:id) - ユーザー削除 (DELETE /users/:id) 【ユーザーデータ構造】 - id: ユニークID (文字列) - name: 名前 (文字列) - email: メールアドレス (文字列) - createdAt: 作成日時 (タイムスタンプ) - updatedAt: 更新日時 (タイムスタンプ) 【セキュリティ要件】 - 入力値のバリデーション - エラーハンドリング AWS DynamoDBに関する最新のベストプラクティスを確認して実装してください。

このプロンプトを使用すると、ClaudeはAWS Documentation MCP Serverを使用して最新のDynamoDB情報を検索し、それに基づいたコードを生成してくれます。

Web検索+コード実装例 @Devin 【タスク】React + Next.jsでのAI画像生成アプリの実装 【要件】 最新のReact・Next.js・OpenAIのAPIを使用して、テキストプロンプトから画像を生成するWebアプリケーションを実装してください。 【機能要件】 1. ユーザーがテキストプロンプトを入力 2. OpenAI APIを使用して画像を生成 3. 生成された画像を表示 4. 画像の保存機能 5. 過去の生成履歴の表示 【技術的要件】 - React 18以降 - Next.js 14以降 - OpenAI API(最新バージョン) - レスポンシブデザイン - エラーハンドリング OpenAI APIの最新の実装方法や制限事項、およびNext.jsでのAPI連携のベストプラクティスを調査した上で実装を進めてください。

Devin × RAG × MCP 連携ガイド

3つの技術を組み合わせた最強の開発環境構築

2025年5月9日
統合アーキテクチャガイド

統合アーキテクチャ

Devin × RAG × MCP の統合により実現できること:

  • 社内コードベースに最適化:固有の実装パターンや命名規則を学習
  • リアルタイムな外部情報取得:最新のAPI仕様や技術情報を参照
  • ローカル開発環境との連携:実際のファイル操作やコード実行
  • 他のツールとの統合:CI/CD、テスト、デプロイとの連携
Devin × RAG × MCP 統合アーキテクチャ

このアーキテクチャにより、Devinは通常の機能に加えて、PineconeのRAG機能とMCPのローカル機能を活用できるようになります。

統合環境セットアップ

1

RAG環境の準備

タブ2「RAG構築手順」に従って、Pineconeベースのコードベース検索システムを構築します。

2

MCP環境の準備

タブ3「MCPローカル構築」に従って、Claude DesktopとMCPサーバーを設定します。

3

RAG × MCP橋渡しサーバーの作成

Python - RAG-MCPブリッジ
# rag_mcp_bridge.py
import mcp
from openai import OpenAI
import pinecone
import os

# 初期化
client = OpenAI(api_key=os.environ.get("OPENAI_API_KEY"))
pinecone.init(
    api_key=os.environ.get("PINECONE_API_KEY"),
    environment=os.environ.get("PINECONE_ENVIRONMENT")
)
index = pinecone.Index("devin-code-index")

@mcp.tool()
def search_codebase(query: str, top_k: int = 5) -> str:
    """
    コードベースからクエリに関連するコードを検索します。
    
    Args:
        query: 検索クエリ文字列
        top_k: 返す結果の数
        
    Returns:
        関連コードの説明とコード片
    """
    # クエリをエンベディングに変換
    response = client.embeddings.create(
        input=query,
        model="text-embedding-3-small"
    )
    query_embedding = response.data[0].embedding
    
    # Pineconeで類似検索を実行
    results = index.query(
        vector=query_embedding,
        top_k=top_k,
        include_metadata=True
    )
    
    # 結果を整形
    output = f"## 「{query}」に関連するコード\n\n"
    
    for i, match in enumerate(results['matches'], 1):
        metadata = match['metadata']
        file_path = metadata['file_path']
        
        try:
            with open(file_path, 'r', encoding='utf-8') as f:
                content = f.read()
                
            # 大きなファイルの場合は、該当チャンク部分だけを抽出
            if metadata.get('total_chunks', 1) > 1:
                chunk_idx = metadata.get('chunk_idx', 0)
                total_chunks = metadata.get('total_chunks', 1)
                chunk_size = len(content) // total_chunks
                start_pos = chunk_idx * chunk_size
                end_pos = start_pos + chunk_size
                content = content[start_pos:end_pos]
            
            output += f"### {i}. {os.path.basename(file_path)} (類似度: {match['score']:.2f})\n"
            output += f"パス: {file_path}\n"
            output += f"言語: {metadata.get('language', '不明')}\n"
            output += f"```{metadata.get('language', '')}\n{content[:1500]}... (省略)\n```\n\n"
        
        except Exception as e:
            output += f"### {i}. {os.path.basename(file_path)} (エラー)\n"
            output += f"ファイルの読み込み中にエラーが発生しました: {e}\n\n"
    
    return output

@mcp.tool()
def generate_devin_prompt(query: str, task_type: str = "implementation") -> str:
    """
    クエリに基づいて、RAGを活用したDevin用のプロンプトを生成します。
    
    Args:
        query: 検索クエリとタスクの説明
        task_type: タスクの種類 (implementation, bug_fix, refactoring, test)
        
    Returns:
        Devin用のプロンプト
    """
    # コードベース検索
    code_context = search_codebase(query)
    
    # タスクタイプに基づいたテンプレートの選択
    templates = {
        "implementation": """
@Devin 

【タスク】新機能の実装

【機能概要】
{query}

【参考コード】
{code_context}

上記のコードを参考にして、同じスタイルと設計パターンに沿った実装をお願いします。
        """,
        
        "bug_fix": """
@Devin 

【タスク】バグ修正

【バグの概要】
{query}

【関連コード】
{code_context}

上記のコードを参考に、バグの原因を特定して修正してください。
        """,
        
        "refactoring": """
@Devin 

【タスク】コードリファクタリング

【リファクタリングの目的】
{query}

【対象コード】
{code_context}

上記のコードをリファクタリングして、保守性と可読性を向上させてください。
        """,
        
        "test": """
@Devin 

【タスク】テストコードの作成

【テスト対象】
{query}

【関連コード】
{code_context}

上記のコードを参考に、適切なテストコードを作成してください。
        """
    }
    
    # 指定されたタスクタイプのテンプレートを使用
    if task_type in templates:
        prompt_template = templates[task_type]
    else:
        prompt_template = templates["implementation"]  # デフォルト
    
    # テンプレートにクエリとコードコンテキストを挿入
    prompt = prompt_template.format(query=query, code_context=code_context)
    
    return prompt

if __name__ == "__main__":
    mcp.run(transport="stdio")
4

MCPサーバー登録

JSON - Claude Desktop設定
{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "/path/to/accessible/folder"
      ]
    },
    "code-search-rag": {
      "command": "/path/to/python",
      "args": [
        "/path/to/rag_mcp_bridge.py"
      ],
      "env": {
        "OPENAI_API_KEY": "your-openai-api-key",
        "PINECONE_API_KEY": "your-pinecone-api-key",
        "PINECONE_ENVIRONMENT": "your-pinecone-environment"
      }
    }
  }
}

統合環境向けプロンプトテンプレート

RAGとMCPを組み合わせた統合環境向けのDevinプロンプトテンプレートを紹介します。

社内コードに基づく実装テンプレート @Devin 【タスク】社内コードベースに準拠した新機能実装 【機能要件】 [実装したい機能の詳細] 【実装ポイント】 1. 社内のコーディング規約に準拠すること 2. 既存の設計パターンを踏襲すること 3. テストコードも同時に作成すること まず、社内のコードベースを検索して参考にしたいコードパターンを見つけてください。 その後、それらを参考にして新機能を実装してください。 【参考キーワード】 [検索に使用するキーワード] 【技術スタック】 [使用する技術やフレームワーク] 【出力】 - 実装コード - テストコード - 実装の説明とコードの解説

このプロンプトを使用する際、ClaudeはMCPを通じてRAGサーバーにアクセスし、社内コードベースから関連コードを検索して参考にします。

コードとドキュメント生成テンプレート @Devin 【タスク】機能実装とドキュメント作成 【機能概要】 [実装する機能の詳細] 【要件】 - [具体的な要件1] - [具体的な要件2] - [具体的な要件3] 【手順】 1. まず、社内コードベースから類似機能の実装パターンを検索してください 2. 検索結果を参考に、要件に沿った実装を行ってください 3. 実装したコードの技術的な説明ドキュメントをMarkdown形式で作成してください 4. 必要に応じてテストコードも作成してください 【出力形式】 - 実装コード - テストコード - 技術ドキュメント(Markdown)

実践的ユースケース

統合環境の実践的な活用パターン:

  • コードベース探索と理解:大規模プロジェクトの構造と実装パターンの把握
  • コンテキスト保持開発:社内規約に沿った一貫性のある実装の維持
  • テスト自動生成:既存のテストパターンを学習した最適なテスト作成
  • ドキュメンテーション:コードベースに基づいた正確な技術ドキュメント生成
  • 社内知識ベース活用:プライベートな技術情報の参照と適用

大企業での開発チームインテグレーション:

  • 新メンバーのオンボーディング支援
  • 複数チーム間の知識共有と一貫性維持
  • レガシーコードの理解と現代化支援
  • 社内のベストプラクティス普及

実装例:CI/CD連携

Devin、RAG、MCPを組み合わせてCI/CDパイプラインと連携する例を紹介します。

GitHub Actions Workflow
name: Devin CI/CD Helper

on:
  pull_request:
    types: [opened, synchronize]
  workflow_dispatch:

jobs:
  devin-review:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v3
        with:
          fetch-depth: 0
          
      - name: Set up Python
        uses: actions/setup-python@v4
        with:
          python-version: '3.10'
          
      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          pip install openai pinecone-client

      - name: Get changed files
        id: changed-files
        run: |
          CHANGED_FILES=$(git diff --name-only ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }} | grep -E '\.(py|js|ts|jsx|tsx|java|go) | tr '\n' ' ')
          echo "CHANGED_FILES=$CHANGED_FILES" >> $GITHUB_ENV
          
      - name: Generate code review
        run: |
          python -c "
          import os
          import openai
          import pinecone
          
          # 初期化
          client = openai.OpenAI(api_key='${{ secrets.OPENAI_API_KEY }}')
          pinecone.init(
              api_key='${{ secrets.PINECONE_API_KEY }}',
              environment='${{ secrets.PINECONE_ENVIRONMENT }}'
          )
          index = pinecone.Index('devin-code-index')
          
          def search_similar_code(file_content, top_k=3):
              # ファイル内容をエンベディングに変換
              response = client.embeddings.create(
                  input=file_content,
                  model='text-embedding-3-small'
              )
              embedding = response.data[0].embedding
              
              # Pineconeで類似検索
              results = index.query(
                  vector=embedding,
                  top_k=top_k,
                  include_metadata=True
              )
              
              return results
          
          # 変更されたファイルを処理
          changed_files = os.environ.get('CHANGED_FILES', '').split()
          
          review_comments = []
          
          for file_path in changed_files:
              try:
                  with open(file_path, 'r', encoding='utf-8') as f:
                      file_content = f.read()
                      
                  # 似たようなコードを検索
                  similar_results = search_similar_code(file_content)
                  
                  # レビューコメントを生成
                  similar_code_context = []
                  for match in similar_results['matches']:
                      metadata = match['metadata']
                      similar_file = metadata.get('file_path', 'Unknown file')
                      similar_code_context.append(f'- {similar_file} (similarity: {match[\"score\"]:.2f})')
                  
                  if similar_code_context:
                      comment = f'## Devin AI Code Review: {file_path}\\n\\n'
                      comment += '### Similar files in codebase:\\n'
                      comment += '\\n'.join(similar_code_context) + '\\n\\n'
                      comment += 'Please review if this implementation follows our coding standards and patterns.\\n'
                      
                      review_comments.append(comment)
                      
              except Exception as e:
                  print(f'Error processing {file_path}: {e}')
          
          # PR全体のレビューコメントを作成
          if review_comments:
              full_comment = '# Devin AI Code Review\\n\\n'
              full_comment += 'Based on similar code in our codebase, here are some files to compare your changes with:\\n\\n'
              full_comment += '\\n\\n'.join(review_comments)
              
              with open('pr_comment.md', 'w') as f:
                  f.write(full_comment)
          "
          
      - name: Comment on PR
        if: github.event_name == 'pull_request'
        uses: actions/github-script@v6
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}
          script: |
            const fs = require('fs');
            try {
              const comment = fs.readFileSync('pr_comment.md', 'utf8');
              if (comment) {
                github.rest.issues.createComment({
                  issue_number: context.issue.number,
                  owner: context.repo.owner,
                  repo: context.repo.repo,
                  body: comment
                });
              }
            } catch (error) {
              console.log('No review comment file found');
            }

この例では、PRが作成されたときに、変更されたファイルと類似するコードベース内のコードを検索し、レビューコメントを自動生成します。

統合環境のベストプラクティス

最大の効果を引き出すためのポイント:

  • コードベースの定期的な更新:新しいコードをRAGシステムに反映させる
  • タスク細分化の徹底:Devinは小さなタスクほど精度が高い
  • フィードバックループの構築:自動テストと人間レビューの併用
  • セキュリティ考慮:機密情報にアクセスできる範囲の適切な制限
  • 段階的導入:小規模プロジェクトから始めて徐々に拡大

注意点:

  • Devinの判断を盲信せず、常に人間によるレビューを行う
  • MCPサーバーのセキュリティ設定を適切に行い、アクセス範囲を制限する
  • RAGシステムの結果品質を定期的にチェックし、改善する
  • 新しいプロジェクトパターンが導入されたら、テンプレートを更新する