Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥

Cloudflareで認証付きリモートMCPサーバーをつくりました

Avatar for nyawach nyawach
November 12, 2025
140

 Cloudflareで認証付きリモートMCPサーバーをつくりました

2025/11/12 Cloudflare Workers Tech Talk in Fukuoka #1

Avatar for nyawach

nyawach

November 12, 2025
Tweet

Transcript

  1. 技術スタック Cloudflare ・ Workers - 実行環境 ・ D1 - データベース

    ・ Access - アクセス制限 アプリケーション ・ @modelcontextprotocol/sdk ・ Hono / Hono MCP ・ Drizzle ・ TypeScript
  2. アプリケーション実装 ・ 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);
  3. アプリケーション実装 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", });