Docs
Connect your AI.
It fetches the right spec every time and checks its own work. Free, with a sign-in. No install? Copy a prompt instead.
Connect in four steps
- 1
Pick your assistant
- 2
Add Meniscus
claude mcp add --transport http meniscus https://meniscus.site/mcp - 3
Sign in
Run /mcp in Claude Code, pick meniscus, and sign in in the browser. Free, with your e-mail.
- 4
Ask for a screen
Then ask, and name the tools: “… Use the meniscus tools.” Sign in here to see it connect.
Server URLhttps://meniscus.site/mcp
Every assistant 33
Each one's setup as its own docs describe it. Every one ends the same way: a browser window to sign in. Guides with a rule file and prompts: Liquid glass in Claude Code · Liquid glass in Cursor · Liquid glass in Codex.
Terminal agents
Claude Code
claude mcp add --transport http meniscus https://meniscus.site/mcpThen run /mcp in Claude Code and choose meniscus to sign in. Add --scope user to have it in every project.
Or install the Meniscus plugin, which adds the server and the liquid-glass skill, then sign in through /mcp the same way:
/plugin marketplace add meniscus-site/meniscus-mcp
/plugin install meniscus@meniscusCodex
codex mcp add meniscus --url https://meniscus.site/mcpThe browser opens to sign in straight away; codex mcp login meniscus signs in again later. The CLI, the IDE extension and the ChatGPT desktop app share one config, so this covers all three. The entry it writes:
[mcp_servers.meniscus]
url = "https://meniscus.site/mcp"Or install the Meniscus plugin, which adds the server and the liquid-glass skill:
codex plugin marketplace add meniscus-site/meniscus-mcp
codex plugin add meniscus@meniscus
codex mcp login meniscusGemini CLI
gemini mcp add --scope user --transport http meniscus https://meniscus.site/mcpThen run /mcp auth meniscus in Gemini CLI to sign in.
GitHub Copilot CLI
copilot mcp add --transport http meniscus https://meniscus.site/mcpThe browser opens to sign in when it first connects; /mcp auth meniscus signs in again.
OpenCode
Add to opencode.json in the project, or to ~/.config/opencode/opencode.json for every project:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"meniscus": {
"type": "remote",
"url": "https://meniscus.site/mcp"
}
}
}Then sign in with opencode mcp auth meniscus.
Amp
amp mcp add meniscus https://meniscus.site/mcpAmp opens the browser to sign in the next time it starts.
Factory Droid
droid mcp add meniscus https://meniscus.site/mcp --type httpThen run /mcp in droid, choose meniscus and Authenticate.
Qwen Code
qwen mcp add --transport http meniscus https://meniscus.site/mcpThen open /mcp in Qwen Code and sign in to meniscus.
Warp
Settings → Agents → MCP servers → Add, and paste:
{
"meniscus": {
"url": "https://meniscus.site/mcp"
}
}Warp opens the sign-in in the browser when the server starts.
Crush
Add to crushrc in the project, or to ~/.config/crush/crushrc:
mcp add meniscus --type http --url https://meniscus.site/mcp --oauth true --sessionless trueCrush shows a sign-in dialog; Enter opens the browser. Meniscus keeps no session between calls, hence --sessionless.
goose
Desktop: Extensions → Add custom extension, type Remote Extension (Streamable HTTP), and paste the server URL. CLI: goose configure → Add Extension → Remote Extension (Streamable HTTP).
The browser opens to sign in when the extension starts.
Editors and IDEs
Cursor
Add to CursorOr add to ~/.cursor/mcp.json (or the project's .cursor/mcp.json):
{
"mcpServers": {
"meniscus": {
"url": "https://meniscus.site/mcp"
}
}
}Cursor asks you to sign in the first time it connects.
VS Code
Add to VS CodeOr add to .vscode/mcp.json, or to your user mcp.json (MCP: Open User Configuration):
{
"servers": {
"meniscus": {
"type": "http",
"url": "https://meniscus.site/mcp"
}
}
}VS Code asks you to trust the server, then opens the browser to sign in. From a terminal:
code --add-mcp '{"name":"meniscus","type":"http","url":"https://meniscus.site/mcp"}'Devin Desktop (formerly Windsurf)
devin mcp add -s user meniscus https://meniscus.site/mcpThen devin mcp login meniscus, or Authenticate next to the server in Devin Local's MCP list. Windsurf builds from before the rename read this file instead:
{
"mcpServers": {
"meniscus": {
"serverUrl": "https://meniscus.site/mcp"
}
}
}Zed
Settings → AI → MCP Servers → Add Server → Add Remote Server, or in settings.json:
{
"context_servers": {
"meniscus": {
"url": "https://meniscus.site/mcp"
}
}
}Then choose Authenticate next to the server.
JetBrains IDEs
Junie reads ~/.junie/mcp/mcp.json (or .junie/mcp/mcp.json in the project):
{
"mcpServers": {
"meniscus": {
"url": "https://meniscus.site/mcp"
}
}
}In Junie, run /mcp, select meniscus and Authorize. AI Assistant cannot sign in to remote servers yet: add Meniscus under Settings → Tools → AI Assistant → Model Context Protocol (MCP) through the bridge instead:
{
"mcpServers": {
"meniscus": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://meniscus.site/mcp"
]
}
}
}Visual Studio
Add to .mcp.json in the solution folder, or to %USERPROFILE%\.mcp.json for every solution:
{
"servers": {
"meniscus": {
"type": "http",
"url": "https://meniscus.site/mcp"
}
}
}Then choose Authentication Required above the entry in .mcp.json and sign in.
Cline
MCP Servers → Remote Servers: name meniscus, the server URL, transport Streamable HTTP, then Add Server. In the JSON config, spell out the type, or Cline falls back to SSE:
{
"mcpServers": {
"meniscus": {
"type": "streamableHttp",
"url": "https://meniscus.site/mcp"
}
}
}Then choose Authenticate on the server. Cline CLI does the same through cline mcp.
Kilo Code
Settings → Agent Behaviour → MCP Servers → Add Server → Remote (HTTP), or in kilo.jsonc:
{
"mcp": {
"meniscus": {
"type": "remote",
"url": "https://meniscus.site/mcp"
}
}
}Sign in from the notification it shows, or with kilo mcp auth meniscus.
Kiro
The IDE and Kiro CLI both read ~/.kiro/settings/mcp.json (or .kiro/settings/mcp.json in the workspace):
{
"mcpServers": {
"meniscus": {
"url": "https://meniscus.site/mcp"
}
}
}Kiro opens the sign-in page when it connects; /mcp auth meniscus in the CLI signs in again.
Google Antigravity
Agent panel → … → MCP Servers → Manage MCP Servers → View raw config. It takes serverUrl, not url:
{
"mcpServers": {
"meniscus": {
"serverUrl": "https://meniscus.site/mcp"
}
}
}Then Agent Settings → Customizations → Authenticate: sign in, copy the code it shows and paste it back.
GitHub Copilot for Xcode
Settings → MCP → Edit Config, and add:
{
"servers": {
"meniscus": {
"url": "https://meniscus.site/mcp"
}
}
}Its OAuth support is in preview; if the sign-in does not start, use the bridge below.
Augment Code
Settings → MCP → Add remote MCP: connection type HTTP, name meniscus, the server URL. Then choose Authenticate on the server.
Chat and desktop apps
Claude (web, desktop and mobile)
Customize → Connectors → Add custom connector, paste the server URL and choose Add, then Connect to sign in. Leave the OAuth client ID and secret empty; if Claude asks how to identify itself, choose to register automatically.
On Team and Enterprise an owner adds it once under Organization settings → Connectors, then each member connects it. Connectors added on the web or desktop work in the mobile apps too. The Free plan allows one custom connector.
ChatGPT
Turn on developer mode (Settings → Security and login; on some accounts Settings → Apps → Advanced settings). Then create an app from the + at chatgpt.com/plugins: name it Meniscus, paste the server URL, choose OAuth and sign in when asked.
In a chat: + → Developer mode → Meniscus. Web only, on Plus, Pro, Business, Enterprise and Edu; in a workspace an admin turns on developer mode and publishes the app.
Mistral Vibe (formerly Le Chat)
Connectors → Add Connector → Custom MCP Connector: name meniscus, the server URL, then Connect and sign in. Turn it on in a chat under Tools.
Perplexity
Account settings → Connectors → Custom connector → Remote: paste the server URL, authentication OAuth, transport Streamable HTTP, then Add. Click the connector to sign in. Pro, Max and Enterprise, where an admin has to allow it.
Raycast
Run Install MCP Server: transport HTTP, the server URL, OAuth type Dynamic, then Sign In. Needs Raycast Pro.
LM Studio
Add to LM StudioOr Program → Install → Edit mcp.json, and add under mcpServers:
"meniscus": { "url": "https://meniscus.site/mcp" }A browser window opens to sign in.
Cherry Studio
Settings → MCP → Add server, type Streamable HTTP, the server URL. The browser opens to sign in when you start it.
LibreChat
MCP Settings → +: name meniscus, the server URL, transport Streamable HTTP, authentication OAuth. Or in librechat.yaml:
mcpServers:
meniscus:
type: streamable-http
url: https://meniscus.site/mcpThen connect from the server's button; the sign-in opens in a new tab.
Microsoft Copilot Studio
In an agent: Tools → Add a tool → New tool → Model Context Protocol. Paste the server URL, choose OAuth 2.0 → Dynamic discovery, create it and add a connection.
Any other client
Local-only clients (the mcp-remote bridge)
For a client that runs only local servers, or cannot sign in to remote ones yet (JetBrains AI Assistant, Trae, Msty), the mcp-remote bridge signs in and relays the calls. It needs Node 18 or later:
{
"mcpServers": {
"meniscus": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://meniscus.site/mcp"
]
}
}
}The browser opens to sign in on first start. The token is kept in ~/.mcp-auth; delete that folder to sign in again.
Any other client that supports remote (Streamable HTTP) servers with OAuth works the same way: give it the URL; it registers and finds the sign-in by itself. Meniscus does not serve SSE and has no API key.
What your AI gets 7 tools
get_brief- Call it first. One call for a screen: the rules, tokens for both themes, the specs it needs, the build code for your stack, how to check it (check_code, then screenshots, then the checklist) and two reference images.
check_code- Checks the code your agent wrote against the rules, without a browser: errors, warnings, and what only a screenshot can confirm.
get_spec- One of 41 components or 14 effects by name, aliases accepted: material, geometry, optics numbers, anatomy, states, rules, references. With a medium, also that piece's build code.
get_recipe- A medium's build code, whole or one section at a time: the SVG displacement map, markup and CSS, the React component, the WebGL shader, liquid metal, border beam, mounting in plain JavaScript, the QA script; Figma settings and layer stacks; SwiftUI, Flutter and React Native.
get_rules- The rules in one block to keep in CLAUDE.md or AGENTS.md; one section of the design language for the deeper parts, or all of it.
get_references- Search the reference renders by text and filters (kind, component, effect, platform, theme) on every plan; load them by id, cropped to the glass or full frame, on Pro and the trial.
get_template- 22 whole screens as React source (TSX + CSS), with a table for building each component without the React kit: smart home, wallet, AI chat, weather and more. The list on every plan, the code on Pro and the trial.
Three prompts come with the tools: build_screen, review_glass and add_component. Claude Code lists them as /mcp__meniscus__build_screen and so on; other clients show them in their slash-command menu.
Name the platform and the parts; your agent picks the tools. For example:
Design a dark macOS notes app with a glass sidebar and toolbar in Figma.
Build it in SwiftUI next. Use the meniscus tools, run check_code on your code
and check a screenshot against the brief's checklist.Plans and limits
Free: the design language, every spec and every recipe with its code (web, Figma and design tools, SwiftUI, Flutter, React Native), 1 image per spec and 2 per brief, 50 tool calls a day. Pro, Team and Lifetime add the 22 screen templates as React source (`get_template`), the React kit and React Native starter downloads, the whole reference library (any render by id, at full frame, up to 4 per spec) and 2,000 calls a day (fair use). New accounts get the paid answers for their first 14 days; the downloads need a plan. Limits reset at 00:00 UTC. See pricing.
Troubleshooting
- The sign-in window did not open. Run the client's sign-in again (
/mcpin Claude Code,codex mcp login meniscus,/mcp auth meniscusin Gemini CLI or Copilot CLI); some clients open it only on the first tool call. - The sign-in names a supabase.co address. That is the sign-in service behind Meniscus; the page you approve on is meniscus.site.
- The client connects but lists no tools. It is probably trying SSE. Set the transport to Streamable HTTP:
"type": "http"in most JSON configs,streamableHttpin Cline,remotein OpenCode and Kilo Code. - "Sign in required" after it worked. Your session expired or was revoked in your account; connect again.
- A tool says it needs a paid plan. You are on the free plan and asked for more images than it attaches, for images by id (
get_references) or for a template's code (get_template); the rest of the answer, recipe code included, is complete. - Refraction looks like blur on the web. SVG refraction runs in Chromium; Safari and Firefox get the frost fallback, as the web recipe explains.
- The agent built blur-only glass and never used the code. Check that it called
get_briefwith your stack named (the brief carries the code) and that your client let it use the meniscus tools;check_codeon what it wrote lists what is wrong. A headless Claude Code run needs--allowedTools "mcp__meniscus" "mcp__meniscus__*"; an interactive one asks you once.