Model Context Protocol(MCP)超入門!AIエージェントに自作ツールと社内DBを安全接続する開発実践

2026年10月16日金曜日

t f B! P L

📖 推定読了時間:約6分

大規模言語モデル(LLM)の推論能力が劇的に向上する中、現代のAI活用における最大の関心事は「いかに外部データや業務ツールと安全かつ柔軟に連携させるか」という点へとシフトしています。しかし、これまでのツール連携は、OpenAI Function CallingやLangChain、個別SDKなど、プラットフォームごとに異なる仕様でコードを書く必要があり、ツールの再利用性やセキュリティ管理が大きな課題となっていました。

こうした状況を打破する待望の業界オープン標準として登場したのが、Anthropic社が提唱した「Model Context Protocol(MCP)」です。MCPは、AIモデルと外部システム(データベース、ファイルシステム、社内APIなど)を接続するための「USB規格」のような役割を果たします。本記事では、MCPがなぜAIエージェント開発のデファクトスタンダードになりつつあるのか、その仕組みと自作サーバーの実装方法をわかりやすく解説します。

AIと外部データをつなぐ「万能USB規格」としてのMCP

PCの世界では、マウス、キーボード、外付けSSDなど、あらゆる周辺機器がUSBという統一規格のおかげで、ドライバの独自開発に悩まされることなく即座に接続できます。MCPはまさに、このUSBの仕組みをAIエコシステムに持ち込んだものです。

従来のやり方では、新しいデータベースやツールをAIに接続しようとするたびに、モデル側のプロンプト設計や独自ラッパー関数を開発する必要がありました。しかし、データソース側が一度「MCPサーバー」としてプロトコルを実装しておけば、Claude Desktop、自作の自律エージェント、VS Code拡張機能など、あらゆる「MCPクライアント」から同一のインターフェースで即座に呼び出し可能になります。

比較項目 従来のアドホックなFunction Calling Model Context Protocol(MCP)
接続の標準化 ベンダー各社(OpenAI/Google等)の個別仕様 オープン標準プロトコル(JSON-RPC 2.0準拠)
ツールの再利用性 モデルやフレームワークが変わると再実装が必要 作成したMCPサーバーはあらゆるクライアントで共有可能
セキュリティ境界 APIキーやアクセス権限の管理が散乱しやすい ローカル実行・アクセス範囲の厳格な分離が可能
通信トランスポート 主に直接のREST APIコール stdio(標準入出力)またはSSE(サーバー送信イベント)

自律型AIエージェントの設計思想やマルチエージェント協調の基盤をより深く掘り下げたい場合は、AIエージェント開発・Agentic Workflow実践ガイド本などを通じて、ツール呼び出しと推論ループの全体像を俯瞰しておくのがおすすめです。

MCPを構成する3つの主要プリミティブ

MCPは極めてシンプルかつ直感的な3つの要素で構成されています。この3つの役割を理解することが、MCP活用の近道です。

  1. Resources(リソース):AIに「読ませる」ための受動的データ(ファイル内容、ログデータ、DBスキーマなど)。GETリクエストのように動作し、副作用を持ちません。
  2. Prompts(プロンプト):特定のタスクを実行するために事前にテンプレート化されたプロンプトやワークフロー指示。ユーザーが選択して呼び出します。
  3. Tools(ツール):AIが「実行する」ための能動的アクション(DBへのデータ挿入、メール送信、外部API実行など)。実行前にユーザーの承認を挟む安全設計が標準化されています。

TypeScriptでわずか数十行!自作MCPサーバーの実装例

MCPサーバーの開発は驚くほど簡単です。公式のSDK(TypeScript / Python)を利用することで、最小限の記述で独自のツールを公開できます。

import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { CallToolRequestSchema, ListToolsRequestSchema } from "@modelcontextprotocol/sdk/types.js";

const server = new Server({
  name: "my-custom-tool",
  version: "1.0.0",
}, {
  capabilities: { tools: {} },
});

// ツール一覧の公開
server.setRequestHandler(ListToolsRequestSchema, async () => ({
  tools: [{
    name: "calculate_tax",
    description: "商品の税込み価格を計算する",
    inputSchema: {
      type: "object",
      properties: { price: { type: "number" } },
      required: ["price"],
    },
  }],
}));

// ツール実行ロジック
server.setRequestHandler(CallToolRequestSchema, async (request) => {
  if (request.params.name === "calculate_tax") {
    const price = Number(request.params.arguments?.price);
    return { content: [{ type: "text", text: `税込価格: ${Math.floor(price * 1.1)}円` }] };
  }
  throw new Error("Tool not found");
});

const transport = new StdioServerTransport();
await server.connect(transport);

このように、標準入出力(stdio)を介してプロセス間通信を行うため、ローカルマシンの認証情報や環境変数が外部ネットワークに漏洩する心配がありません。セキュアな開発環境で本格的な連携を深めるためには、Model Context Protocol (MCP) 実践開発ガイドを参考に、実務における権限設計やエラーハンドリングのベストプラクティスを導入すると安心です。

🔐 MCPサーバー運用の3大セキュリティ原則

  • 人間による承認(Human-in-the-loop):破壊的な操作(ファイル削除や決済など)を伴うツールは、実行前にクライアント側で必ず確認ダイアログを表示する。
  • 最小権限の原則:データベース連携ツールでは、原則としてSELECT権限のみの専用ユーザーを発行して割り当てる。
  • サンドボックス環境での検証:ローカル環境で自作MCPサーバーをテストする際は、不要な親ディレクトリへの読み取り権限を与えない。

まとめ:分断されたツールをつなぎ、AIが真の実務パートナーへ

Model Context Protocol(MCP)は、これまでバラバラだったAIモデルと業務システムの境界を取り払い、真に自律的で信頼できるAIアシスタントを構築するための決定打となる技術です。

オープンな仕様であるため、特定の巨大テック企業に囲い込まれることなく、自社の重要な資産である社内DBや独自アルゴリズムを安全にAIへ接続できます。この次世代のオープンスタンダードをいち早く取り入れ、あなたの業務環境に最強のAIエージェントを迎え入れてみませんか?

このブログを検索

このサイトはアフィリエイト広告(Amazonアソシエイト含む)を掲載しています。
Amazonのアソシエイトとして、「色即是空」な「空即是色」blogは適格販売により収入を得ています。