Turn the fork into the Mobbin agent plugin - #1
Conversation
Replace the upstream agent-plugins-example contents with Mobbin's own plugin: the hosted MCP server over Streamable HTTP plus a design-research skill, and a validator/CI that enforces Agent Plugins 1.0.0 conformance. Refs PRJ-2411 Co-Authored-By: xingxiang <xingxiang@twotreesgroup.com>
Original prompt from xingxiang
|
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
Co-Authored-By: xingxiang <xingxiang@twotreesgroup.com>
End-to-end verificationInstalled the package into Claude Code (2.1.224) from a local path, completed the real OAuth flow against
The installer gap this PR works aroundAgent Plugins 1.0.0 §7.2.1 puts MCP config at $ claude mcp list # after installing caf0f6c
(no plugin-scoped server)
$ npx -y plugins@1.3.4 add . -t claude-code -s user -y
mobbin-agent-plugin 1 skill, mcp
$ claude mcp list
plugin:mobbin-agent-plugin:mobbin: https://api.mobbin.com/mcp (HTTP) - ! Needs authenticationNotes for reviewers
|
Co-Authored-By: xingxiang <xingxiang@twotreesgroup.com>
Co-Authored-By: xingxiang <xingxiang@twotreesgroup.com>
Co-Authored-By: xingxiang <xingxiang@twotreesgroup.com>
Co-Authored-By: xingxiang <xingxiang@twotreesgroup.com>
E2E test in VS Code — a spec-conformant clientRe-tested at Root
|
Co-Authored-By: xingxiang <xingxiang@twotreesgroup.com>
Summary
Turns the forked
agent-plugins-exampleinto a real Mobbin plugin that installs our hosted MCP server into any Agent Plugins 1.0.0 client. Scoped to the MCP server — no skills — so there's exactly one thing to get right.The whole package is two files:
No credential ships in it. The server answers unauthenticated requests with
WWW-Authenticate: Bearer resource_metadata=…, so the client discovers the OAuth 2.0 + PKCE flow and owns the token.npm run validate(also a CI job) checks those two files against the canonical 1.0.0 schemas, vendored underschemas/1.0.0/so CI needs no network. The schemas are closed and strict, so a stray key or typo silently breaks loading in every client with no error you'd otherwise see.Why there are no compatibility shims
Earlier revisions of this branch carried
.mcp.json,.claude-plugin/and.codex-plugin/, purely to satisfyplugins@1.3.4(vercel-labs), which reads only those paths. That CLI is one vendor's installer, not part of the standard — and spec §7.2.2 points the other way:So they're gone, and the README now points at each client's own install path rather than a single
npxcommand. Claude Code — the client the original evidence here came from — isn't on the compatible-clients list either; Mobbin'sclaude mcp adddocs already cover it.Evidence
Verified end to end in VS Code 1.132.0, a conformant client, against the live server: loads from root
mcp.jsonalone, server appears under the manifest namemobbin, real OAuth consent, exactly three tools, and asearch_sectionscall whose returnedmobbin_urls resolve. Screenshots and recording in the verification comment.Not tested: Cursor, GitHub Copilot, ChatGPT/Codex, Kiro.
Follow-ups
mobbin-design-researchskill (tool selection, query phrasing,mobbin_urlcitation rules) is written and verified, held back to keep this PR to one concern.~/.cursor/plugins/local/symlink its own docs recommend.Link to Devin session: https://app.devin.ai/sessions/27e2106025084084a3c691121a0f141a
Requested by: @kingstarfly