Model Context Protocol(MCP)でAIエージェントを拡張する実践ガイド:Claude・ChatGPT対応

当ページのリンクには広告が含まれています。

お疲れ様です!IT業界で働くアライグマです!

先日、ある開発チームでClaude Desktopを使ったコードレビュー支援ツールを作ろうとした際、「GitHubのPR情報を直接読み込めたら便利なのに」という話になりました。以前は、PRの内容をコピー&ペーストでClaude Desktopに貼り付けていたため、複数のPRをレビューする際に非常に手間がかかっていました。調べてみると、Model Context Protocol(MCP)を使えば、AIエージェントに独自の機能を追加できることが分かりました。

「AIエージェントにカスタム機能を追加したいが、どこから手をつければいいか分からない」「Claude DesktopやChatGPTで自社のデータベースやAPIを使いたい」「MCPの仕様は理解したが、実装例が少なくて困っている」——こうした悩みを抱えている開発者は多いのではないでしょうか。

実際のプロダクト開発現場でも、MCPの登場によってAIエージェントの拡張性が飛躍的に向上したことを実感しています。本記事では、MCPを使ってAIエージェントにカスタム機能を追加する実践的な手順を、サーバー構築から実用例まで解説します。

目次

Model Context Protocol(MCP)とは何か

💡 AIプログラミングを学んで市場価値アップ
PythonとAI技術を習得して、キャリアを次のステージへ

Model Context Protocol(MCP)は、AIエージェントと外部システムを接続するための標準プロトコルです。Anthropicが2024年11月に発表し、Claude Desktop、ChatGPT Desktop、Cursor、VS Codeなど、主要なAIツールが対応を進めています。

MCPの最大の特徴は、「サーバー」という概念でAIエージェントの機能を拡張できる点です。例えば、GitHubサーバーを作れば、AIがPR情報を読み込んでコードレビューを支援できます。データベースサーバーを作れば、AIが自然言語でSQLクエリを生成してデータを取得できます。

従来、AIエージェントに独自機能を追加するには、各ツールごとに異なるプラグイン形式を学ぶ必要がありました。MCPはこれを標準化し、一度作ったサーバーを複数のAIツールで使い回せるようにしました。Anthropic Skillsで始めるAIエージェント開発:Tool Useとの違いと実装パターンでも触れていますが、AIエージェントの拡張性は今後のプロダクト開発において重要な要素になります。

MCPサーバーの3つの機能

MCPサーバーは、主に以下の3つの機能を提供します。

Resources(リソース)はファイルやデータベースレコードなど、AIが読み込めるデータを提供します。Tools(ツール)はAIが実行できる関数を提供し、例えばGitHubにIssueを作成したり、Slackにメッセージを送信したりできます。Prompts(プロンプト)は定型的なプロンプトテンプレートを提供します。

LLMアプリケーション開発において、外部システム連携は非常に重要です。MCPはこの連携を標準化し、開発者の負担を大幅に軽減します。

IT女子 アラ美
規格が統一されるのはありがたいですね。

ITアライグマ
ツールごとに作り直す手間が省けるのが最大のメリットです。

MCPサーバーの基本構造と実装パターン

標準入出力を使った通信の仕組み

MCPサーバーを実装する前に、基本構造を理解しておくことが重要です。MCPサーバーは、標準入出力(stdio)を使ってAIクライアントと通信する仕組みになっています。これにより、Pythonで書いたサーバーをClaude DesktopやCursorから呼び出せます。

公式のPython SDKであるmcpパッケージを使うと、サーバー実装が大幅に簡略化されます。以下は、最小限のMCPサーバーの構造です。

from mcp.server import Server
from mcp.server.stdio import stdio_server

app = Server("my-server")

@app.list_resources()
async def list_resources():
    return [Resource(uri="file://data.json", name="Data")]

@app.list_tools()
async def list_tools():
    return [Tool(name="search", description="Search data")]

if __name__ == "__main__":
    stdio_server(app)

この構造を理解すれば、Resources、Tools、Promptsの3つの機能を自由に組み合わせて、AIエージェントに必要な機能を追加できます。CursorとOllamaで構築するローカルRAG環境:プライベートドキュメントを活用したAIコーディング支援でも触れていますが、AIツールへのカスタムデータ連携は開発効率を大きく向上させます。

実装パターンとしては、単一機能型(1つのAPIやデータソースに特化)と統合型(複数のデータソースを統合)の2つがあります。初めて実装する場合は、単一機能型から始めることをおすすめします。通常のアーキテクチャ設計と同様、小さく始めて段階的に拡張することが重要です。

IT女子 アラ美
標準入出力を使うなら、言語はPython以外でもいいんですか?

ITアライグマ
はい、標準入出力が扱えればどの言語でもOKですが、現状はPythonかTypeScriptのSDKが充実しています。

実装例:GitHub PR情報を取得するMCPサーバー

環境構築とパッケージインストール

ここでは、実際にGitHub PR情報を取得するMCPサーバーを実装します。このサーバーを使えば、AIがPRのタイトル、説明、変更ファイル一覧などを読み込んで、コードレビューのサポートができます。

まず、必要なパッケージをインストールします。

pip install mcp PyGithub

サーバー実装とResource定義

次に、MCPサーバーを実装します。以下のコードは、GitHub APIを使ってPR情報を取得し、Resourceとして提供する例です。

from mcp.server import Server
from mcp.server.stdio import stdio_server
from mcp.types import Resource, TextContent
from github import Github
import os

app = Server("github-pr-server")
gh = Github(os.getenv("GITHUB_TOKEN"))

@app.list_resources()
async def list_resources():
    repo = gh.get_repo("owner/repo")
    prs = repo.get_pulls(state="open")
    return [
        Resource(
            uri=f"github://pr/{pr.number}",
            name=f"PR #{pr.number}: {pr.title}",
            mimeType="text/plain"
        )
        for pr in prs[:10]
    ]

@app.read_resource()
async def read_resource(uri: str):
    pr_number = int(uri.split("/")[-1])
    repo = gh.get_repo("owner/repo")
    pr = repo.get_pull(pr_number)

    content = f"""Title: {pr.title}
Description: {pr.body}
Files changed: {pr.changed_files}
Commits: {pr.commits}
"""
    return TextContent(text=content)

if __name__ == "__main__":
    stdio_server(app)

このサーバーをClaude Desktopから使うには、設定ファイル(macOSの場合は~/Library/Application Support/Claude/claude_desktop_config.json)に以下を追加します。

{
  "mcpServers": {
    "github-pr": {
      "command": "python",
      "args": ["/path/to/github_pr_server.py"],
      "env": {
        "GITHUB_TOKEN": "your_token_here"
      }
    }
  }
}

Claude Desktopを再起動すると、AIがGitHub PR情報を読み込めるようになります。GitHub Copilot Custom Agentsで.mdファイルから独自エージェントを作る実践ガイドでも触れていますが、AIツールのカスタマイズは開発ワークフローの効率化に直結します。

実装時のポイントは、エラーハンドリングとレート制限への対応です。GitHub APIにはレート制限があるため、キャッシュを活用するか、リクエスト頻度を制御する必要があります。適切なエラーハンドリングを行うことで、信頼性の高いエージェントを構築できます。

ITアライグマ
APIのレート制限は意外とすぐに引っかかるので注意が必要です。

IT女子 アラ美
キャッシュの処理も合わせて実装しておきます!

主要AIツールでのMCP対応状況と設定方法

各AIツールの設定ファイル

MCPサーバーを実装したら、実際にAIツールから使えるように設定します。ここでは、主要なAIツールでのMCP対応状況と設定方法を解説します。

Claude Desktopは、MCPの発表元であるAnthropicが提供するツールで、最も充実したMCP対応を提供しています。設定ファイルは~/Library/Application Support/Claude/claude_desktop_config.json(macOS)または%APPDATA%\Claude\claude_desktop_config.json(Windows)に配置します。

Cursorは、.cursor/mcp.jsonに設定を記述します。Claude Desktopと同じJSON形式で、複数のMCPサーバーを登録できます。CursorでローカルLLMを使う完全ガイド:Ollama連携からカスタムモデル設定まででも触れていますが、Cursorのカスタマイズ性は非常に高く、開発ワークフローに合わせた柔軟な設定が可能です。

ChatGPT Desktopも、最近MCPサポートを追加しました。設定方法はClaude Desktopと類似していますが、一部の機能に制限があります。

以下のグラフは、主要AIツールのMCP対応状況を示したものです。Claude Desktopが最も充実していますが、他のツールも急速に対応を進めています。

セキュリティとアクセス制御

実運用では、セキュリティとアクセス制御に注意が必要です。MCPサーバーは標準入出力を通じてAIツールと通信するため、機密情報を扱う場合は環境変数での認証情報管理や、アクセス権限の適切な設定が重要です。外部システム連携時の認証・認可は慎重に設計しましょう。

MCP対応状況

IT女子 アラ美
設定ファイルへのトークン直書きは絶対NGですね。

ITアライグマ
環境変数を使い、安全に管理しましょう。

トラブルシューティングとベストプラクティス

よくあるトラブルと解決方法

MCP実装でよく遭遇するトラブルと解決方法を紹介します。

サーバーが認識されない場合、まず設定ファイルのJSON形式が正しいか確認します。カンマの位置やクォートの種類(ダブルクォート必須)を確認し、JSONバリデーターでチェックすると良いでしょう。また、Pythonスクリプトのパスが絶対パスになっているか、実行権限があるかも確認します。

レスポンスが遅い場合、APIリクエストのキャッシュを実装することで改善できます。例えば、GitHub PR情報は頻繁に変わらないため、5分程度のキャッシュを設けることで、レスポンス速度が大幅に向上します。

エラーハンドリングとログ出力

エラーハンドリングは、MCPサーバーの安定性に直結します。外部APIの呼び出しが失敗した場合でも、AIツールにエラー情報を適切に返すことで、ユーザー体験が向上します。Pydantic v2のバリデーション設計:型安全なAPIとLLMアプリケーションの実装パターンでも触れていますが、型安全な実装はエラーの早期発見に繋がります。

ベストプラクティスとしては、ログ出力の充実が重要です。MCPサーバーは標準入出力を使うため、デバッグ情報はファイルに出力する必要があります。適切なログ出力は、問題解決の時間を大幅に短縮します。

本記事で解説したようなAI技術を、基礎から体系的に身につけたい方は、以下のスクールも検討してみてください。

比較項目 DMM 生成AI CAMP Aidemy Premium
目的・ゴール ビジネス活用・効率化非エンジニア向け エンジニア転身・E資格Python/AI開発
難易度 初心者◎プロンプト作成中心 中級者〜コード記述あり
補助金・給付金 最大70%還元リスキリング補助金対象 最大70%還元教育訓練給付金対象
おすすめ度 S今の仕事に活かすなら AAIエンジニアになるなら
公式サイト 詳細を見る
IT女子 アラ美
AIスキルを身につけたいけど、どのスクールを選べばいいかわからないです…
ITアライグマ
現場で即・AIを活用したいならDMM 生成AI CAMPがおすすめです!プロンプト中心で初心者でも取り組みやすいですよ。

まとめ

Model Context Protocol(MCP)を使えば、AIエージェントに独自の機能を追加し、自社のデータベースやAPIと連携させることができます。本記事では、MCPの基本概念から、実際のGitHub PR情報取得サーバーの実装、主要AIツールでの設定方法、トラブルシューティングまでを解説しました。

短期的には、まず公式のPython SDKを使って簡単なResourceサーバーを実装し、Claude DesktopやCursorから動作確認することをおすすめします。1つのデータソースに特化した単一機能型サーバーから始めることで、MCPの仕組みを理解できます。

中長期的には、複数のデータソースを統合した統合型サーバーや、Toolsを活用した双方向連携(AIからSlackにメッセージを送信するなど)を実装することで、AIエージェントの活用範囲が大きく広がります。

MCPは、AIエージェントの拡張性を標準化する重要なプロトコルです。一度作ったサーバーを複数のAIツールで使い回せるため、開発コストを抑えながら、チーム全体の開発効率を向上させることができます。

まずは、自分のプロジェクトで最も頻繁にアクセスするデータソース(GitHub、Notion、社内データベースなど)を1つ選び、MCPサーバーを実装してみましょう。

IT女子 アラ美
まずは使い慣れたGitHubの連携からやってみます!

ITアライグマ
小さな成功体験を積み重ねていきましょう。

厳しめIT女子 アラ美による解説ショート動画はこちら

この記事をシェアする
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

ITアライグマのアバター ITアライグマ ITエンジニア / PM

都内で働くPM兼Webエンジニア(既婚・子持ち)です。
AIで作業時間を削って実務をラクにしつつ、市場価値を高めて「高年収・自由な働き方」を手に入れるキャリア戦略を発信しています。

目次