Skip to content

Migrate to Cloudflare Worker + Durable Object backend#53

Merged
liplus-lin-lay merged 6 commits intomainfrom
session/48-cloudflare-worker-do
Mar 25, 2026
Merged

Migrate to Cloudflare Worker + Durable Object backend#53
liplus-lin-lay merged 6 commits intomainfrom
session/48-cloudflare-worker-do

Conversation

@liplus-lin-lay
Copy link
Copy Markdown
Collaborator

Refs #48
Cloudflare Worker + Durable Object バックエンドへの移行。
モノレポ構成(worker/ / local-mcp/ / shared/)でスキャフォールド。
WebhookStore DO で SQLite 保存・SSE リアルタイム配信・MCP ツール提供。

Refs #50
Worker デプロイ・GitHub webhook 受信・署名検証を本番で動作確認済み。

Refs #51
ローカル stdio MCP ブリッジが Worker 経由でツール呼び出しをプロキシ。
SSE リスナーでチャンネル通知にも対応。

Refs #52
.mcpb パッケージを Cloudflare Worker 版に一本化。
ローカル events.json ベースの event-store.js を廃止。

Lin & Lay and others added 6 commits March 25, 2026 17:53
Cloudflare Workers + Durable Objects 統合アーキテクチャのモノレポスキャフォールドを追加。
#48 の仕様に基づき、3つのサブパッケージを構成:

- shared/: イベント型定義・サマリー関数(既存 event-store.js から移植)
- worker/: Cloudflare Worker + McpAgent DO(webhook 受信・SQLite 保存・MCP ツール)
- local-mcp/: ローカル stdio ブリッジ(SSE → チャンネル通知、Discord MCP パターン)

Worker は /webhooks/github, /events (SSE), /mcp の3ルート構成。
ローカルブリッジは Worker の SSE を監視し notifications/claude/channel で通知。

refs #48, #50, #51, #52

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
agents パッケージ名の変遷を解決(@cloudflare/agents → agents-sdk → agents@0.8.2)。
wrangler.toml に nodejs_compat フラグを追加。DO バインディング名を MCP_OBJECT に統一。
ローカルで wrangler dev 起動し、webhook 受信・MCP initialize・ツール一覧・ツール呼び出しの
全エンドポイントが正常に動作することを確認。

refs #48, #50

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
webhook データを保持する WebhookStore DO を McpAgent から分離。
webhook 受信 → WebhookStore に保存、MCP ツールは WebhookStore に fetch して読む構成に変更。
これにより複数の MCP セッションが同じ webhook データを参照できるようになった。

ローカルでフルフロー確認済み:
POST /webhooks/github → WebhookStore DO → get_pending_status / list_pending_events で正常取得。

refs #48, #50

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
SSE ストリームを Worker レベルから WebhookStore DO に移動。
webhook ingest 時に接続中の全 SSE クライアントにイベントをブロードキャストする仕組みを実装。
DO 内で SSE 接続を保持し、ハートビートとクリーンアップも管理。

refs #48, #50

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
ローカル stdio MCP ブリッジを Node/tsx で動作するように調整。
Worker の MCP エンドポイント(Streamable HTTP)を経由してツール呼び出しをプロキシ。
SSE リスナーでチャンネル通知にも対応。

ローカルテスト確認済み:
stdio 経由で initialize → tools/list → get_pending_status が正常動作。
Cloudflare DO 上の実データ(ping: 1, push: 2)をローカルブリッジ経由で取得できた。

refs #48, #51

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
mcp-server/server/index.js を Cloudflare Worker プロキシに全面書き換え。
ローカル events.json ベースの event-store.js を廃止。
manifest.json の user_config を events_json_path → worker_url に変更。

セッション再利用、自動リトライ、SSE チャンネル通知対応。
local-mcp/src/index.ts も同様にリファクタ。

本番 Worker 接続で動作確認済み。

refs #48

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@liplus-lin-lay liplus-lin-lay merged commit de39b19 into main Mar 25, 2026
1 check passed
@liplus-lin-lay liplus-lin-lay deleted the session/48-cloudflare-worker-do branch March 25, 2026 10:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Explore unified architecture: Cloudflare Workers + Durable Objects

1 participant