Contents
1. MCP とは? – 基本概念と主な利用シーン
| 項目 | 内容 |
|---|---|
| 正式名称 | Model Context Protocol (MCP) |
| 目的 | 大規模言語モデル(LLM) と外部リソース(データベース・ツール等) の間で、コンテキスト情報を統一フォーマットでやり取りできるようにするプロトコル |
| 主な効果 |
|
| 対象 | LLM アプリケーション開発者、AI プラットフォーム運用者、データエンジニア |
1.1 代表的な利用シーン
| シナリオ | 具体例 |
|---|---|
| チャットボット + 社内データベース | ユーザーの質問に対し、検索結果を自動で Context に埋め込み、LLM が回答生成時に参照できる。 |
| マルチモデルパイプライン | 生成系 LLM の出力を評価系 LLM に渡す際、MCP が中間コンテキストを保持しシームレスに連携。 |
| ツール呼び出しの標準化 | 社内 API・外部 SaaS の認証情報やパラメータを resource 定義として共有し、LLM が動的に利用できる。 |
公式ドキュメント: https://mcp.dev/docs/overview
2. 前提条件と推奨環境
| カテゴリ | 必要ツール | 推奨バージョン | 備考 |
|---|---|---|---|
| コンテナ基盤 | Docker | 24.0 以上 | docker --version で確認 |
| 複数コンテナ管理 | Docker Compose | 2.20 以上 | docker compose version |
| スクリプト実行 | Node.js (LTS) | 18.x 系 | npm が同梱されます |
| アプリ開発 | Java | 17 以上(OpenJDK 推奨) | Maven/Gradle が使用可能 |
| ソース取得 | Git | 2.40 以上 | HTTPS または SSH のいずれでも可 |
重要:インストール前に
docker info、node -v、java -versionを実行し、バージョンが要件を満たすことを必ず確認してください。
3. mcp‑installer の取得とインストール手順
3.1 リポジトリのクローン
|
1 2 3 4 |
# GitHub(公式)から最新版を取得 git clone https://github.com/mcp-dev/mcp-installer.git cd mcp-installer |
※ 最新リリースはリポジトリの Release ページで確認できます
https://github.com/mcp-dev/mcp-installer/releases
3.2 npm パッケージとしてインストール
|
1 2 3 4 |
# 依存関係を確定し、グローバルコマンド `mcp` を登録 npm ci # package-lock に基づく確実なインストール npm link # `mcp` コマンドをシステムパスへリンク |
Windows 注意点
PowerShell で実行する場合、実行ポリシーがRemoteSigned以上になっているか確認してください。
powershell
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
3.3 インストール確認
|
1 2 |
mcp --version # 例: mcp version 2.1.0 |
バージョンが表示されればインストールは完了です。リリースノートで 2.x 系の変更点を必ずチェックしてください(https://github.com/mcp-dev/mcp-installer/releases)。
4. プロジェクト雛形の作成とディレクトリ構成
4.1 雛形生成コマンド
|
1 2 3 4 |
# 任意の作業ディレクトリで実行 mcp init my-mcp-project cd my-mcp-project |
4.2 自動生成される構造
|
1 2 3 4 5 6 7 8 |
my-mcp-project/ ├─ mcp.yaml # サーバ設定ファイル(必須) ├─ src/ # アプリケーションコード(Java / Python テンプレート) │ ├─ java/ │ └─ python/ └─ scripts/ └─ docker-compose.yml # Docker Compose 用定義 |
4.3 mcp.yaml の主要項目
| キー | 説明 | 推奨設定例 |
|---|---|---|
server.port |
HTTP リスニングポート | 8080 |
log.level |
ログ出力レベル (debug, info, warn) |
info |
auth.apiKey |
API キー認証(文字列) | "my-secret-key" |
tls.enabled |
TLS の有無 | true |
resource.path |
ツール定義やスキーマを置くディレクトリ | ./resources/ |
設定変更後はサーバ再起動が必要です。
5. MCP サーバの起動方法
5.1 Docker Compose を使う(推奨)
|
1 2 3 |
docker compose up -d # バックグラウンドで起動 docker compose logs -f # ログをリアルタイム表示 |
scripts/docker-compose.yml が自動生成され、内部で mcp.yaml を参照します。
5.2 ローカルバイナリ実行(Docker が使えない環境向け)
|
1 2 |
mcp server start --config ./mcp.yaml |
※ バイナリは npm link によりインストール済みの mcp コマンドが提供します。
6. クライアント SDK の導入とサンプルコード
6.1 Java SDK(Maven)
|
1 2 3 4 5 6 7 |
<!-- pom.xml に追加 --> <dependency> <groupId>dev.mcp</groupId> <artifactId>mcp-java-sdk</artifactId> <version>1.4.2</version> <!-- 最新は Release ページで確認 --> </dependency> |
サンプルコード
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
import dev.mcp.sdk.McpClient; import dev.mcp.sdk.context.Context; public class Sample { public static void main(String[] args) { McpClient client = new McpClient.Builder() .endpoint("http://localhost:8080") .apiKey(System.getenv("MCP_API_KEY")) .build(); Context ctx = new Context(); ctx.put("userId", "12345"); ctx.put("sessionId", "abcd-efgh"); String reply = client.chat("今日の売上は?", ctx); System.out.println(reply); } } |
6.2 Python SDK(pip)
|
1 2 |
pip install mcp-sdk # 現在の最新版は 0.9.1(2024‑12‑01 時点) |
サンプルコード
|
1 2 3 4 5 6 7 8 9 10 11 |
from mcp_sdk import McpClient, Context client = McpClient( endpoint="http://localhost:8080", api_key="YOUR_API_KEY" ) ctx = Context(user_id="12345", session_id="abcd-efgh") resp = client.chat("本日の在庫状況を教えて", context=ctx) print(resp) |
公式リポジトリ(Python SDK): https://github.com/mcp-dev/mcp-python-sdk
7. 動作確認・セキュリティ設定
7.1 簡易チャットテスト(curl)
|
1 2 3 4 5 6 7 8 |
curl -X POST http://localhost:8080/v1/chat \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "message": "ユーザーID 12345 の最近の注文を教えて", "context": {"userId":"12345"} }' |
レスポンスに orderHistory フィールドが含まれれば成功です。
7.2 認証と TLS
|
1 2 3 4 5 6 7 8 |
# mcp.yaml の抜粋 auth: apiKey: "my-secret-key" tls: enabled: true certFile: ./certs/cert.pem keyFile: ./certs/key.pem |
- API キーは環境変数またはシークレット管理ツールで安全に保管してください。
- TLSは自己署名証明書でもテスト可能ですが、本番環境では信頼できる CA の証明書を使用します。
8. トラブルシューティング(よくあるエラーと対処法)
| エラー | 原因例 | 解決策 |
|---|---|---|
EADDRINUSE(ポート競合) |
他プロセスが 8080 を使用中 |
mcp.yaml の server.port を空きポートに変更し、クライアント設定も合わせる |
| Docker デーモン未起動 | Cannot connect to the Docker daemon |
Linux: sudo systemctl start docker macOS/Windows: Docker Desktop が起動しているか確認 |
| SDK バージョン不整合 | サーバ側が 2.x 系、クライアントが 1.x 系を使用 | mcp-installer update → 最新インストーラ取得後、依存パッケージのバージョンを pom.xml/requirements.txt に合わせる |
| TLS ハンドシェイク失敗 | 証明書パスが誤っている・自己署名証明書が信頼されていない | パスを再確認し、テスト時はクライアントに --insecure オプション(curl: -k)を付与 |
9. FAQ – MCP に関するよくある質問
Q1. MCP は無料で利用できますか?
A. コアプロトコルと公式 SDK はオープンソース(MIT ライセンス)として公開されています。商用利用も制限なく可能です。
Q2. 既存の REST API と併用できますか?
A. MCP は「コンテキスト」層だけを提供するため、バックエンドは従来通りの REST/GraphQL で構築したまま利用できます。Context オブジェクトをリクエストヘッダーやペイロードに埋め込むだけです。
Q3. 複数サーバ間でコンテキストを共有する方法は?
A. resource.path に配置したツール定義ファイルは GitOps で管理し、各サーバが同一リポジトリをマウントすれば同期できます。詳細は公式ガイドの「分散デプロイ」章をご参照ください。
Q4. バージョンアップ時に注意すべき点は?
A. メジャーリリース(例: 2.x → 3.x)ではプロトコルスキーマが変更される可能性があります。必ずリリースノートとマイグレーションガイドを確認し、mcp-installer update --dry-run で影響範囲をシミュレートしてください。
10. まとめ
- MCP の概要 – LLM と外部リソースのコンテキストを統一フォーマットでやり取りできるプロトコル。開発工数・運用リスクが大幅に削減されます。
- 必須前提条件 – Docker、Docker Compose、Node.js、Java 17+, Git が揃っていればインストール可能です。
- インストール手順 –
git clone → npm ci → npm linkの 3 ステップでmcpコマンドが使えるようになります。リポジトリの Release ページで最新版を必ず確認してください。 - プロジェクト初期化 –
mcp initが雛形と設定ファイル (mcp.yaml) を生成し、Docker Compose かローカルバイナリでサーバ起動が可能です。 - SDK の活用 – Java と Python の公式 SDK を導入すれば、数行のコードでコンテキスト付きチャット呼び出しが実装できます。
- 検証・セキュリティ – API キーと TLS による認証設定は必須です。
curlで簡易テストを行い、期待通りのコンテキストが返ってくるか確認しましょう。 - トラブル対処 – ポート競合・Docker 起動失敗・SDK バージョン不整合は最も多い障害です。上記表を参考に素早く復旧してください。
以上の手順とポイントに従えば、Model Context Protocol の導入から実装・運用までをスムーズに完了できます。公式ドキュメントやリリースノートは常に最新情報を取得するために定期的にチェックしましょう。
参考リンク
- MCP 公式サイト & ドキュメント: https://mcp.dev/docs
- mcp‑installer GitHub リポジトリ: https://github.com/mcp-dev/mcp-installer
- Release ノート: https://github.com/mcp-dev/mcp-installer/releases
- Java SDK (Maven): https://repo1.maven.org/maven2/dev/mcp/mcp-java-sdk/
- Python SDK (PyPI): https://pypi.org/project/mcp-sdk/