Back to tech

Hono × Cloudflare Tunnel で構築する、セキュアで軽量な自作 MCP Gateway 公開記

2 min read
Table of Contents

皆様、いかがお過ごしでしょうか。
私は北海道での初めての冬を迎え、雪の多さに驚きと感動の日々を送っています。

さて、今回はHonoとCloudflare Tunnelを組み合わせ、
自作のMCP Gatewayを構築・公開した顛末についてご紹介したいと思います。

軽量かつセキュアなAIエージェントインフラに興味がある方は、
ぜひ最後までお付き合いください。

この記事の前提知識

本記事は、MCP (Model Context Protocol) について基本的な知識があることを前提としています。

MCPについて詳しく知りたい方は、以下の記事をご参照ください。

ai.plainenglish.io
ai.plainenglish.io

MCP Gateway とは

MCP Gatewayは、MCPプロトコルを使用してモデルとクライアント間の通信を仲介するサーバーです。
AIエージェントの柔軟な運用を支える、いわば「AIエージェントの管制塔」のような存在ですね。

有名どころとしては、Dockerが提供しているDocker MCP Gatewayが挙げられます。

Docker MCP ゲートウェイ: エージェントAI Docker MCPゲートウェイのための統合された安全なインフラストラクチャ: エージェントAIのためのオープンソースの安全なインフラストラクチャ | Docker
www.docker.com
image

MCP Gatewayによる仲介には、主に以下のような利点があります。

各MCPの環境変数を一元管理できる

MCP Gatewayを使用することで、複数のMCPインスタンスの環境変数を一元的に管理できます。

文章だけではイメージしづらいかもしれませんので、図で見ていきましょう。

MCP Gatewayがない場合、
接続したいAIサービスごとに、各MCPの環境変数を設定する必要があります。
これは、多くのAIサービスを扱うようになると、なかなかの手間になりますよね。

一方、MCP Gatewayを使用すると、
MCP Gateway側で各MCPの環境変数を一括で設定すれば済みます。
Gatewayが各MCPへのリクエストを適切に中継してくれるため、
開発者や運用者にとって、管理が劇的にシンプルになります。

MCP Gateway を公開するともっと便利

いわゆるリモートMCPのように、MCP Gatewayをインターネット上に公開することで、
どこからでもMCPにアクセスできるようになります。

これが非常に便利で、例えば「別のPCからローカルのMCPにアクセスしたい」という場合でも、
MCP GatewayのURLを指定するだけでOKです。
開発環境と実行環境を分離できるのは、とても嬉しいポイントではないでしょうか。

作ってみた

というわけで、HonoとCloudflare Tunnelを使ってMCP Gatewayを自作してみました。

Dockerが提供しているものも非常に便利ですが、
Docker Desktopが必要だったり、Dockerが認めているMCPサーバーしか使えなかったりと、
やや制約が多い印象を受ける場面もありました。

そこで、「もっと軽量でシンプルなMCP Gatewayが欲しい!」という思いから、
Honoの高速性とCloudflare Tunnelのセキュアな公開機能を活用して、独自のGatewayを構築した次第です。

GitHubリポジトリはこちらです。

GitHub - Momijinn/mcp-hono-gateway
github.com
image

2026/01/27現在、以下のMCPを設定しています。

  • server-time ( mcp-server-time )
  • aws-pricing ( awslabs.aws-pricing-mcp-server@latest )
  • aws-knowledge ( https://knowledge-mcp.global.api.aws )
  • context7 ( @upstash/context7-mcp )
  • yfmcp ( yfmcp@latest)

上記以外にもMCPを追加したい場合は、GitHubリポジトリのREADMEをご参照ください。

GitHub - Momijinn/mcp-hono-gateway
github.com
image

起動方法

起動方法については、GitHubリポジトリのREADMEに詳細が記載されています。
ぜひこちらをご覧ください。

mcp-hono-gateway/README.md at main · Momijinn/mcp-hono-gateway
github.com
image

インターネットへの公開

Cloudflare Tunnelを使ってインターネットに公開しています。

Cloudflare Tunnelで払い出されるTUNNEL TOKENを、
.envファイルのCLOUDFLARED_TUNNEL_TOKENに設定するだけで簡単に公開できます。
これにより、外部からのセキュアなアクセス経路を確立できます。

mcp-hono-gateway/.env.example at main · Momijinn/mcp-hono-gateway
github.com
image

セキュリティ

何かしらのアクセス制限をしないと、
誰でもMCP Gatewayにアクセスできてしまいます。
これでは、せっかくの個人的な利用価値が薄れてしまうため、
Honoで簡単に導入できるBearer認証を採用しました。

READMEにも記載の通り、
.envファイルのBEARER_TOKENに任意のトークンを設定してください。
(空欄にすると認証なしとなりますので、運用にはご注意を!)

mcp-hono-gateway/.env.example at main · Momijinn/mcp-hono-gateway
github.com
image

余談: 動作確認方法

READMEにはcurlを使った動作確認方法が記載されていますが、
ここではGUIで直感的に操作できる別の方法もご紹介します。

GitHub - Momijinn/mcp-hono-gateway
github.com
image

MCP Inspector

MCP Inspectorを使うことで、GUIでMCP Gatewayの動作確認が可能です。
開発中のデバッグや、MCPの機能確認に非常に役立ちます。

ターミナルで以下のコマンドを実行してください。

npx @modelcontextprotocol/inspector

これでInspectorが起動します。

あとはURL欄にMCP GatewayのURLを入力し、
必要に応じてBearerトークンを設定すれば準備完了です。

Toolsタブから、MCPが提供している様々な機能を試すことができます。
まるでAIエージェントと直接会話しているかのような感覚で、
MCPの挙動を詳しく観察できるでしょう。

まとめ

今回は、Honoの軽量性とCloudflare Tunnelのセキュアな公開機能を活用し、
自作のMCP Gatewayを構築・公開した事例をご紹介しました。

AIエージェントの運用をより柔軟に、そしてセキュアにしたいと考えている方の
一助となれば幸いです。

ぜひ一度、お試しいただければと思います。
それでは、また次回の記事でお会いしましょう。

参考リンク