Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Cloudflareで認証付きリモートMCPサーバーをつくりました
Search
nyawach
November 12, 2025
0
150
Cloudflareで認証付きリモートMCPサーバーをつくりました
2025/11/12 Cloudflare Workers Tech Talk in Fukuoka #1
nyawach
November 12, 2025
Tweet
Share
More Decks by nyawach
See All by nyawach
ts-morphを使ってコードリプレイスとASTへのハードルを下げる!
nyawach
5
820
Featured
See All Featured
Code Review Best Practice
trishagee
73
19k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.6k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.3k
GitHub's CSS Performance
jonrohan
1032
470k
Done Done
chrislema
186
16k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.8k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.6k
Stop Working from a Prison Cell
hatefulcrawdad
273
21k
Automating Front-end Workflow
addyosmani
1371
200k
Building Flexible Design Systems
yeseniaperezcruz
329
39k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Transcript
Cloudflareで認証付き リモートMCPサーバーを つくりました 🍜 Cloudflare Workers Tech Talk in Fukuoka
#1
ひめ 姫野 佑介 / Yusuke Himeno 株式会社マネーフォワード カードプロダクト開発部 フロントエンドエンジニア リーダー
福岡在住。Web技術全般が好き。 X: @_hyme_ GitHub: nyawach
さて、突然ですが、
ラーメンは好きですか?
わたしは大好きです
レビューを貯めてきました 食べログやRetty、noteでの記事投稿などでのレビューが溜まってきた
とあるSlackチャンネルにて
どうせなら ・ 使ったことない技術を使いたい ・ リモートMCPサーバーにして設定が楽になるようにしたい ・ ただ、アクセス制御をかけたい ・ 変なレビューコメントがでたら怒られそう
どうせなら ・ 使ったことない技術を使いたい ・ リモートMCPサーバーにして設定が楽になるようにしたい ・ ただ、アクセス制御をかけたい ・ 変なレビューコメントがでたら怒られそう Cloudflare
ですべて叶いそう!
デモ動画
技術スタック Cloudflare ・ Workers - 実行環境 ・ D1 - データベース
・ Access - アクセス制限 アプリケーション ・ @modelcontextprotocol/sdk ・ Hono / Hono MCP ・ Drizzle ・ TypeScript
Cloudflare D1 ・ note、食べログ、Rettyから頑張って引っ張ってくる ・ Cloudflare D1へ頑張って保存
Cloudflare Access Zero Trust セキュリティで、インフラストラクチャ、セルフホスト型、SaaS アプリ ケーションにアクセスできるユーザーを管理(ダッシュボードの説明そのまま) タイプが色々あるが、今回はSaaSタイプを選択
Cloudflare Access ログイン方法 OIDC対応のIdPを設定可能 今回はデフォルトで提供されている Onetime PINを利用
Cloudflare Access ポリシー設定 以下のようにルールを設定 ・ セレクター: Email ・ 値: 特定のメールアドレス数件
認証クライアントの実装 Exampleがある remote-mcp-cf-access - cloudflare/ai
アプリケーション実装 ・ McpServer 初期化 ・ API(店舗検索)を登録 ・ HonoとHono MCPで Streamable
HTTP配信 import { StreamableHTTPTransport } from "@hono/mcp"; const app = new Hono(); app.all("/mcp", async (c) => { const transport = new StreamableHTTPTransport(); await mcpServer.connect(transport); return transport.handleRequest(c); }); import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { Hono } from "hono"; import { schema, handler, } from "./api/search-restaurants"; const mcpServer = new McpServer({ name: "Ramen Review Search MCP Server", version: "1.0.0", }); mcpServer.tool("search_restaurant", schema, handler);
アプリケーション実装 OAuthProvider でラップしたものを default export https://github.com/cloudflare/workers-oauth-provider // ... import {
OAuthProvider } from "@cloudflare/workers-oauth-provider" export default new OAuthProvider({ apiHandlers: { "/mcp": { fetch: app.fetch as ExportedHandlerFetchHandler<unknown, unknown>, }, }, defaultHandler: { fetch: handleAccessRequest as ExportedHandlerFetchHandler<unknown, unknown>, }, authorizeEndpoint: "/authorize", clientRegistrationEndpoint: "/register", tokenEndpoint: "/token", });
動作確認 Cursor設定 Remote MCPに対応してないため、 mcp-remote コマンドで実行 { "servers": { "ramen-mcp":
{ "command": "npx", "args": [ "-y", "mcp-remote", "<URL>" ] } } }
動作確認 承認画面が表示される
動作確認 メールアドレスを入力 とどいたメールからOTPを入力
🎉
まとめ ✅ アクセス制限付きのリモートMCPサーバーをCloudflareプロダクト群で つくれた ✅ サンプルも豊富なので気軽につくれる環境がある
Thank you! 🍜