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
0
170
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
830
Featured
See All Featured
Java REST API Framework Comparison - PWX 2021
mraible
34
9.1k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
130
ラッコキーワード サービス紹介資料
rakko
0
2M
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Embracing the Ebb and Flow
colly
88
4.9k
How to Ace a Technical Interview
jacobian
281
24k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
115
100k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
230
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
870
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
0
170
Designing Experiences People Love
moore
143
24k
Agile that works and the tools we love
rasmusluckow
331
21k
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! 🍜