はじめに
データ分析エンジニアの木介です。
AWSの公式ドキュメントで欲しい情報を探そうとしても、なかなか目的のページが見つからなかったりすることってありませんか?
AWSから「AWS Documentation MCP Server」が公開されたため、本記事では、それを利用して、最新のAWSドキュメントに基づき、質問に回答してくれるFAQアシスタントの作成方法について紹介したいと思います。
MCP Serverの呼び出しには、Claude Desktop および dolphin-mcp を利用します。
概要
1. MCPとは
MCP(Model Context Protocol)は、Anthropic社が開発したオープンなプロトコルです。
LLM(大規模言語モデル)と外部のデータソースやツールを接続するための標準化された方法を提供します。
MCPのしくみ
- ホスト(Host)
- LLMアプリケーション側(例:Claude Desktop)でMCP通信を行う。
- クライアント(Client)
- ホスト内部でサーバーと通信を管理。
- サーバー(Server)
- クライアントからの要求に応じて、ドキュメントデータやツール機能を提供。
図にすると以下のような形です。

クライアントサイドから定まった形式でそれぞれのMCPサーバーとやり取りを行うことで、ローカルやクラウドにある様々なリソースに自由にアクセスできるようになっています。
この3者間でJSONベースのメッセージをやりとりすることで、LLMが外部情報へ安全かつ動的にアクセスできる仕組みとなっています。
詳しくは以下の記事でも解説をしているため参考にしていただければと思います。
2. AWS Documentation MCP Serverとは
AWSでは、Model Context Protocol(MCP)をベースに、さまざまな用途に特化したMCPサーバー群を以下のレポジトリで公開しています。
公開されているMCPサーバーには、現在以下の9種が提供されています。
| サーバー名 | 概要 |
| Core MCP Server | AWS MCPのベースとなるサーバー |
| AWS Documentation MCP Server | AWS製品ドキュメントを検索対象にできる |
| Amazon Bedrock Knowledge Bases Retrieval MCP Server | Bedrock KnowledgeBaseをMCP経由で参照できる |
| AWS CDK MCP Server | CDKについてのベストプラクティスを取得できる |
| Cost Analysis MCP Server | AWSのコストサービスを利用できる |
| Amazon Nova Canvas MCP Server | 画像生成を行う |
| AWS Diagram MCP Server | AWSの構成図などを生成する |
| AWS Lambda MCP Server | AWS Lambdaを実行する |
| AWS Terraform MCP Server | Terraformのベストプラクティスを取得できる |
今回紹介する「AWS Documentation MCP Server」では、AWS公式のドキュメントをナレッジソースとして扱い、
外部から簡単に検索・参照できる仕組みを提供する形となっています。
具体的には以下の機能がMCPにより提供されています。
| 機能名 | 概要 |
| search_documentation | 指定したキーワードに関連するAWSドキュメントを検索する機能 |
| read_documentation | ドキュメントの特定ページやセクションを読み取り、その内容を取得する機能 |
| recommend | 質問に関連する推奨ドキュメントやページを提案する機能 |
また、新たに追加されるドキュメントにも自動で対応する設計となっており、
常に最新のAWSドキュメントを対象にしたFAQアプリケーションなどの構築が可能になります。
今回はGUIでMCPが利用できるClaude Desktopと、PythonからMCPを利用できるdolphin-mcpを使ってのAWS Documentation MCP Serverを使ったFAQアシスタントの作成方法について紹介します。
Claude Desktop経由でAWS ドキュメントのFAQアシスタントを作成する
では早速AWS Documentation MCP Serverを利用してみましょう。
AWS Documentation MCP Serverの利用には以下の環境が必要となります
- Python 3.10以上
- uv
まず以下のURLよりClaude Desktopをインストールします。
Claude Desktopを開くと以下の形でファイルメニューから「設定」を選択します。

設定から「開発者」メニューより、「構成を編集」を選択します。

以下のドキュメントを参考にclaude_desktop_config.jsonの設定を行います。
設定値
{
"mcpServers": {
"awslabs.aws-documentation-mcp-server": {
"command": "uvx",
"args": [
"--from",
"awslabs-aws-documentation-mcp-server@latest",
"awslabs.aws-documentation-mcp-server.exe"
],
"env": {
"FASTMCP_LOG_LEVEL": "ERROR"
},
"disabled": false,
"autoApprove": []
}
}
}その後に、再起動し以下の形となっていれば設定完了です。

使い方は簡単で、新規チャットよりチャットを送信するのみです。
例えば以下の質問を送信してみましょう。

以下の形で、AWSドキュメントを参考にした回答が生成されます。

以下の形でドキュメントの検索、読み込みを必要に応じて行っていることがわかります。
ドキュメントの検索

ドキュメントの読み込み

また、AWSドキュメントに関連しない質問をしてみると以下の回答が生成されていることからLLMがMCPサーバーを利用するかを判断出来ていることもわかります。

以上でClaude Desktopを使ったAWS Documentation MCP Serverの使い方です。
非常に簡単にAWSドキュメントベースのFAQアシスタントを利用できることがわかります。
dolphin-mcpでAWS ドキュメントのFAQアシスタントを作成する
さて、では次にdolphin-mcpを利用して実際にStreamlitアプリにAWS Documentation ServerをFAQアシスタントとして組み込んでみましょう。
1. 構成と準備
今回の構成は以下の通りです。
Streamlitで作成したFAQアシスタントからFastAPI経由でAWS Documentation MCP Serverを使ったLLMの回答をリクエストしている形です。

モジュールなどは以下の物を利用しました
2. FastAPIサーバーの実装
まず、MCPサーバーとの通信部分をFastAPIで簡単なAPIとして実装します。
import asyncio import json from fastapi import FastAPI from fastapi.responses import StreamingResponse from dolphin_mcp import run_interaction import sys if sys.platform.startswith('win'): asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy()) app = FastAPI() @app.get("/query") async def query_endpoint(q: str): async def stream_generator(): try: result = await run_interaction( user_query=q, model_name="claude-3-7-sonnet-latest", quiet_mode=False, stream=True ) async for chunk in result: yield f"data: {json.dumps({'type': 'llm_text', 'payload': chunk})}\n\n" except Exception as e: yield f"data: {json.dumps({'type': 'error', 'payload': str(e)})}\n\n" return StreamingResponse(stream_generator(), media_type="text/event-stream")
また、以下のmcp_config.jsonファイルを作成します。
{ "mcpServers": { "aws-documentation-mcp-server": { "command": "uvx", "args": [ "--from", "awslabs-aws-documentation-mcp-server@latest", "awslabs.aws-documentation-mcp-server.exe" ], "env": { "FASTMCP_LOG_LEVEL": "ERROR" }, "disabled": false, "autoApprove": [] } }, "models": [ { "model": "claude-3-7-sonnet-latest", "provider": "anthropic", "apiKey": "<AnthropicのAPI Key>", "title": "claude", "temperature": 0.7, "top_k": 256, "top_p": 0.9, "max_tokens": 2048 } ] }
3. Streamlitによるフロントエンドの実装
次に、FAQアシスタントのUIをStreamlitで実装します。
import streamlit as st import requests import json API_URL = "http://localhost:8000/query" st.title("💬 AIチャット with AWS Documentation MCP Server") if "messages" not in st.session_state: st.session_state.messages = [] user_input = st.chat_input("質問を入力してください") for message in st.session_state.messages: with st.chat_message(message["role"]): if message["type"] == "llm_text": st.markdown(message["content"]) elif message["type"] == "search_result": with st.expander("🔍 検索結果(クリックして展開)", expanded=False): st.json(message["content"]) if user_input: with st.chat_message("user"): st.markdown(user_input) st.session_state.messages.append({"role": "user", "type": "llm_text", "content": user_input}) with st.chat_message("assistant"): assistant_placeholder = st.empty() partial_response = "" try: with requests.get(API_URL, params={"q": user_input}, stream=True, timeout=120) as response: if response.status_code != 200: st.error(f"エラー: {response.status_code}") else: for line in response.iter_lines(decode_unicode=True): if line and line.startswith("data: "): payload = json.loads(line[len("data: "):]) partial_response += payload["payload"] assistant_placeholder.markdown(partial_response) except requests.exceptions.RequestException as e: st.error(f"接続エラー: {e}") st.session_state.messages.append({ "role": "assistant", "type": "llm_text", "content": partial_response })
このように、Streamlitとdolphin-mcpを使うことで、AWS Documentation MCP Serverをバックエンドに持つFAQアシスタントを簡単に構築できました。
まとめ
AWS Documentation MCP Serverを使い、Claude Desktopとdolphin-mcp経由でAWSドキュメントを参照できるFAQアシスタントを作成しました。
今回はAWS Documentation MCP Serverでしたが、そのほかに公開されているAWSのMCPサーバーとも簡単に置き換えることが出来るのがMCPの魅力だと感じました。
Acroquest Technologyでは、キャリア採用を行っています。
- Azure OpenAI/Amazon Bedrock等を使った生成AIソリューションの開発
- ディープラーニング等を使った自然言語/画像/音声/動画解析の研究開発
- マイクロサービス、DevOps、最新のOSSやクラウドサービスを利用する開発プロジェクト
- 書籍・雑誌等の執筆や、社内外での技術の発信・共有によるエンジニアとしての成長
少しでも上記に興味を持たれた方は、是非以下のページをご覧ください。
