mcpField
S
secured-remote-mcp-server-on-aws

secured-remote-mcp-server-on-aws

本地服务
github.com/komination云与基础设施071 周前更新

关于 secured-remote-mcp-server-on-aws

该项目通过受 OAuth 保护的 API Gateway,公开运行在 AWS VPC 私有 Lambda 中的 MCP 服务,面向使用 AWS 和 Terraform 的开发者。它包含基础设施管理及自动部署配置。

主要功能

  1. 01部署于 VPC 私有 Lambda
  2. 02基于 Cognito 的客户端授权
  3. 03使用 Terraform 管理基础设施
  4. 04通过 GitHub Actions 和 HCP Terraform 部署
  5. 05Devcontainer 开发环境

适用场景

  1. 01通过 API 公开私有 Lambda MCP 服务
  2. 02要求客户端使用 OAuth 令牌访问
  3. 03以声明方式管理 AWS 基础设施
  4. 04使用 GitHub Actions 自动部署

MCP 相关

通过受 OAuth 保护的 API Gateway 端点提供 MCP 服务。服务使用 Streamable HTTP,并将 JSON 响应缓冲后整体返回。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

secured-remote-mcp-server-on-aws

这是一个通过带有 OAuth 认证的 API Gateway,安全公开部署在 VPC 内私有 Lambda 上的 MCP 服务的仓库。

特点:

  • 可在保护访问权限的同时,将 MCP 服务(Streamble HTTP)部署到公网
  • 作为入口点的 API Gateway 使用 Cognito 作为 Authorizer,通过客户端认证进行保护
  • 使用 Terraform 进行声明式环境管理
  • 利用 GitHub Actions 和 HCP Terraform 自动部署
  • 通过 Devcontainer 共享统一的开发环境
  • 使用 Claude Code 和 Github Copilot,并利用 AWS 官方 MCP 服务跟进最新信息

开发动机:

为了熟悉 Terraform 和 MCP,我以作品集项目为目标推进开发。

CloudTrail 和 WAF 等成本较高的资源暂不纳入范围。

架构图

目录结构

├── /.devcontainer                     # VS Code Dev Container設定
│   ├── api_connectivity_test.sh       # API接続テストスクリプト
│   ├── devcontainer.json              
│   ├── dockerfile.devcontainer        
│   ├── github_deployments_delete.sh   # GitHubデプロイメント削除スクリプト
│   └── init.sh                        # Devcontainer内AWS SSO Profile用意スクリプト
├── /.github
│   ├── /workflows
│   │   ├── pr-closed-deploy-develop.yml             # developブランチへのPRクローズ時デプロイ
│   │   ├── reusable-build-and-push.yml              
│   │   ├── reusable-plan-and-deploy-with-tfc.yml    # HCP Terraform run
│   │   ├── reusable-update-lambda.yml                # Lambda更新処理
│   │   └── reusable-validate-environment-secrets.yml # 環境変数検証
│   └── copilot-instructions.md       # GitHub Copilotカスタム指示
├── /.vscode
│   ├── mcp.json                       # MCP Server接続設定
│   └── settings.json                  
├── /terraform
│   ├── /env                           # 環境別設定
│   │   ├── /dev                       # 開発環境
│   │   │   ├── /dummy                 # Lambda初期デプロイ時のダミー
│   │   │   ├── main.tf                # リソース定義
│   │   │   ├── dummy.tf               # ダミーZip作成用
│   │   │   ├── outputs.tf             # HCP Terraform上で出力
│   │   │   ├── terraform.tf           # バックエンド設定(HCP Terraform)
│   │   │   └── variables.tf           # 変数定義
│   │   └── /prod                      # 本番環境(同構成)
│   └── /modules                       # 再利用可能モジュール
│       ├── /api_gateway               
│       ├── /cognito                   
│       ├── /lambda                    
│       ├── /lambda_layer              
│       ├── /s3                        
│       ├── /vpc                       
│       ├── /vpc_endpoint_lambda       
│       └── /vpc_endpoint_s3           
├── /sam                               # AWS SAM実装(比較検証用)
│   ├── samconfig.toml
│   └── template.yaml
├── /src                               # MCP Serverアプリケーション
│   ├── main.py                        # FastMCP実装
│   ├── pyproject.toml                 # Python プロジェクト設定
│   ├── requirements.txt               # pip依存関係
│   ├── run.sh                         # 起動スクリプト
│   └── uv.lock                        
├── .auto.tfvars.sample                # HCP Terraform変数
├── .env.sample                        # 環境変数サンプル
├── .gitignore
├── .pre-commit-config.yaml            
├── .terraform-version                 # Terraformバージョン(1.12.1)
├── architecture.png                   # アーキテクチャ図
├── bootstrap.tf                       # HCP Terraform & OIDC 初期設定
├── CLAUDE.md                          # Claude Code用プロジェクト指示
├── compose.yml                        # Devcontainer用Docker Compose設定
├── justfile                           # タスクランナー定義
└── README.md

环境搭建

前提条件:

  • 可运行 Devcontainer 的环境(推荐使用 VSCode)
  • HCP Terraform 账号(已关联 GitHub 账号)
  • AWS IAM Identity Center 用户

创建 .env:

cp .env.sample .env
cp .auto.tfvars.sample .auto.tfvars

HCP Terraform bootstrap:

  1. 在「https://app.terraform.io/app/settings/tokens」生成「TFE_TOKEN」
  2. 在「https://app.terraform.io/app/organizations/new」创建「TFE_ORGANIZATION」
  3. 创建 HCP Terraform 工作区
# devcontainerに入って以下のコマンドを実行
/app$ terraform init
/app$ terraform plan
/app$ terraform apply

# 🛠️ bootstrap.tf`を使用してHCP Terraformに以下の構造が作成されます
YOUR_ORGANIZATION/
├── projects/
    └── secured-remote-mcp-server-on-aws/
        └── workspaces/
            ├── dev-secured-remote-mcp-server-on-aws
            └── prod-secured-remote-mcp-server-on-aws

使用方法

1. 获取 OAuth 访问令牌

获取访问 API Gateway 所需的 OAuth 访问令牌:

# devcontainer内

# トークンのみ取得(AWS Secrets Managerから認証情報を取得して生成)
# 特定のAWSプロファイルを使用してトークン取得
just get-token "my-api-secret" "profile-name"

# API接続テスト(トークン取得からAPI呼び出しまでの全体テスト)
just test-api "my-api-secret" "https://{apiエンドポイント名}.execute-api.ap-northeast-1.amazonaws.com/mcp/"
2. 从 MCP 客户端使用

使用获取的令牌配置 MCP 客户端。

示例:VSCode 扩展 GitHub Copilot Agent 的配置示例(mcp.json)

{
    "servers": {
        "aws-private-lambda-for-mcp": {
            "type": "http",
            "url":  "https://{apiエンドポイント名}.execute-api.ap-northeast-1.amazonaws.com/mcp/",
            "headers": {
                "Authorization": "Bearer {上記で取得したトークン}",
                "Accept": "application/json"
            }
        }
    }
}

特别说明

  • API Gateway 不支持 Server-Sent Events (SSE) 或 HTTP 流式响应,因此需要缓冲所有结果后一次性返回
from fastmcp import FastMCP

mcp = FastMCP(
    "remote-mcp-server",
    stateless_http=True,
    json_response=True # 完全なJSONレスポンスを一度に返すために必須
)

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。