{"_id":"@abbainitiative/mcp","name":"@abbainitiative/mcp","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@abbainitiative/mcp","version":"0.1.0","description":"Model Context Protocol server for ABBA UI — lets coding agents look up components, props and design tokens instead of guessing.","keywords":["mcp","model-context-protocol","abba","design-system","claude","codex"],"license":"MIT","author":"ABBA Initiative","homepage":"https://abba-ui.vercel.app","repository":{"type":"git","url":"git+https://github.com/Lonergun141/abba-ui.git","directory":"packages/mcp"},"type":"module","bin":{"abba-ui-mcp":"./dist/index.js"},"types":"./dist/server.d.ts","exports":{".":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./package.json":"./package.json"},"engines":{"node":">=20.11.0"},"dependencies":{"@modelcontextprotocol/sdk":"1.30.0","zod":"4.4.3","@abbainitiative/registry":"0.1.0"},"devDependencies":{"@types/node":"^26.1.2","eslint":"10.8.0","rimraf":"6.0.1","typescript":"6.0.3","vitest":"4.1.10","@abbainitiative/typescript-config":"0.0.0","@abbainitiative/eslint-config":"0.0.0"},"publishConfig":{"access":"public"},"scripts":{"build":"tsc -p tsconfig.build.json","dev":"tsc -p tsconfig.build.json --watch","start":"node dist/index.js","lint":"eslint .","typecheck":"tsc -p tsconfig.json --noEmit","test":"vitest run","test:watch":"vitest","clean":"rimraf dist .turbo *.tgz"},"_nodeVersion":"24.14.1","_id":"@abbainitiative/mcp@0.1.0","dist":{"integrity":"sha512-HrmB5u/tPSV6XkQVSsT2QGBGBrMWWOT5IHLtXeZFpW+PqkB2OCJdYZlX5yGxkZGirwQkbCadkswHXV2B66H7Ng==","shasum":"816ed12af2cbaee1c25bf24e771ca14e335d3255","tarball":"https://registry.npmjs.org/@abbainitiative/mcp/-/mcp-0.1.0.tgz","fileCount":12,"unpackedSize":46544,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIBnQt1eoT7VZ8rO2U0YPMLgivYH7ORiBvB3yCrSWUC2FAiEAztiJaxti9EGvnDNb1RcolnJJKlBtsXP2CegBCL2ShWA="}]},"_npmUser":{"name":"jaeger141","email":"gevero530@gmail.com"},"directories":{},"maintainers":[{"name":"jaeger141","email":"gevero530@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp_0.1.0_1785899338734_0.5912663373082967"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-05T03:08:58.529Z","0.1.0":"2026-08-05T03:08:58.891Z","modified":"2026-08-05T03:08:59.189Z"},"maintainers":[{"name":"jaeger141","email":"gevero530@gmail.com"}],"description":"Model Context Protocol server for ABBA UI — lets coding agents look up components, props and design tokens instead of guessing.","homepage":"https://abba-ui.vercel.app","keywords":["mcp","model-context-protocol","abba","design-system","claude","codex"],"repository":{"type":"git","url":"git+https://github.com/Lonergun141/abba-ui.git","directory":"packages/mcp"},"author":"ABBA Initiative","license":"MIT","readme":"# @abbainitiative/mcp\n\nAn MCP server for **[ABBA UI](https://abba-ui.vercel.app)**. Point your coding agent at it and it can look up real components, props and design tokens instead of guessing at them.\n\nWorks with Claude Code, Codex, Cursor, Windsurf, Zed — anything that speaks the Model Context Protocol.\n\n---\n\n## Why\n\nAgents write React well and remember component APIs badly. Left to guess, they invent plausible props:\n\n```tsx\n<Button color=\"primary\" size=\"medium\">Save</Button>   // none of this is real\n<Button variant=\"primary\" size=\"md\">Save</Button>     // this is\n```\n\nThis server gives the agent the actual answer — every prop, its type, its default, and a working example.\n\n## Setup\n\nYou do not need to install anything. Both clients below run it with `npx`.\n\n### Claude Code\n\n```bash\nclaude mcp add abba-ui -- npx -y @abbainitiative/mcp\n```\n\nOr add it to `.mcp.json` in your project root, so it is shared with everyone on the repo:\n\n```json\n{\n  \"mcpServers\": {\n    \"abba-ui\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@abbainitiative/mcp\"]\n    }\n  }\n}\n```\n\nCheck it connected with `/mcp`.\n\n### Codex\n\nAdd it to `~/.codex/config.toml`:\n\n```toml\n[mcp_servers.abba-ui]\ncommand = \"npx\"\nargs = [\"-y\", \"@abbainitiative/mcp\"]\n```\n\n### Cursor, Windsurf, Zed and others\n\nMost clients take the same shape in their own config file:\n\n```json\n{\n  \"mcpServers\": {\n    \"abba-ui\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@abbainitiative/mcp\"]\n    }\n  }\n}\n```\n\n### Pinning a version\n\n`npx -y @abbainitiative/mcp` fetches the latest. To pin, name the version: `@abbainitiative/mcp@0.1.0`.\n\n## Tools\n\nEvery tool is read-only. Nothing here writes files, touches your project or reaches the network — the catalogue is bundled in the package.\n\n| Tool                | What it answers                                                              |\n| ------------------- | ---------------------------------------------------------------------------- |\n| `list_components`   | What components exist? Optionally filtered to one category.                  |\n| `get_component`     | What props does `Dialog` take, and how do I compose it?                      |\n| `search_components` | I need a modal / a loading state / a status marker — what is it called here? |\n| `list_tokens`       | What CSS variables can I override?                                           |\n| `find_token`        | Does `--abba-primary-subtle` exist, and what is it?                          |\n| `get_theming`       | How do I restyle this for my brand, including dark mode?                     |\n| `get_setup`         | How do I install it in Next.js / Vite?                                       |\n\n`get_component` accepts a name, a slug, or a near miss — `Button`, `button`, `dropdown-menu` and `Dailog` all resolve.\n\n`get_theming` takes a topic: `overview`, `colour`, `shape`, `typography`, `dark-mode`, `scoped`.\n\n## What the agent gets back\n\n`get_component` with `{ \"name\": \"Badge\" }`:\n\n```markdown\n# Badge\n\n**Category:** Data display\n**Client boundary:** Renders in a React Server Component with no client boundary of your own.\n\nSeven tones across three variants. Because a badge's meaning is usually carried\nby its colour, `srLabel` lets you supply the words that colour stands for.\n\n## Import\n\nimport { Badge } from \"@abbainitiative/ui\";\n\n## Props\n\n| Prop | Type | Default | Description |\n| `tone` | `\"neutral\" \\| \"primary\" \\| \"accent\" \\| …` | `\"neutral\"` | Semantic colour role. |\n| `srLabel` | `string` | — | Text announced before the label. |\n\n## Examples\n\n…runnable tsx…\n\n## Accessibility\n\n- Colour is not available to screen readers — use `srLabel` where the tone is the message.\n```\n\n## Running it from source\n\n```bash\npnpm --filter @abbainitiative/mcp build\nnode packages/mcp/dist/index.js\n```\n\nIt speaks JSON-RPC over stdio, so it will sit there waiting for input. To drive it by hand:\n\n```bash\necho '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/list\",\"params\":{}}' | node packages/mcp/dist/index.js\n```\n\n## Notes\n\n- **stdout is the transport.** A stray `console.log` corrupts the stream and surfaces as an unexplained disconnect. Diagnostics go to stderr.\n- The component catalogue comes from [`@abbainitiative/registry`](../registry), which is also what the documentation site renders — so this server and the docs cannot describe different component sets.\n\nMIT © ABBA Initiative\n","readmeFilename":"","_rev":"1-6e03d1f6312debb28df4fe94ebfc2d48"}