MCPに入門してみた

目次
はじめに
こんにちは、CloudBuildersのsugawaraです。
前回のAIエージェントに引き続き、トレンドのキャッチアップのため、最近流行りのMCPに入門してみました。今回はMCPとは何か、どんなMCPサーバーが公開されているのか、そして実際にやってみた話です。
MCPってなんだ?
定義
MCPとはModel Context Protocolの略であり、生成AIのモデルに文脈情報を渡すための仕様です。Claudeで有名なAnthropic社が2024年11月に発表しました。
下記に公式の定義を引用します。
“MCP is an open protocol that standardizes how applications provide context to LLMs. Think of MCP like a USB-C port for AI applications. Just as USB-C provides a standardized way to connect your devices to various peripherals and accessories, MCP provides a standardized way to connect AI models to different data sources and tools.“
“MCP(Model Context Protocol)は、アプリケーションがLLM(大規模言語モデル)に文脈を提供する方法を標準化するオープンプロトコルです。MCPを、AIアプリケーションのための「USB-Cポート」のようなものと考えてみてください。USB-Cが、さまざまな周辺機器やアクセサリをデバイスと接続するための標準的な方法を提供するのと同じように、MCPはAIモデルをさまざまなデータソースやツールと接続するための標準的な方法を提供します。“
(From https://modelcontextprotocol.io/introduction)
文字だけ読んでも自分はなかなかイメージがつかめず。なるほど、よくわからん状態でしたが、下記の図ですんなり理解できました。まさにMCPがUSB-Cポートのような位置づけですね。

(From What is Model Context Protocol (MCP)? How it simplifies AI integrations compared to APIs)
役割
次に、そもそもなぜMCPが登場し、こんなにも流行っているのかについて見ていきます。キーワードは、仕様の標準化と外部サービスの拡張機能化です。
これまではAIアシスタントやアプリケーションが外部サービスと連携するには、それぞれ専用の実装やAPI連携が必要でした。そのため、新しいサービスや機能を統合するたびに個別の開発が発生していました。
しかし、MCPによって、アプリケーションが共通の仕様で外部リソースにアクセスできる仕組みが提供されました。これにより、異なるサービス同士でも同じフォーマット・手順で連携できるようになり、開発が容易になりました。
さらに、MCPを介することで、Gmailなどの外部サービスを拡張機能のように扱うことも可能になりました。例えば、メール送信、カレンダー登録、Web検索といった機能を、アプリケーション内の標準機能のように利用できるようになりました。
コンポーネント
MCP利用時に登場する主なコンポーネントは下記の3つです。
- MCPホスト:
MCPクライアントを内蔵し、MCPサーバーと通信するアプリケーション。Claude DesktopやcursorなどのIDE。 - MCPクライアント:
MCPホストに組み込まれているコンポーネントで、MCPプロトコルを使ってMCPサーバーにアクセスする。 - MCPサーバ:実際に外部リソース(データベース、Web APIなど)とやり取りするプログラム。各MCPサーバーは独立して存在し、それぞれが特定のサービスやデータソースと接続する。

(From https://norahsakal.com/blog/mcp-vs-api-model-context-protocol-explained/)
ここで少しわかりにくいのは、MCPサーバーです。サーバーと言っていますが、どこかのデータセンターにあるわけではありません。上記の図では、HostやMCP ClientとともにYour Computerの枠内にありますね。
したがって、MCPサーバーは、基本的にはローカルで動作する軽量プログラムのことを指します。
利用できるMCPサーバー
2025年4月現在に公開されているAWS公式MCPサーバーとその他個人的に気になるをもの抜粋しています。
AWS
- Core MCP Server – MCPサーバーの管理と調整
- AWS Document MCP Server – AWSドキュメントとベストプラクティスへのアクセス
- AWS CDK MCP Server – CDKベストプラクティスとセキュリティチェック
- Amazon Nova Canvas MCP Server – 画像生成支援
- Amazon Bedrock Knowledge Base Retrieval MCP Server – ナレッジベース情報の取得
- Cost Analysis MCP Server – AWSサービスコストの分析
- AWS Lambda MCP Server – Lambda関数の選択と実行
- AWS Diagram MCP Server – ダイアグラムの作成
- AWS Terraform MCP Server – Terraformベストプラクティスとセキュリティチェック
データとファイルシステム
- ファイルシステム– 設定可能なアクセス制御による安全なファイル操作
- Google ドライブ– Google ドライブのファイル アクセスと検索機能
開発ツール
- Git – Git リポジトリを読み取り、検索、操作するためのツール
- GitHub – リポジトリ管理、ファイル操作、GitHub API 統合
- GitLab – プロジェクト管理を可能にする GitLab API 統合
生産性とコミュニケーション
- Slack – チャンネル管理とメッセージ機能
- Google マップ– 位置情報サービス、ルート案内、場所の詳細
様々なサービスでMCPサーバーが公開されているため、これらを利用して生産性や業務効率性を向上させることができそうですね。
実際にやってみた
最後に、自分のローカル環境で実際にMCPを触ってみます。あくまでどんなことができるのかを試してみるだけであって、自分でMCPサーバー自体を作成するわけではありません。
実行環境
- Windows 11 pro
- NodeやPython、uvインストール済み(uv未インストールの場合はこちら)
- Claude Desktop(無料版)で開発者モードを有効化済み
$ node -v
v22.14.0
$ python3 --version
Python 3.12.3
$ uv --version
uv 0.6.16 (d8ad9d3cd 2025-04-22)
設定手順
今回はAWS Documentation MCP ServerとAWS CDK MCP Server の2つをいっしょに試してみます。画面左上部のハンバーガーメニューをクリックします。
「ファイル」から「設定」をクリックします。
設定ウインドウが開くので、そこから開発者を選択します。「構成を編集」をクリックすると、claude_desktop_config.jsonのあるディレクトリが開きます。
なお、「はじめる」をクリックすると、MCPのクイックスタートページに遷移します。
claude_desktop_config.jsonを下記のように修正してClaude Desktopを再起動します。
{
"mcpServers": {
"awslabs.aws-documentation-mcp-server": {
"command": "uvx",
"args": [
"--from",
"awslabs-aws-documentation-mcp-server",
"awslabs.aws-documentation-mcp-server.exe"
],
"env": {
"FASTMCP_LOG_LEVEL": "ERROR"
},
"disabled": false,
"autoApprove": []
},
"awslabs.cdk-mcp-server": {
"command": "uvx",
"args": [
"--from",
"awslabs-cdk-mcp-server",
"awslabs.cdk-mcp-server.exe"
],
"env": {
"FASTMCP_LOG_LEVEL": "ERROR"
},
"disabled": false,
"autoApprove": []
}
}
}
すると、Claude Desktopにトンカチマークが追加されます。これをクリックすると、現在利用可能なMCPツールが表示されます。

今回はAWS Documentation MCP ServerとAWS CDK MCP Serverの2つを設定したため、どちらの公式ドキュメントも参照可能となっています。
もう一度ハンバーガーメニューから「ファイル」→「設定」→「開発者」へ進むと、下記のようにJSONに設定した2つのMCPサーバーが表示されます。runnningになっていれば利用できます。
質問と回答
実際にCDKのベストプラクティスについてClaudeに聞いてみました。外部連携の許可が出ますので、「このチャットで許可する」をクリックします。これにより、Claudeは外部の情報(今回はAWS公式ドキュメント)へアクセスすることができるようになります。
下記がClaudeが生成した回答になります。
AWS CDKのベストプラクティスを公式ドキュメントから参照して教えて。
<中略>
AWS CDKのベストプラクティス
AWS CDKを効果的に使用するための主要なベストプラクティスは以下のとおりです:
組織的なベストプラクティス
1. 専門家チームの設置: AWS CDKの採用初期段階では、組織内の他のメンバーをトレーニングし指導する専門家チームを設置しましょう。小規模な企業では1〜2人、大企業ではクラウド・センター・オブ・エクセレンス(CCoE)として機能します。
2. ランディングゾーンの作成: AWS内の組織単位を定義する「ランディングゾーン」を作成しましょう。AWS Control Towerを使用して、マルチアカウントシステム全体を単一のインターフェースから構成・管理できます。
3. 開発チームの環境: 開発チームが独自のアカウントを使用してテストし、必要に応じて新しいリソースをデプロイできるようにしましょう。
コーディングのベストプラクティス
1. シンプルに始め、必要に応じて複雑さを追加: 可能な限りシンプルに保ち、要件が複雑な解決策を必要とする場合にのみ複雑さを追加しましょう。
2. AWSウェルアーキテクテッドフレームワークに沿う: CDKアプリケーションはウェルアーキテクテッドフレームワークの「コンポーネント」にマッピングされます。
3. 単一のリポジトリ内の単一パッケージから始める: アプリケーションは1つのリポジトリ内の1つのパッケージから始め、複数のアプリケーションで使用する構成については追加パッケージを使用しましょう。
4. コードのライフサイクルやチームの所有権に基づいてリポジトリに移動: パッケージが複数のアプリケーションで使用されるようになったら、独自のリポジトリに移動させましょう。
5. インフラストラクチャとランタイムコードを同じパッケージに置く: インフラストラクチャとランタイムロジックを実装するコードを単一の自己完結型の構成に組み合わせましょう。
構成(Construct)のベストプラクティス
1. 構成でモデル化し、スタックでデプロイ: 論理的なユニットをStackではなくConstructとして表現し、スタックはデプロイのシナリオに応じて構成を組み合わせ接続するために使用しましょう。
2. 環境変数ではなくプロパティとメソッドで構成: 構成とスタックは環境変数ではなく、プロパティオブジェクトを通じて完全に構成可能にすべきです。
3. インフラストラクチャの単体テスト: 一貫して全ての環境でビルド時に単体テストを実行できるようにしましょう。
4. ステートフルなリソースの論理IDを変更しない: データベースやS3バケットなどのステートフルなリソースの論理IDを変更すると、新しいリソースに置き換えられるため注意が必要です。
5. コンプライアンスには構成だけでは不十分: セキュリティのベストプラクティスを強制するためのL2構成のラッパーを作成するだけでなく、サービスコントロールポリシーやアクセス許可の境界などのAWS機能も使用しましょう。
アプリケーションのベストプラクティス
1. 合成時に決定を下す: デプロイ時ではなく、プログラミング言語の機能を使ってCDKアプリケーション内でリソースの選択などの決定を行いましょう。
2. 生成されたリソース名を使用し、物理名を指定しない: ハードコードされた名前ではなく、CDKが生成するリソース名を使用することで、同じアカウントに同じインフラを複数回デプロイできるようにしましょう。
3. 削除ポリシーとログ保持を定義: プロダクション環境のリソースに対して適切な削除ポリシーとログ保持期間を設定しましょう。
4. デプロイ要件に応じてアプリケーションを複数のスタックに分割: できるだけ多くのリソースを同じスタックに保持しつつ、以下のガイドラインを考慮しましょう:
・ステートフルなリソース(データベースなど)をステートレスなリソースから分離する
・名前変更に敏感なステートフルなリソースは、移動や名前変更される可能性の高い構成の中にネストしない
5. 非決定的な動作を避けるためにcdk.context.jsonをコミットする: AWS CDKアプリのコンテキストプロバイダーによって記録された非決定的な値のスナップショットを使用し、それをバージョン管理にコミットしましょう。
6. AWS CDKにロールとセキュリティグループを管理させる: grant()メソッドを使用して、最小限のスコープのアクセス許可でリソース間のアクセスを可能にしましょう。
7. すべての本番ステージをコードでモデル化: 本番環境用のスタックと各ステージ用の個別のスタックを作成し、構成値をコードに組み込みましょう。
8. すべてを測定する: リソースのすべての側面を測定するために、メトリクス、アラーム、ダッシュボードを作成しましょう。
セキュリティのベストプラクティス
1. IAMセキュリティのベストプラクティスに従う: IAMを使用してAWSリソースへのアクセスを安全に制御する際は、IAMのセキュリティベストプラクティスに従いましょう。
2. AWS CDKデプロイメントのアクセス許可を管理する:
・デプロイ中に使用されるIAMロールを誰が引き受けられるかを制限する
・デプロイ中に実行できるアクションを制限するためにIAMロールのアクセス許可を変更する
3. 最小権限アクセスの付与:
・ガードレールを実装し、バイパスを防止する
・AWS Control Tower、AWS Config、AWS CloudTrail、AWS Security Hubなどのサービスを使用する
・アクセス許可の境界やサービスコントロールポリシー(SCP)を活用する
4. AWS CDKによってプロビジョニングされたリソース間の権限を管理する:
・AWS Construct LibraryのL2構成のgrantメソッドを使用して、リソース間のアクセス許可をプロビジョニングする
・アクセス許可の境界やサービスコントロールポリシー(SCP)を使用して、開発者が独自の権限を昇格させることを防止する
以上が、AWS公式ドキュメントから抽出したAWS CDKのベストプラクティスの主要なポイントです。これらの原則に従うことで、より安全で効率的なインフラストラクチャ管理が可能になります。
かなり詳細にCDKのベストプラクティスが語られていますね。しかし、これらが本当にAWS公式ドキュメントに基づいた回答なのかどうかが気になります。
上記で中略した回答の生成過程を見ると、実際にAWS公式ドキュメントを参照していることがわかります。下記は実際のClaudeの生成過程において、search_documentationとread_documentationを行っています。
search_documentationを見ると、下記のようなリクエストとレスポンスがありました。ドキュメントについて、たしかにAWSの公式ドキュメントを参照しているようです。これらのURLを、次のread_documentationで情報取得しにいっています。取得した情報をもとに、質問への回答を生成しているということがわかりました。
リクエスト
{
`limit`: 5,
`search_phrase`: `AWS CDK best practices`
}
レスポンス
{"rank_order": 1, "url": "https://docs.aws.amazon.com/cdk/v2/guide/best-practices-security.html", "title": "AWS CDK security best practices - AWS Cloud Development Kit (AWS CDK) v2", "context": "The AWS Cloud Development Kit (AWS CDK) is a powerful tool that developers can use to configure AWS services and provision infrastructure on AWS. With any tool that provides such control and capabilities, organizations will need to establish policies and practices to ensure that the tool is being used in safe and secure ways. For example, organizations may want to restrict developer access to specific services to ensure that they can\u2019t tamper with compliance or cost control measures that are configured in the account."}
レスポンス
{"rank_order": 2, "url": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/best-practices.html", "title": "AWS CloudFormation best practices - AWS CloudFormation", "context": "Guidelines and recommendations on how to use CloudFormation more effectively and securely."}
レスポンス
{"rank_order": 3, "url": "https://docs.aws.amazon.com/cdk/v2/guide/best-practices.html", "title": "Best practices for developing and deploying cloud infrastructure with the AWS CDK - AWS Cloud Development Kit (AWS CDK) v2", "context": "With the AWS CDK, developers or administrators can define their cloud infrastructure by using a supported programming language. CDK applications should be organized into logical units, such as API, database, and monitoring resources, and optionally have a pipeline for automated deployments. The logical units should be implemented as constructs including the following:"}
レスポンス
{"rank_order": 4, "url": "https://docs.aws.amazon.com/cdk/v2/guide/home.html", "title": "What is the AWS CDK? - AWS Cloud Development Kit (AWS CDK) v2", "context": "The AWS Cloud Development Kit (AWS CDK) is an open-source software development framework for defining cloud infrastructure in code and provisioning it through AWS CloudFormation."}
レスポンス
{"rank_order": 5, "url": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/security-best-practices.html", "title": "Security best practices for CloudFormation - AWS CloudFormation", "context": "Describes guidelines and best practices for addressing security issues in CloudFormation."}
ChatGPTなどの生成AIにAWSの質問をすると、必ずしも最新ではない回答が返ってきたり、ドキュメントを要求すると、リンク切れの存在しないURLが返ってきたりしていました。
しかし、MCPサーバーを利用することで、常に最新の資料に基づいた回答を容易に得ることができます。様々な企業が続々と公式のMCPサーバーを発表しているため、自分でドキュメントを探して出して読むということは今後少しずつ減っていくかもしれませんね。
参考資料
- https://modelcontextprotocol.io/introduction
- やさしいMCP入門
- MCP入門
- What is Model Context Protocol (MCP)? How it simplifies AI integrations compared to APIs
- https://awslabs.github.io/mcp/
- https://github.com/awslabs/mcp
おわりに
今回はいま話題のMCPを触ってみました。公開されている公式のMCPサーバーを試すだけならすぐにできました。まだ試していない方も、興味のあるものを触ってみてはいかがでしょうか。
生成AI関連のトレンドは変化が早くて追いつくのが大変ですが、業務に活かせることも多々あると思うので、積極的に取り入れていきたいですね!