🐡

Cloudflare + Honoで作る最速リモートMCPサーバー

に公開

リモートMCPサーバー、思ったより簡単にデプロイできます。
この記事では、Cloudflare WorkersとHonoを使って、5分でMCPサーバーを公開する方法を紹介します。

なぜ Cloudflare + Hono?

技術 メリット
Cloudflare Workers 無料枠で十分、設定ファイル1つでデプロイ、世界中のエッジで高速レスポンス
Hono 軽量・高速、Cloudflare最適化済み、@hono/mcpでMCP対応が簡単

サーバー管理不要、コマンド1つでデプロイ。個人開発に最適な組み合わせです。

アーキテクチャ

Claude DesktopなどのMCPクライアントから、Streamable HTTP経由でCloudflare Workers上のサーバーにリクエストが届きます。

サーバー内部は3層構成:

  1. Hono - HTTPリクエストを受け取るWebフレームワーク
  2. @hono/mcp - MCPプロトコルを処理するミドルウェア
  3. factorizeツール - 実際のビジネスロジック(素因数分解)

たった1ファイル、約50行で完結するシンプルな構成です。

作るもの

素因数分解ツールを提供するMCPサーバーです。

12 → [2, 2, 3](割り算3回)

前提条件

  • Node.js v18以上
  • Cloudflareアカウント(無料)

セットアップ

mkdir simple-mcp-server && cd simple-mcp-server
npm init -y
npm install hono @hono/mcp @modelcontextprotocol/sdk zod
npm install -D wrangler typescript @cloudflare/workers-types

wrangler.toml

name = "simple-mcp-server"
main = "src/index.ts"
compatibility_date = "2024-01-01"

tsconfig.json

{
  "compilerOptions": {
    "target": "ES2022",
    "module": "ESNext",
    "moduleResolution": "bundler",
    "strict": true,
    "types": ["@cloudflare/workers-types"]
  },
  "include": ["src/**/*"]
}

src/index.ts

import { Hono } from "hono";
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { createMcpHandler } from "@hono/mcp";
import { z } from "zod";

const app = new Hono();

// 素因数分解
function factorize(n: number): { factors: number[]; divisionCount: number } {
  if (n === 1) return { factors: [1], divisionCount: 0 };

  const factors: number[] = [];
  let remaining = n;
  let count = 0;

  while (remaining % 2 === 0) {
    factors.push(2);
    remaining /= 2;
    count++;
  }

  let d = 3;
  while (d * d <= remaining) {
    while (remaining % d === 0) {
      factors.push(d);
      remaining /= d;
      count++;
    }
    d += 2;
  }

  if (remaining > 1) factors.push(remaining);

  return { factors, divisionCount: count };
}

// MCPサーバー設定
const server = new McpServer({ name: "simple-mcp-server", version: "1.0.0" });

server.tool(
  "factorize",
  "正の整数を素因数分解します",
  { number: z.number().int().min(1).max(999999999999999) },
  async ({ number }) => {
    const { factors, divisionCount } = factorize(number);
    return {
      content: [
        {
          type: "text" as const,
          text: `${number}の素因数分解結果:\n素因数: [${factors.join(", ")}]\n割り算回数: ${divisionCount}回`,
        },
      ],
    };
  }
);

// MCPエンドポイント
app.all("/mcp", createMcpHandler(server));

export default app;

ローカルで動かす

npx wrangler dev

http://localhost:8787/mcp でMCPサーバーが起動します。

デプロイ

npx wrangler deploy

これだけです。URLが発行されるので、MCPクライアントから接続できます。

Claude Desktopから接続

~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "simple-mcp-server": {
      "url": "https://your-worker.your-subdomain.workers.dev/mcp"
    }
  }
}

まとめ

  • Cloudflare Workers + Hono + @hono/mcp で最小構成のMCPサーバー
  • 認証なしのシンプルな構成(本番では認証を追加推奨)
  • 無料枠で十分動作

次のステップへ

この実装はあえてシンプルにしています。ここから発展させて、あなただけのMCPサーバーを作ってみてください。

発展アイデア:

やりたいこと 実装のヒント
認証を追加 HonoのbearerAuthミドルウェア、またはCloudflare Access
データを保存 Cloudflare KV、D1(SQLite)、R2(オブジェクトストレージ)
外部APIと連携 天気API、翻訳API、ニュースAPIなどを呼び出すツール
複数ツールを追加 フィボナッチ、素数判定、単位変換など

MCPサーバーは「AIに新しい能力を与える」仕組みです。
自分の業務やホビーに合わせたツールを作れば、Claudeがあなた専用のアシスタントになります。

リポジトリ: GitHub

コラボスタイル Developers

Discussion