モデルコンテキストプロトコル(MCP)は、Anthropicのようなモデルを クロード 開発者ツールなど クロード・コード 安全で標準的な方法で外部ツール、データ ソース、プロンプトを呼び出します。
このガイドでは、独自の MCP サーバーをゼロから構築する方法について説明します。これにより、Claude Code はカスタム機能にアクセスでき、組み込み機能を超えて機能を大幅に拡張できるようになります。
モデルコンテキストプロトコル (MCP) とは何ですか?
MCP(モデルコンテキストプロトコル)は オープン仕様 言語モデルクライアント(Claude、Claude Code、その他のLLMフロントエンドなど)がツールサーバーやデータソースに接続する方法を標準化するように設計されています。MCPは「LLM用のUSB-Cポート」と考えてください。トランスポート/JSON-RPCスキーマと、サーバーが3種類の機能を公開するための共通の方法を定義します。
- その他情報 — クライアントが読み取ることができるファイルのようなデータまたはドキュメント データ (例: データベースの行、テキスト ファイル、JSON ペイロード)。
- ツール — モデルがホストに実行を要求できる呼び出し可能な関数 (ユーザーの承認が必要)。
- プロンプト — モデル/クライアントが呼び出すことができる再利用可能なプロンプト テンプレートまたはワークフロー。
MCPは複数のトランスポート(stdio、HTTP、SSE)をサポートし、スキーマ、SDK、サンプルサーバーを提供しているため、独自にワイヤフォーマットを作成する必要はありません。プロトコルは公開メンテナンスされており(仕様とSDK)、導入を促進するためのチュートリアルとサンプルサーバーギャラリーも用意されています。
MCP はどのように設計されていますか?
MCPのアーキテクチャは意図的にシンプルかつモジュール化されており、コアとなる部分はMCPである。 サーバ、MCP クライアント, トランスポート JSON-RPCフレームメッセージを相互にやり取りするコンポーネントです。以下は、Claude Code(またはその他のMCPクライアント)用のサーバーを構築する際に使用する主要コンポーネントです。
サーバー、クライアント、プロトコル
- MCPサーバー — サービス 公開する ツール、リソース、プロンプト。ツールは副作用を実行したりデータを取得したりできます。リソースは読み取り専用コンテンツを表示します。プロンプトは、クライアントがモデルにサンプルを渡すために使用できる再利用可能なプロンプトテンプレートです。
- MCPクライアント(ホスト) — 通常はLLMホスト(例:Claude Code、VS Codeプラグイン、ブラウザクライアント)の一部です。利用可能なサーバーを検出し、ツールの説明をモデルに提示し、モデルから開始された呼び出しをサーバーにルーティングします。
- プロトコル — メッセージは JSON-RPC としてエンコードされます。仕様では、ライフサイクル イベント、ツールの検出、呼び出し、完了/サンプリング、および構造化された結果がクライアントとモデルに返される方法が定義されています。
コミュニケーションパターン(ツールを使用すると何が起こるか)
- クライアントはモデルにユーザー メッセージを送信します。
- モデルはコンテキストを分析し、MCP によって公開されるツール (または複数のツール) を呼び出すことを決定します。
- クライアントは、選択したトランスポートを介してツール呼び出しを MCP サーバーに転送します。
- サーバーはツールを実行し、結果を返します。
- モデルはツールの出力を受け取り、ユーザーへの最終的な回答を作成します。
実装プリミティブ
- JSON-RPC メッセージは MCP スキーマに従います。
- ツールの定義 サーバーの検出応答で公開されるため、クライアントは UI でそれらを表示できます。
- その他情報 参照されている
@source:pathクライアントによる構文(例:@postgres:...) により、モデルはプロンプトに膨大なデータをインライン化することなく外部コンテンツを参照できるようになります。
Claude Code を MCP サーバーと統合する理由は何ですか?
Claude Codeは、コードと開発者中心のワークフロー(エディタ/IDE統合、コード理解など)に特化したAnthropicのサービスです。社内ツール(ソース検索、CIランナー、チケットシステム、プライベートレジストリ)をMCPサーバー経由で公開することで、Claude Codeはそれらを次のように呼び出すことができます。 一流のツール コーディング会話とエージェントフローの内部。
Claude Code を MCP サーバーと統合すると、コーディング エージェントにとって実用的かつ本番環境に関連する機能が利用できるようになります。
1. モデルに 行動する 実際のシステムでは
Claude Codeは、MCPサーバーに課題追跡システムへのクエリ、データベースクエリの実行、大規模なドキュメントの読み込み、GitHub PRの作成を依頼できます。これにより、コーディングセッション内でエンドツーエンドの自動化が可能になります。これはClaude Codeのドキュメントで明示的にサポートされています(例:Postgres、Sentryへのクエリ、PRの作成)。
2. 大容量データと特殊なロジックをオフロードする
すべてのデータソースをプロンプトに埋め込む(トークンを消費する)代わりに、MCP を通じてデータとツールを公開します。モデルはツールを呼び出し、構造化されたレスポンスを取得し、それに基づいて推論を行います。これによりトークンの使用量を削減し、サーバーが高負荷な処理(DB クエリ、長いファイルの読み取り、認証など)を処理できるようになります。
3. セキュリティとガバナンス
MCPはサーバー層でのアクセス制御と監査を一元化し、組織が承認済みサーバーをホワイトリストに登録し、利用可能なツールを制御し、出力を制限できるようにします。Claude Codeは、エンタープライズMCP構成とスコープごとの同意もサポートしています。
4. 再利用性とエコシステム
MCPサーバーはクライアントやチーム間で再利用できます。一度構築すれば、多くのClaude/LLMクライアントで同じサービスを使用できます(実装を入れ替えることもできます)。
始める前に何が必要ですか?
最小要件
- 開発マシンには Python 3.10以降 (例ではPythonを使用します)。また、MCP SDKではNode.jsやその他の言語もサポートされています。
uv(Astralのツール)またはMCP stdioサーバーを実行するための同等のランナー(MCPチュートリアルではuv)。インストール手順は以下のとおりです。- Claude Code がインストールされている、または Claude クライアント(デスクトップまたは CLI)にアクセスしてサーバーを登録およびテストします。MCP 対応クライアントも利用可能です。Claude Code は HTTP、SSE、およびローカル標準入出力サーバーをサポートしています。
- セキュリティに関する注意事項: チームまたはエンタープライズ設定で、信頼できる MCP サーバーのみを Claude Code に追加します。MCP によりサーバーが機密データにアクセスできるようになるため、サーバーが悪意のあるコンテンツを返した場合には、プロンプト インジェクションのリスクが発生します。
Claude Code CLIのインストールと検証方法
これは Claude Code のインストールと使用ガイド.
1) 簡単なまとめ - 推奨されるインストール方法
ネイティブインストーラー macOS/Linuxでは(推奨)またはHomebrewをご利用ください。Node.jsベースのインストールが必要な場合はNPMをご利用いただけます。WindowsではPowerShell / CMDインストーラーをご利用いただけます。出典:Claude Code公式ドキュメント & GitHub。
2) 前提条件
- macOS 10.15+、Ubuntu 20.04+/Debian 10+、または Windows 10+ (Windows では WSL を推奨)。
- Node.js 18以降 必要なだけ NPM インストール方法の場合。
3) インストールコマンド(いずれか1つを選択)
ネイティブ(推奨 - Node 依存なし)、macOS / Linux / WSL:
curl -fsSL https://claude.ai/install.sh | bash
# optional: install latest explicitly
curl -fsSL https://claude.ai/install.sh | bash -s latest
# or install a specific version
curl -fsSL https://claude.ai/install.sh | bash -s 1.0.58
Windows PowerShell:
irm https://claude.ai/install.ps1 | iex
# or for latest: & (::Create((irm https://claude.ai/install.ps1))) latest
(これらは公式のネイティブ インストーラー スクリプトです)。
NPM (Nodeベースのグローバルインストールを希望する場合):
# requires Node.js 18+
npm install -g @anthropic-ai/claude-code
しないでください つかいます sudo npm install -g — sudo によるグローバルインストール(権限/セキュリティの問題)を警告します。権限エラーが発生した場合は、 nvm または、sudo を使用するのではなく、npm グローバル プレフィックスを修正します。
4) バイナリがインストールされたことを確認する(基本チェック)
インストール後すぐにこれらをローカルで実行します。
# is the command on PATH?
which claude
# version (or -v)
claude --version
# or
claude -v
# help (sanity check)
claude --help
期待される: which パスを表示します(例: /usr/local/bin/claude or ~/.nvm/.../bin/claude)と claude --version semverのような文字列を出力します。ドキュメントとREADMEの両方に次のように記載されています。 claude 主要な CLI エントリポイントとして。
5) インストールの健全性と構成を確認する(推奨チェック)
a) claude doctor、走る:
claude doctor
この組み込み診断機能は、インストールの種類、よくある問題(npmの権限の問題など)、依存関係などをチェックします。 ripgrep、そして修正を提案します。ドキュメントでは明示的に実行を推奨しています。 claude doctor インストール後。
b) スモークテストを実行する(非対話型)
プロジェクトディレクトリから:
cd /path/to/your/project
claude -p "Explain this project in 3 sentences"
これは 印刷 モード(-p) は、単一のプロンプトを送信して終了します。CI または簡単な機能チェックに適しています。
c) 認証検証(CLIがAnthropicにアクセスできることを確認する)
Claude Codeは、複数の認証フロー(コンソールOAuth、APIキー、プロバイダー統合)をサポートしています。一般的なチェック:
- APIキー(CI / ヘッドレス / ローカル環境変数)を使用する場合:
export ANTHROPIC_API_KEY="sk-..."
# then
claude auth status
claude auth whoami # or `claude auth whoami` / `claude whoami` depending on version
あなたが使用することができます コメットAPIClaude Code を使用するには の API キーが必要です。CometAPI を通じて Claude の API を使用すると 20% の割引が受けられます。
- コンソール経由でOAuthを使用した場合 - 走る:
claude auth status
claude auth whoami
アカウント/プランの情報、または認証されたことの確認が表示されます。
ステップバイステップの環境準備
以下は、2 つの一般的な開発者スタック (TypeScript と Python) を準備するための具体的な手順と、すべてが機能することを確認するための簡単なチェックです。
H3 — A. TypeScript / Node のセットアップ(最速パス)
- プロジェクトを作成し、SDK をインストールします。
mkdir mcp-demo && cd mcp-demo
npm init -y
npm install @modelcontextprotocol/sdk express zod
npm install --save-dev typescript tsx @types/node @types/express
- 創造する
server.ts(「簡単に構築する方法」のセクションで完全な例を示します。) - 実行:
npx -y tsx server.ts
- ローカルでテストする MCP検査官 またはClaude Codeに追加:
npx @modelcontextprotocol/inspector
# or (for Claude Code)
claude mcp add --transport http my-server http://localhost:3000/mcp
(Inspector コマンドと Claude コマンドを使用すると、検出を検証し、ツールを呼び出すことができます。)
Claude Code 用の MCP サーバーをすばやく構築するにはどうすればよいですか?
クイックチェックリスト
-
サーバーを起動します (ストリーミング可能な HTTP を推奨)。
node server.tsoruvicorn server:app. -
開発マシンから、次のいずれかを実行します。
- MCP検査官 検証する(
npx @modelcontextprotocol/inspector)を確認してtools/listおよびresources/list、または - サーバーをClaude Codeに追加します。
claude mcp add --transport http <name> http://<host>:<port>/mcp(または、クライアントがリモート MCP をサポートしている場合は、Web UI フローに従います)。
リモート MCP (別個のクライアントなし) に Anthropic の Messages API コネクタを使用する予定の場合は、Claude のドキュメントをお読みください。ベータ ヘッダーが必要になる場合があります (正確なヘッダーと現在のサポート ステータスについてはドキュメントを確認してください)。
以下に、コピーして実行し、Claude Code(またはMCP Inspector)に接続できる、完全かつコンパクトなサーバーサンプルを2つ示します。TypeScriptのサンプルではExpressとTypeScript SDKを使用し、PythonのサンプルではFastAPIマウントを使用しています。
注: 以下のコードは公開SDKのサンプルコードに準拠しており、分かりやすさを考慮して意図的に最小限に抑えられています。本番環境では、SDKのデフォルトに加えて、認証、ログ記録、レート制限、入力検証などの機能を追加してください。
例1: TypeScript + Express (ストリーミング可能なHTTP)
創造する server.ts (完了):
// server.ts
import express from "express";
import * as z from "zod/v4";
import { McpServer, ResourceTemplate } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
const server = new McpServer({ name: "claude-code-demo", version: "0.1.0" });
// Register a simple tool: add two numbers
server.registerTool(
"add",
{
title: "Add",
description: "Add two numbers a and b",
inputSchema: { a: z.number(), b: z.number() },
outputSchema: { result: z.number() }
},
async ({ a, b }) => {
const output = { result: a + b };
return {
content: ,
structuredContent: output
};
}
);
// Register a resource: greet user (dynamic)
server.registerResource(
"greeting",
new ResourceTemplate("greeting://{name}", { list: undefined }),
{ title: "Greeting", description: "Return a greeting for the name" },
async (uri, params) => {
return {
contents:
};
}
);
// Express + Streamable HTTP transport
const app = express();
app.use(express.json());
app.post("/mcp", async (req, res) => {
const transport = new StreamableHTTPServerTransport({ enableJsonResponse: true });
// Close transport when connection closes
res.on("close", () => transport.close());
await server.connect(transport);
await transport.handleRequest(req, res, req.body);
});
const port = parseInt(process.env.PORT || "3000", 10);
app.listen(port, () => console.log(`MCP server listening: http://localhost:${port}/mcp`));
実行:
npm install
npx -y tsx server.ts
次に、Claude Code で接続します (例)。
# Add the remote server to your Claude Code MCP list (local dev)
claude mcp add --transport http my-demo http://localhost:3000/mcp
この例は、公式の TypeScript SDK クイック スタートを基にしており、ツールとリソースを登録し、Streamable HTTP 経由で公開する方法を示しています。
例2: Python + FastAPI (FastMCP + Streamable HTTP)
創造する server.py (完了):
# server.py
from fastapi import FastAPI
from mcp.server.fastmcp import FastMCP
app = FastAPI()
mcp = FastMCP("claude-python-demo", stateless_http=True)
# tool: simple sum
@mcp.tool()
def add(a: int, b: int) -> dict:
"""Add two integers"""
return {"result": a + b}
# resource: simple greeting resource template
@mcp.resource("greeting://{name}")
def greeting(name: str):
return {"contents": }
# mount the streamable-http MCP endpoint (FastMCP exposes an ASGI app)
app.mount("/mcp", mcp.streamable_http_app())
# optional endpoint to demonstrate other API routes
@app.get("/")
async def root():
return {"status": "OK"}
実行:
uvicorn server:app --reload --port 8000
検査官と連絡を取る:
npx @modelcontextprotocol/inspector
# In Inspector select Streamable HTTP and enter http://localhost:8000/mcp
Python SDKのサンプルとFastMCPユーティリティにより、登録が簡単になります。 @mcp.tool() および @mcp.resource() LLM が検出して呼び出すことができる装飾された関数。
Claude Code は実際にどのようにツールを呼び出すのでしょうか?
LLMがツールの使用を決定すると、クライアントはMCPサーバーにJSON-RPC呼び出しを送信します。サーバーは要求されたツール(例えば、DBへのクエリ、テストの実行、外部APIの呼び出しなど)を実行し、結果を返します。 構造化コンテンツ および 提示可能なコンテンツクライアント(Claude Code)は、構造化された出力をモデルのコンテキストに含めることができるため、モデルはサーバーのテキスト出力だけでなく、その信頼性の高いデータを使って推論を継続できます。TypeScript SDKは、 inputSchema および outputSchema (zod) 引数と出力は検証され、機械によって型付けされます。
どのようなテストおよびデバッグ ツールを使用する必要がありますか?
MCP検査官
当学校区の MCP検査官 MCPサーバーをテストするための公式ビジュアル開発ツールです。サーバー(stdio、SSE、またはストリーミング可能なHTTP)への接続、ツールの一覧表示、手動での起動、JSON-RPCメッセージのライフサイクルの検査などが可能で、開発中に非常に役立ちます。 npx @modelcontextprotocol/inspector.
ローカルテストとリモートテスト
- ローカル(stdio) — デスクトップ アプリとオフライン デバッグの迅速な反復サイクル。
- ストリーミング可能なHTTP — インスペクターでテストするか、
claude mcp addリモートテストには、CLI または Messages API の MCP コネクタを使用します。サーバーに必要な認証ヘッダーを必ず指定してください。
結論
MCPは、最新のLLMと、実際にデータを保持しアクションを実行するシステムとの間の実用的な橋渡しとなります。コードワークフローにおいて、Claude CodeをMCPサーバーと統合することで、モデルはリポジトリ、CI、課題追跡ツール、カスタムツールへの構造化された監査可能なアクセスを実現し、より正確な自動化とより安全な副作用を実現します。TypeScriptとPythonの公式SDK、リモートホスティング用のStreamable HTTP、そしてMCP Inspectorなどのツールを活用すれば、最小限のサーバーを数分で構築し、本番環境へのデプロイに向けて反復的に開発を進めることができます。
開発者はアクセスできる クロード・ソネット 4.5 API および クロード・オプス 4.1 API CometAPI経由など、 最新モデルバージョン 公式ウェブサイトで常に更新されています。まずは、モデルの機能について調べてみましょう。 プレイグラウンド そして相談する APIガイド 詳細な手順についてはこちらをご覧ください。アクセスする前に、CometAPIにログインし、APIキーを取得していることを確認してください。 コメットAPI 統合を支援するために、公式価格よりもはるかに低い価格を提供します。
準備はいいですか?→ 今すぐCometAPIに登録しましょう !
