Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Cloudflareで認証付きリモートMCPサーバーをつくりました
Search
nyawach
November 12, 2025
230
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Cloudflareで認証付きリモートMCPサーバーをつくりました
2025/11/12 Cloudflare Workers Tech Talk in Fukuoka #1
nyawach
November 12, 2025
More Decks by nyawach
See All by nyawach
ts-morphを使ってコードリプレイスとASTへのハードルを下げる!
nyawach
5
880
Featured
See All Featured
The browser strikes back
jonoalderson
0
1.6k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
440
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
420
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
490
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Visualization
eitanlees
152
17k
Product Roadmaps are Hard
iamctodd
55
12k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
2
3.8k
We Have a Design System, Now What?
morganepeng
55
8.3k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
250
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
500
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
220
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! 🍜