Skip to content

witter1954/supergateway-aws-document-server

Repository files navigation

AWS Documentation MCP Server (Remote)

AWS Documentation MCP Server をリモート化し、Claude.ai から HTTP 経由で利用できるようにするプロジェクトです。

📋 概要

このプロジェクトは、AWS Documentation MCP Server を AWS App Runner と Lambda Function URL を使用してリモートホストします。自動起動・停止機能により、使用時のみ課金される仕組みになっています。

🏗️ アーキテクチャ

Claude.ai (Client)
    ↓ (HTTP POST)
Lambda Function URL (auto_resume)
    ↓ (Proxy)
App Runner (Supergateway + AWS Docs MCP Server)
    ↑
EventBridge (定期実行) → Lambda (auto_pause) ← CloudWatch Metrics

コンポーネント

  1. App Runner

    • Supergateway (stateful モード) + AWS Documentation MCP Server
    • Docker コンテナでホスト
    • 自動スケーリング対応
  2. Lambda Function (auto_resume)

    • Function URL で HTTP リクエストを受信
    • App Runner へリクエストをプロキシ
    • App Runner が停止中の場合は自動起動
  3. Lambda Function (auto_pause)

    • EventBridge で定期実行(5分ごと)
    • CloudWatch Metrics から過去5分間のリクエスト数を確認
    • リクエストがなければ App Runner を停止
  4. CloudWatch Metrics

    • App Runner の Requests メトリクスを監視
  5. AWS CDK (Python)

    • 全リソースをコード管理

📁 プロジェクト構造

supergateway-aws-document-server/
├── README.md
├── CLAUDE.md                     # プロジェクト仕様書
├── Dockerfile                    # Supergateway + AWS Docs MCP
├── .gitignore
├── app.py                        # CDK app entry point
├── cdk.json
├── requirements.txt              # CDK dependencies
├── requirements-dev.txt
├── stacks/
│   ├── __init__.py
│   ├── config.py                 # 設定ファイル
│   └── aws_docs_mcp_stack.py     # メインスタック
└── lambda/
    ├── auto_resume/
    │   ├── lambda_function.py
    │   └── requirements.txt
    └── auto_pause/
        ├── lambda_function.py
        └── requirements.txt

🚀 デプロイ手順

1. 前提条件

# Python 3.11 以上
python --version

# AWS CLI の設定
aws configure

# AWS CDK CLI のインストール
npm install -g aws-cdk

# Docker のインストール(Docker Desktop など)
docker --version

2. 依存関係のインストール

# Python 仮想環境の作成
python -m venv .venv

# 仮想環境の有効化
source .venv/bin/activate  # macOS/Linux
# または
.venv\Scripts\activate  # Windows

# 依存関係のインストール
pip install -r requirements.txt

3. CDK Bootstrap(初回のみ)

cdk bootstrap

4. デプロイ

# スタックのデプロイ
cdk deploy

# 確認プロンプトで "y" を入力

デプロイが完了すると、以下の情報が出力されます:

  • AutoResumeFunctionUrl: Lambda Function URL(Claude.ai で使用)
  • AppRunnerServiceUrl: App Runner の URL
  • その他の ARN 情報

5. Claude.ai での設定

デプロイ完了後、Claude.ai の MCP 設定に以下を追加:

{
  "mcpServers": {
    "aws-documentation": {
      "url": "https://YOUR_FUNCTION_URL.lambda-url.ap-northeast-1.on.aws",
      "transport": {
        "type": "http"
      }
    }
  }
}

YOUR_FUNCTION_URLAutoResumeFunctionUrl の出力値に置き換えてください。

🔧 設定のカスタマイズ

stacks/config.py で以下の設定を変更できます:

App Runner の設定

APPRUNNER_CONFIG = {
    "service_name": "supergateway-aws-docs-mcp",
    "cpu": "1024",      # 1 vCPU
    "memory": "2048",   # 2 GB
    "port": 8000,
    # ...
}

Lambda の設定

AUTO_RESUME_CONFIG = {
    "timeout_seconds": 300,  # 5分
    "max_wait_seconds": 180, # 起動待機時間
    # ...
}

AUTO_PAUSE_CONFIG = {
    "idle_minutes": 5,  # アイドル時間のしきい値
    # ...
}

EventBridge の設定

EVENTBRIDGE_CONFIG = {
    "schedule_expression": "rate(5 minutes)",  # 5分ごと
    # または "cron(*/5 * * * ? *)"
}

🧪 動作確認

Lambda Function URL でのテスト

curl -X POST https://YOUR_FUNCTION_URL.lambda-url.ap-northeast-1.on.aws \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/list"
  }'

App Runner の状態確認

# サービス情報の取得
aws apprunner describe-service \
  --service-arn <ServiceArn>

# ログの確認
aws logs tail /aws/apprunner/<ServiceName> --follow

Lambda 関数のログ確認

# auto_resume のログ
aws logs tail /aws/lambda/aws-docs-mcp-auto-resume --follow

# auto_pause のログ
aws logs tail /aws/lambda/aws-docs-mcp-auto-pause --follow

📊 コスト試算

  • App Runner: 停止中は課金なし、稼働時のみ課金

    • CPU: 1 vCPU = $0.064/hour
    • メモリ: 2 GB = $0.007/hour
    • 合計: 約 $0.071/hour(稼働時のみ)
  • Lambda:

    • Function URL: 無料枠内
    • 実行時間: 無料枠内(月間100万リクエスト)
  • CloudWatch: メトリクス取得(無料枠内)

  • EventBridge: 定期実行(無料枠内)

想定コスト: 月額 $5-10 程度(使用頻度による)

🛠️ メンテナンス

スタックの更新

# 変更内容の確認
cdk diff

# デプロイ
cdk deploy

スタックの削除

cdk destroy

注意: App Runner サービスと Lambda 関数が削除されます。

📝 トラブルシューティング

Docker イメージのビルドエラー

# Docker が起動しているか確認
docker ps

# Docker Desktop を再起動

App Runner の起動タイムアウト

  • stacks/config.pyMAX_WAIT_SECONDS を増やす
  • 初回起動は2-3分かかる場合があります

Lambda 関数のタイムアウト

  • stacks/config.pytimeout_seconds を調整

🔗 参考リンク

📄 ライセンス

このプロジェクトは MIT ライセンスの下で公開されています。

🤝 コントリビューション

プルリクエストやイシューの報告を歓迎します。


注意: このプロジェクトは AWS リソースを作成するため、料金が発生する可能性があります。使用後は必要に応じてリソースを削除してください。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published