1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SupergatewayでリモートMCPサーバーを構築する方法【AWS App Runner × Lambda】

Last updated at Posted at 2025-11-19

🚀 はじめに

こんにちは。
Claude の MCPサーバーをリモートで動かしたいと思い立ち、今回は Supergateway を利用して HTTP ベースの MCP サーバーを構築しました。

  • なぜ Supergateway を使うのか
  • なぜ App Runner を選んだのか
  • Lambda との連携でどう改善できるのか

この記事では、実装の手順・構成図・起動のクセ まで含めて詳しく解説します。

実際のコードはこちら👇
https://github.com/witter1954/supergateway-aws-document-server


💡 Supergatewayとは?

従来 MCP サーバーは stdio ベースで動作していましたが、Supergateway を使うと、

  • stdio → HTTP
  • stdio → HTTP Streamable
  • stdio → SSE

など、複数の通信方式へ変換できます。

つまり、ローカルに閉じた MCP サーバーを“リモート化”できるツールです。

公式 GitHub:
https://github.com/supercorp-ai/supergateway


🌏 今回の実装環境(App Runner採用の理由)

最初は Lambda 単体で完結させようとしましたが、supergateway のプロセス管理や常時起動が必要になる点から断念しました。

そこで今回は AWS App Runner を選択し、下記のような構成をしました。

  • デプロイ:Docker コンテナ
  • ホスティング:AWS App Runner
  • 役割:常時稼働型の MCP リモートサーバー

App Runner は ECS より手軽で、“軽い常時稼働アプリ” に向いています。


🏗️ アーキテクチャ構成(起動制御つき)

App Runner は「常時起動」を前提としたサービスですが、コスト面から Lambda で起動・停止を制御 する構成を取りました。

🔧 実装ポイント

  • resume Lambda:
    • 外部リクエストを受ける
    • App Runner が落ちていれば起動
    • 起動後は App Runner へプロキシ
  • pause Lambda:
    • 過去15分リクエストがなければ App Runner を停止
    • EventBridge でトリガー

Claude Desktop の MCP カスタムコネクタには、resume のURLを指定します。

構成図はこちら。
初めてのGraphVizです。

claude_desktop_apprunner_proxy.png


📝 実装で得た知見

1. App Runner の起動は 2〜3分かかる

起動直後は MCP の Initialize が通りません。
一度起動待ち → 再接続 が必要。

2. Lambdaのみで完結は難しい

supergateway を detach して動かそうとしましたが、Lambda の制約上、実用は厳しめ。

3. App Runnerは個人用途でも優秀

“軽い常時稼働・外部公開” の用途には非常に便利。

4. 起動/停止制御は専用アプリにまとめるのもアリ

将来的には Next.js や軽量APIにまとめるとさらに安定します。


1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?