AWS Lambda×MCPで自社リソースをAI連携する実装ガイド

DX・デジタル活用

2026.08.03

#Lambda

#MCP

#AWS

AWS Lambda×MCPで自社リソースをAI連携する実装ガイド

AWS Lambda×MCPで自社リソースをAI連携する実装ガイド

生成AI/AIエージェントに社内データや業務システムを安全に使わせたい。しかしAIに直接AWS権限やDB接続情報を渡すのはリスクが高い。MCP(Model-Consuming Protocol)を介し、AWS Lambdaを中間層に置く構成は、権限分離・監査・承認フローを実現しやすく、本番運用に向く実装パターンです。本記事では設計方針とともに、実装レベルの例(Lambda入出力、IAMポリシー、MCPツール説明、ログ項目)を示します。

この記事でわかること

  • AWS LambdaをMCPツールとして公開する基本アーキテクチャ
  • MCP Client / MCP Server / Lambda Tool MCP Server の関係
  • 具体的なLambda入出力例・IAMポリシー例・MCPツール説明文例
  • 監査ログ・承認フロー・プロンプトインジェクション対策の実践ポイント

MCPを使ってAIと自社リソースを連携するとは

MCPとは

MCPはAIエージェントが外部ツールを見つけ、説明を読み、呼び出すための標準的な枠組みです。Claude DesktopやCursor、Amazonのエージェント基盤などがMCP Clientに相当します。MCP Serverはツール一覧や実行エンドポイントを提供します。

安全な実行境界

重要なのは「AIが何を実行できるか」を明確に制限すること。Lambda関数単位で責務を分離し、IAMで最小権限を与え、入力検証とログ出力ルールを守ることで安全性を担保します。

全体アーキテクチャ(概略)

  • ユーザー → AIエージェント(MCP Client)
  • MCP Server(ツールカタログ) → Lambda(AWS上でツール実行)
  • Lambda → S3/DynamoDB/RDS/社内API/SaaS
  • 監査基盤:CloudWatch Logs / CloudTrail / X-Ray / EventBridge

実装ハンズオン(ステップ・バイ・ステップ)

Step 1:ユースケースを決める(まずは参照系)

PoCはS3ドキュメント検索や顧客情報の照会など読み取り専用から始める。更新・削除は承認フローを設けてから段階的に開放する。

Step 2:Lambda関数の入出力例

例:S3上の文書検索(Python)

def handler(event, context):
    # event: {"query":"契約更新手順", "max_results":5, "caller":"agent-x"}
    query = event.get("query","")
    # validate input (length, prohibited chars)
    # search logic -> results list
    return {
      "status":"ok",
      "query": query,
      "results":[
        {"key":"docs/policy.pdf", "snippet":"...要約..." },
        ...
      ]
    }

Step 3:入力スキーマとエラー形式

入力はJSON Schemaで定義し必ずサーバー側で検証。エラーは統一フォーマットにする。

{
  "error": {"code":"InvalidInput","message":"query is empty","retriable":false}
}

Step 4:読み取り専用IAMポリシー例(S3)

{
  "Version":"2012-10-17",
  "Statement":[
    {
      "Effect":"Allow",
      "Action":["s3:GetObject","s3:ListBucket"],
      "Resource":[
        "arn:aws:s3:::example-company-docs",
        "arn:aws:s3:::example-company-docs/*"
      ]
    }
  ]
}

Lambda実行ロールはこのようなポリシーのみをアタッチし、ワイルドカードは避ける。

Step 5:MCPツール説明文(AIへ提示するメタデータ)

{
  "name":"search_internal_docs",
  "description":"社内ドキュメントからキーワード検索し要約を返します。参照専用。更新/削除は行いません。個人情報はマスキングされます。",
  "input_schema":{
    "type":"object",
    "properties":{
      "query":{"type":"string"},
      "max_results":{"type":"integer"}
    },
    "required":["query"]
  },
  "output_schema":{ "type":"object" }
}

説明には「参照専用」「禁止事項(例:個人情報の露出禁止)」を明記すること。

Step 6:MCP登録・接続

Lambda Tool MCP Serverに上記メタデータを登録し、MCP Client(Claude等)からツールカタログに表示されるようにする。クライアント固有の認証設定は導入先に合わせる。

Step 7:監査ログと監視設計

CloudWatch Logsに以下項目を残す:

  • timestamp
  • caller_agent_id(MCP Clientの識別子)
  • tool_name
  • input_hash(機密情報はハッシュ化)
  • result_summary(フルデータは保存しない)
  • execution_id / request_id

CloudTrailでロールアクティビティ、EventBridgeで承認イベント、X-Rayで遅延分析を行う。

本番運用で必須の設計ポイント

最小権限の原則

関数ごとにロールを分割。参照/作成/更新/削除でロールを分離し、本番環境は別アカウントまたは別プレフィックスで管理。

承認フローの実装例

更新系操作はLambdaが「実行提案」を作成し、Step Functions→Slack承認→承認後に実行Lambdaを呼ぶ。承認ログをEventBridgeに渡す。

プロンプトインジェクション対策

  • ホワイトリストで許可された操作のみ実行
  • 入力は必ずスキーマ検証・正規化
  • 外部テキストに含まれる命令は無視するルールをLambdaに組み込む

コスト・パフォーマンス注意点

  • AIは複数ツールを呼びやすい → 不要呼び出しを防ぐツール説明と入力制限を厳格に
  • コールドスタート対策:軽量ランタイム/Provisioned Concurrency検討
  • 冪等性:同じ操作を複数回実行しても問題にならないようトークン設計

よくある失敗パターン(アンチパターン)

  • AIに広範な管理者権限を与える
  • 1つのLambdaに参照・更新・削除を詰め込む
  • AI生成のSQLやAPIパラメータを無検証で実行する
  • ログに機密情報を平文で出力する
  • 更新・削除操作に承認フローを入れていない

FAQ

MCPを使わずAPI Gatewayだけで連携しても良いか?

可能だが、MCPはAI側でツールの発見・説明理解・自動選択ができるため、複数クライアント対応やツール管理が容易になる点で有利です。

既存LambdaをそのままMCPツールにできるか?

多くは可能。ただし入力スキーマ・出力形式・ログ・権限をAI利用前提で見直す必要があります。

本番導入前に最低限確認すべき項目は?

IAM最小権限、入力バリデーション、監査ログ設計、シークレット管理(Secrets Manager)、承認フロー、プロンプトインジェクション対策、コスト上限の設定。

まとめ

AWS LambdaをMCP連携の中間層に使うと、AIエージェントに社内リソースを安全に利用させるための「実行境界」を作れます。まずは読み取り専用ユースケースでPoCを行い、IAM・監査・承認フローを整備したうえで更新系へ段階的に拡張してください。実装例(入出力・ポリシー・ツール説明)は本稿のテンプレートを使えば短期間で形にできます。

必要であれば、貴社環境(VPC、RDS、SaaS連携の有無)に合わせた設計レビューやテンプレート(CloudFormation / CDK)サンプルもご提供できます。お気軽に相談ください。

Contact Us

お問い合わせ

お気軽にお問い合わせください

ご相談・お見積もり