test(dogfood): strengthen MCP HTTP e2e + prove serve-side self-connection (#3167)#3269
Merged
Merged
Conversation
…tion (#3167) P3 — showcase-mcp-http-identity.dogfood.test.ts: add two assertions the mcp-http-identity proof lacked: - MCP query_records id-set == REST /data id-set for the same principal (the two surfaces are ONE admission, not two independently-scoped ones); - by-id get_record is RLS-scoped too — a member cannot fetch another owner's row. P2 — showcase-mcp-self-connection.dogfood.test.ts (new): the #3167 optional extension, "the platform connecting to itself". Hand-wired post-boot (not the declarative-at-boot form, which #3167 says must not make the dogfood gate timing-sensitive): mint an osk_ key, point connector-mcp at the app's own /api/v1/mcp over real HTTP, and prove it discovers + calls its own tools — while an unauthenticated self-connection is refused (ADR-0101 holds even to itself). Test-only (private @objectstack/dogfood gate). mcp dogfood 11/11. Refs #3167, ADR-0096, ADR-0101. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0115eg8dAaCfWaDYYAm3ma36
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Contributor
📓 Docs Drift CheckThis PR changes 1 package(s): 2 hand-written doc(s) reference the affected code and may need an implementation-accuracy re-verification:
|
os-zhuang
marked this pull request as ready for review
July 19, 2026 13:47
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What & why
两个 dogfood 增强,收尾 #3167 serve 侧 MCP 的证明面。纯测试改动(私有
@objectstack/dogfood门包,无 changeset)。P3 — 强化 HTTP 身份准入 e2e(
showcase-mcp-http-identity.dogfood.test.ts)给
mcp-http-identity的证明补两条此前缺失的断言:query_records的 id 集合 == RESTGET /data的 id 集合(不是"各自被裁剪",而是"可证等价");非空校验(只含自己的行、不含另一 owner 的)。get_record也被 RLS 裁剪:member 取另一 owner 的私有行 → 被拒(tool error),取自己的 → 正常。补上了此前只覆盖 list 查询、未覆盖 by-id 读路径的缺口。P2 — serve 侧自连接(
showcase-mcp-self-connection.dogfood.test.ts,新增)#3167 的 optional extension「平台连自己」,在一个进程内证明 serve↔consume 全链路:
osk_key → 用connector-mcp通过真实 HTTP 连到 app 自己的/api/v1/mcp→ 发现并调用 app 自己的工具(list_objects/query_records/…)round-trip;验证(本地)
showcase-mcp-http-identity(6,含 2 新)+showcase-mcp-self-connection(3,新)+showcase-declarative-mcp(2,回归)。Refs #3167、ADR-0096、ADR-0101。
🤖 Generated with Claude Code
https://claude.ai/code/session_0115eg8dAaCfWaDYYAm3ma36
Generated by Claude Code