Skip to content

test(mcp-server): CI guard for proxy/Worker search schema drift#160

Merged
liplus-lin-lay merged 1 commit into
mainfrom
159-testmcp-server-guard-proxy-search-schema-against-worker-param-drift
Jun 14, 2026
Merged

test(mcp-server): CI guard for proxy/Worker search schema drift#160
liplus-lin-lay merged 1 commit into
mainfrom
159-testmcp-server-guard-proxy-search-schema-against-worker-param-drift

Conversation

@liplus-lin-lay

Copy link
Copy Markdown
Member

@

概要

proxy(mcp-server/server/index.js) の静的 search スキーマが Worker(src/mcp.ts zod) の param と一致することを CI で担保するガードを追加。drift で build を失敗させる。挙動は不変。

背景 / 原因(クラス)

方針

  • 不採用: proxy が tools/list を Worker へ委譲 → 起動時に auth/network 強制で UX 退行。却下。
  • 採用: CI で proxy と Worker の search param 集合の厳密一致を assert。忘れ得る手順を、必ず発火する構造(CI)へ置換。

変更

  • scripts/check-schema-drift.mjs(新規): Worker zod の param 集合と proxy inputSchema.properties の集合を抽出し厳密一致を assert。空抽出の誤合格を防ぐ sanity guard 付き。drift 時は欠落/余剰を名指しして exit 1。
  • .github/workflows/ci.yml: test job に node scripts/check-schema-drift.mjs を追加。
  • docs/0-requirements{,.ja}.md: スキーマ整合の不変条件を「1. MCP Surface」に記録。

検証

  • 同期済み現状: OK / exit 0(16 param 一致)。
  • proxy 側で graph_hops を改名: exit 1、missing: graph_hops / extra: graph_hopsZZ を報告 → revert クリーン。

release

  • type = patch(出荷物の挙動追加ではなく開発時 CI ガードの追加、runtime 不変)。

Closes #159
@

Add scripts/check-schema-drift.mjs and run it in CI to assert the proxy
static search schema (mcp-server/server/index.js TOOLS) mirrors the Worker
zod schema (src/mcp.ts). Exact param-set match; drift fails the build.

proxy は tools/list を Worker へ転送せず静的スキーマを返すため、Worker に param を
足して proxy を忘れると黙って出荷される穴があった(graph_expand が v0.9.0 でこれで
欠落 = gh#157)。忘れ得る手順を CI ガード(構造)へ置換する。

Also record the schema-parity invariant in docs/0-requirements{,.ja}.md.

Refs #159
@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Updated (UTC)
✅ Deployment successful!
View logs
github-rag-mcp 13e1259 Jun 14 2026, 07:24 AM

@liplus-lin-lay liplus-lin-lay left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AI セルフレビュー (auto mode / self-review only)

正しさ: drift-check は Worker zod(src/mcp.ts, 16 param) と proxy(mcp-server/server/index.js inputSchema.properties) の param 集合を抽出し厳密一致を判定。陽性=OK/exit0、陰性(graph_hops 改名)=exit1 で欠落/余剰を名指し、を実機確認。空抽出での誤合格は sanity guard(query/repo 必須・size>=5)で封鎖。CI 全 pass(test 20s / CI gate / Workers Builds)。

回帰リスク: runtime 不変。追加は CI スクリプト + ci.yml step + docs のみで、Worker/proxy のレスポンスを変えない。cd.yml は release:published のみ発火=マージで npm 公開は起きない。

later / accepted:

  • (later) docs ### search Parameters のプロセ列が別途古い(16中6欠落)。本 PR に混ぜず別タスクへ切り出す。
  • (accepted) 抽出は正規表現でソース構造(8スペース字下げ)依存。構造変更時は sanity guard が fail して気づける安全側設計ゆえ、完全 AST パースは過剰として不採用。

release: type=patch。npm 再公開(v0.9.2 相当)は Master の go 待ちで未実行。

@liplus-lin-lay liplus-lin-lay merged commit edf2726 into main Jun 14, 2026
3 checks passed
@liplus-lin-lay liplus-lin-lay deleted the 159-testmcp-server-guard-proxy-search-schema-against-worker-param-drift branch June 14, 2026 07:26
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.

test(mcp-server): guard proxy search schema against Worker param drift

1 participant