Upgrade to Pro — share decks privately, control downloads, hide ads and more …

MCPって本当に不要? AWS MCP Serverで確かめる新しい役割

Avatar for Shota Kawasaki Shota Kawasaki
October 06, 2026
7

MCPって本当に不要? AWS MCP Serverで確かめる新しい役割

Avatar for Shota Kawasaki

Shota Kawasaki

October 06, 2026

More Decks by Shota Kawasaki

Transcript

  1. 今日話すこと 不要論とリモート型 1 MCP 2 AWS MCP Servers 3 4

    5 6 7 の概要 検証1 操作の追跡 検証2 権限の制御 検証3 知識の鮮度 検証4 集約による効率化 限界とまとめ
  2. 従来MCPが担っていた役割 能力の提供 知識の提供 外部サービスを操作するツールを エージェントに渡す 最新ドキュメントや手順書を エージェントに渡す ▼ 不要論の主張 ▼

    不要論の主張 を直接使えば同じことができる CLI として手元に置けば足りる Skills 不要論 = どちらもCLIとSkillsで代替できるという主張
  3. 今日話すこと 不要論とリモート型 1 MCP 2 AWS MCP Servers 3 4

    5 6 7 検証1 操作の追跡 検証2 権限の制御 検証3 知識の鮮度 検証4 集約による効率化 限界とまとめ の概要
  4. AWS MCP Servers awslabs/mcp と聞いて思い浮かぶもの で公開されている、サービスごとの約60種類のサーバー AWS API MCP Server

    AWS IaC MCP Server CLI AWS Documentation MCP Server Amazon EKS / ECS MCP Server Amazon DynamoDB MCP Server AWS Knowledge MCP Server コマンドでAPIを実行 コンテナの運用とデプロイ Knowledge 以外は 公式ドキュメントを検索 テーブル設計の支援 uvx awslabs. 〇〇@latest と のガイドと検証 CFn CDK ドキュメント検索(リモート) で手元で起動するローカル起動型
  5. からAgent Toolkit for AWSへ AWS MCP Servers コーディングエージェントがAWSで作業するための、AWS公式の配布セット AWS Labs

    サーバーやSkillsを個別に公開 – 引き続き利用できる – MCP AWS Labs Agent Toolkit for AWS つの部品をまとめて提供 – IAM条件キーと CloudTrail の記録 – 精度を評価した Skills – 4 の中で有用なものを、順に Agent Toolkit へ移していく 出典 AWS What's New 2026-05-06(the best of AWS Labs will be transitioned to the Agent Toolkit for AWS)
  6. は つの部品でできている Agent Toolkit 4 サーバーだけでなくSkillsや設定ファイルまで、追加料金なしで提供される MCP 1 2 3

    4 AWS MCP Server を操作するリモートMCPサーバー AWS Skills 作業手順と参考資料をまとめたパッケージ Plugins の接続設定とSkillsを1回で入れるパッケージ MCP Rules files プロジェクト単位でエージェントに渡す指示ファイル 出典 Agent Toolkit for AWS User Guide「Agent Toolkit for AWS components」、AWS What's New 2026-05-06
  7. AWS MCP Server AWS Labs は、その中のMCPを担う部品 の2つのサーバーの役割を、1つのリモートMCPサーバーにまとめた AWS Labs (リモート型)

    AWS MCP Server AWS API MCP Server ローカル起動型、 call_aws でCLIコマンドを 実行 AWS Knowledge MCP Server リモート型、ドキュメント検索 → 系ツール API run_script でPythonを実行 系ツール Knowledge ドキュメント検索とSkills取得 中身の系統は同じだが、API実行もAWS側に移った 出典 AWS What's New「AWS MCP Server(Preview)」2025-11-30
  8. は と AWS MCP Skills をセットで配っている を つ入れると、MCP Serverの接続設定とSkillsが同時に入る Plugin

    1 に プラグインを入れる # Claude Code aws-core /plugin install aws-core@claude-plugins-official Core AWS skills and MCP Server configuration (aws-core の説明文) MCP vs Skills という二項対立は、配り方の実態とずれている 出典 GitHub aws/agent-toolkit-for-aws README
  9. AWS MCP Server につなぐ2つの方法 年 月にGAされた、AWSが運用するリモート型MCPサーバー 2026 5 接続 URLを登録するだけ(IAMでOAuth用ポリシーの付与が必要)

    OAuth claude mcp add aws-mcp https://aws-mcp.us-east-1.api.aws/mcp --transport http 接続 手元でプロキシを起動(プロファイルの切り替えはこちらだけ) SigV4 uvx mcp-proxy-for-aws-cli@latest https://aws-mcp.us-east-1.api.aws/mcp どちらの方法でも、サーバー本体はAWS上で動く 出典 Agent Toolkit for AWS User Guide「Setting up the AWS MCP Server」
  10. 接続でプロキシがしていること 認証情報は手元に置いたまま、署名したリクエストだけが へ渡る SigV4 AWS 自分のPC AWS エージェント 1 ツールを呼ぶ

    ↓ MCP Proxy 2 ~/.aws 3 → 署名付きで送る の認証情報で署名 AWS MCP Server 4 署名で本人確認、条件キーを付ける 5 同じIAM権限で呼ぶ ↓ S3 など 接続なら、この署名の代わりにAWS Sign-in のトークンを使う OAuth 出典 Agent Toolkit for AWS User Guide「How AWS MCP Server works with IAM」
  11. つのツールを提供している 8 「ツール定義がコンテキストを食う」批判に、ツールを増やさない設計で応える 系(認証なし) 系(IAM認証) Knowledge – search_documentation – –

    – – read_documentation API – run_script serverless capability – – retrieve_skill list_regions もこの中で使う get_presigned_url get_tasks get_regional_availability 以上のAPIを8個のツールで扱う 15,000 2026-09-29 に tools/list を実測(接頭辞 aws___ は省略)
  12. call_aws はもう無い 同じ「バケットを1つ作る」を比べる(2026-09-29 の tools/list に call_aws は無い) (ローカル版に残る) 1回の呼び出し

    = CLIコマンド1つ call_aws aws s3api create-bucket --bucket lt-verify1-local-… --region ap-northeast-1 \ --create-bucket-configuration LocationConstraint=ap-northeast-1 run_script (現行) 1回の呼び出し = 複数のAPIを呼べるPython r = await call_boto3(service_name="s3", operation_name="CreateBucket", region_name="ap-northeast-1", params={"Bucket": "lt-verify1-mcp-…", …}) ツールを増やさず、スクリプト1本に寄せた
  13. リモート型MCPサーバーが担う新しい役割 リモート型MCPサーバーは、CLIとSkillで代替できない新たな役割を担っている 1 2 3 4 操作の追跡 エージェントの操作だと、あとから記録で識別できるか 権限の制御 経由で実行される特定の操作を止められるか

    知識の鮮度 モデルが学習していない知識を継続的に補えるか 集約による効率化 MCP 複数の調査を1回の呼び出しにまとめ、少ないトークンで答えに届くか この新しい役割を、AWS MCP Serverで検証してみます!
  14. 今日話すこと 1 2 3 4 5 6 7 不要論とリモート型 AWS

    MCP Serversの概要 MCP 検証1 操作の追跡 検証2 権限の制御 検証3 知識の鮮度 検証4 集約による効率化 限界とまとめ
  15. 検証1の方法 操作で、MCP経由のリクエストが追跡できるかを検証 API 揃えたもの ロール IAM lt-mcp-verify ・リージョン ap-northeast-1 で、S3バケットを1つ作成する

    変えたもの 経路A ローカルの AWS CLI 経路B AWS MCP Server の 経路C ローカル起動の AWS API MCP Server の run_script 観測したもの CloudTrail call_aws に残った3経路の記録を全フィールドで比較
  16. 検証1の結果 CloudTrailの差分 経路A(CLI)と経路C(ローカル MCP) 経路B(AWS MCP Server) userIdentity.arn role assumed-role/lt-mcp-verify/…

    assumed-role/lt-mcp-verify/… userIdentity.invokedBy A C ・ ともフィールド自体が無い aws-mcp.amazonaws.com ・ とも手元のIP aws-mcp.amazonaws.com ) (使用された sourceIPAddress userAgent invokedBy A C A aws-cli/… C …aws-api-mcp-server… aws-mcp.amazonaws.com と sourceIPAddress が変わるのはAWS MCP Server経由だけ
  17. 経路Cは userAgent にサーバー名が入る 「ローカルMCPはCLIと見分けがつかない」という仮説は外れた "userAgent": "[Boto3/1.43.104 md/Botocore#1.43.104 … Botocore/1.43.104 md/awslabs#mcp#aws-api-mcp-server#1.5.5

    md/via/AWS-API-MCP MCPClient/claude-code#2.1.284 cfg/ro#0 cfg/consent#0 cfg/scripts#0 …]" のサーバーが、APIリクエストの Userに自分の名前と設定を書き込んでいる awslabs Agent ただし書き換えられる文字列で、IAMの条件にも使えない
  18. 見えるのは「経路」まで AWS MCP Server 自身の呼び出し記録(CallReadWriteTool)の中身 "params": { "name": "aws___run_script", "arguments":

    "[HIDDEN_DUE_TO_SECURITY_REASONS]" } どのツールを呼んだかは残るが、渡したコードの中身は残らない
  19. 今日話すこと 1 2 3 4 5 6 7 不要論とリモート型 AWS

    MCP Serversの概要 検証1 操作の追跡 MCP 検証2 権限の制御 検証3 知識の鮮度 検証4 集約による効率化 限界とまとめ
  20. 検証2の結果 経路A(CLI)→ 成功(exit=0) 経路B(AWS MCP Server)→ AccessDenied An error occurred

    (AccessDenied) when calling the DeleteBucket operation: User: arn:aws:sts::…:assumed-role/lt-mcp-verify/lt-mcp-verify-session is not authorized to perform: s3:DeleteBucket on resource: … with an explicit deny in an identity-based policy 経路C(ローカルMCP)→ 成功 "cli_command": "aws s3api delete-bucket --bucket lt-verify1-local-20260929-230813 …" "response": {"error": null, "status_code": 204, …} 同じMCPでも、ローカル起動型の削除は止まらない
  21. 今日話すこと 1 2 3 4 5 6 7 不要論とリモート型 AWS

    MCP Serversの概要 検証1 操作の追跡 検証2 権限の制御 MCP 検証3 知識の鮮度 検証4 集約による効率化 限界とまとめ
  22. 生成レポートイメージ プロンプト(抜粋) 経由で社内ツールを呼び出す構成を ゼロから構築します。以下の要件をすべて満たす構築手順を書いてください。 - ユーザー単位で、リクエスト数とトークン消費量の両方にレート制限をかける 実在しないコマンド名・パラメータ名を書かないでください。 Amazon Bedrock AgentCore

    Gateway 生成されたレポート(抜粋) を作成 ## Step 1 Policy Engine aws bedrock-agentcore-control create-policy-engine \ --region "$AWS_REGION" --name "$ENGINE_NAME" ### get-policy-engine status ACTIVE 待機条件 の が になるまで待つ 実行できる形のCLIコマンド入り手順書が返ってくる
  23. 検証3の結果 実在しないAPIの数 条件A(CLIのみ) 条件B(MCP Server) 0件 0件 回とも0 / 計132コマンド照合

    3 回とも0 / 計66コマンド照合 3 だけでも、存在しないAPIを叩くことはない CLI
  24. では根拠を示せる MCP 題材に含めた「ユーザー単位のトークン制限」について、生成結果に差が生じた 条件A(CLIのみ) 条件B(MCP Server) ターゲットでのトークン計上 の有無は不明です。検証で必ず実測し てください (TPM)は推論ターゲットにし

    か適用されません。Lambda ツールタ ーゲットには、設定はできても実際に は評価されません Lambda 本とも同旨(A/1 §9-5 ほか) 3 tokens 本とも同旨(B/3 §8-3 ほか) 3 としては成功する設定が実際には効かない、と言えたのは条件Bだけ API
  25. 今日話すこと 1 2 3 4 5 6 7 不要論とリモート型 AWS

    MCP Serversの概要 検証1 操作の追跡 検証2 権限の制御 検証3 知識の鮮度 MCP 検証4 集約による効率化 限界とまとめ
  26. serverless capability Lambda とは が失敗したときに、原因の手がかりを集めて要約して返す関数 エージェント diagnose() を呼ぶ 短いPython 4

    1 run_script 読むのは 要約された結果だけ → ← 3 AWS aws_serverless で送る 要約を返す 側(run_script の中) 2 ここでAPIを何十回も呼んで集計 CloudWatch Logs CloudTrail X-Ray 何十回ものAPI呼び出しと集計を、関数1回にまとめる 出典 Agent Toolkit for AWS User Guide「Capabilities」、2026-09-29 に help(aws_mcp) で実測
  27. 側のサンドボックスで動く意味 AWS 手元のシェルなし(AWS側のサンドボックス)で、安全に実行できる 手元で絞る(Bash と jq など) 手元のシェルが必要 – 条件キーが付かない(検証2)

    – Bash を塞ぐと使えない – 側で絞る(run_script) AWS シェルは不要 – 条件キーが付き、CloudTrail に残る – Bash を塞いでも使える(検証5) – 安全を保ったまま、トークンに載せる前に絞れる
  28. serverless capability の5つの関数 どれも読み取り専用で、自分のアカウントのリソースだけが対象 1 2 3 4 5 diagnose

    メトリクスを7日間の平常時と比べ、どこが悪いかを返す search_logs ログのエラーを種類ごとにまとめ、代表例だけ返す get_live_config Lambda と接続先の、今の設定を返す get_recent_changes 最近のデプロイと設定変更を時系列で返す get_trace_summary X-Ray のトレースから、遅い箇所とエラーの箇所を返す
  29. 検証4の方法 serverless capability で、障害の原因調査が少ないトークンで終わるかを検証 仕込んだ障害 → Lambda → DynamoDB の構成で、Lambdaのタイムアウトを3秒から1秒に変更

    「500の根本原因を調べて」と頼む(読み取り専用ロール、新規セッションで3回ずつ) API Gateway 比較した条件 条件A AWS CLI のみ 条件B AWS MCP Server(依頼文に「serverless capability を使って」と1文追加) 数えたもの 入力・出力トークン、ツール呼び出し回数、所要時間、原因を正しく特定できた回数
  30. 検証4の結果 原因の特定にかかったコスト 条件A(CLIのみ) 条件B(capability を使用) 10.7 万 15.8 万 正答

    3/3 / 呼び出し 9.3回 / $0.21 正答 3/3 / 呼び出し 10.7回 / $0.28 どちらも3回とも正解、トークンは1.5倍に増えた 入力トークンはキャッシュ読み込みを含む累計の3回平均(モデル opus)。費用は1回あたりの平均
  31. なぜ増えたのか 固定費と変動費 条件A(CLIのみ) 取り方 --query 固定費 毎ターン送る定義 や tail で絞って読む

    5,379 トークン 条件B(capability を使用) つの関数をすべて順に呼ぶ 5 約 8,830 トークン 万 7.9 万 7.9 固定費の累計(× 呼び出し回数) 4.7 変動費 調査で積み上がった分 6.1 万 万 増えた分の約65%は、capability ではなくMCPを登録した固定費 AWS MCP Server の8ツールの定義と指示文は約5,000トークン(2026-09-30 実測)。呼ばなくても毎ターン送られる
  32. 要約で落ちた情報もあった 変更前のタイムアウト値(3秒)を示せたのは、条件A 2/3、条件B 0/3 条件A 生のCloudTrail 作成時(23:07:17 JST、 ) は

    でした。23:46:11 JST の で に変わっています 条件B capability の要約 変更前の値は CloudTrail に新しい値 しか残っていないため確認できていま せん CreateFunction "timeout": 3 UpdateFunctionConfiguration A/3 の報告より(A/2 も同旨) "timeout": 1 B/3 の報告より(3本とも同旨) 要約は読む量を減らすが、捨てた情報にはたどり着けない
  33. 応答だけを比べると、読む量は28分の1 同じ情報のトークン数 ▪ 生のAPI(CLIの出力) ▪ aws_serverless の関数 filter‑log‑events 53,539 search_logs

    lookup‑events 3,147 ほか 69,333 get_recent_changes 4,179 get‑trace‑summaries 129,489 get_trace_summary 314 関数の合計で 256,362 → 9,210 トークン 5
  34. を直接呼ぶと diagnose 同じ障害中の関数を、 aws_serverless.diagnose に1回だけ診断させた "root_cause": {"resource": "lt-v4-order-fn", "type": "Lambda

    Function", "issue": "high error rate"}, "impact_chain": ["Error rate 100.0% exceeds 5% threshold"], "recommendations": ["Check Lambda logs for error details", "Review recent code deployments"] 診断が示すのは次に見るべき場所まで、タイムアウトとは言っていない 2026-09-29 15:10Z 実行、応答は2,360文字(7日間のベースラインなし)
  35. 課題と、効果が出るはずの場面 応答には上限がある(ログは代表5件、トレースは20件)。右側は未検証 今回見えた課題 登録の固定費が毎ターンかかる – 関数を順に全部呼び、ターンが増える – 要約で変更前の値が落ちた – 履歴がないと

    diagnose は大まか – MCP 効果が出るはずの場面 ログやトレースが大量にある – 断続的に失敗している – 原因が接続先にしか出ない – 7日分の平常時データがある – 読む量が固定費を上回る調査ほど、差は開くはず
  36. 今日話すこと 1 2 3 4 5 6 7 不要論とリモート型 AWS

    MCP Serversの概要 検証1 操作の追跡 検証2 権限の制御 検証3 知識の鮮度 検証4 集約による効率化 MCP 限界とまとめ
  37. を通らない操作には条件キーが付かない MCP が効くのは、AWS MCP Serverを通ったリクエストだけ Deny 条件キーが付く の – 検証2で削除を止められた

    – AWS MCP Server run_script 条件キーが付かない エージェントが bash で叩く AWS CLI – ローカル起動型のMCPサーバー – 検証2で削除が素通りした – エージェントがbashを持っている限り、IAMの制御は迂回できる 出典 AWS Security Blog「Secure AI agent access patterns to AWS resources using Model Context Protocol」
  38. を塞いで、MCPだけを許可する bash Bash だけでなく、コマンドを実行できるツールをすべて deny する { "permissions": { "deny":

    ["Bash", "PowerShell", "Monitor"], "allow": ["mcp__aws-mcp__*"] } } 塞ぐほど安全だが、エージェントにできることも減る は「MCPサーバー経由でだけAWSを触るエージェント」に限って汎用の実行手段を外す、としている。2026-09-29 実測 Bash(aws *) だけの deny は sh -c ですり抜けた AWS Security Blog
  39. は本当に不要か? MCP 開発者個人には で十分 – 自分の操作を監査する必要がない – 権限をAIと分離する必要がない – CLI

    を利用する「組織」には AI 経由なら、経路を識 別して権限を分けられる – AIが継続的に正しい情報を取得できる – 調査で読む量を減らせる(重い障害ほ ど効くはず) – ただし bashを塞がないと素通りする – AWS MCP Server