Connect Claude to your Cellpy Workspace and author blocks in plain language.
The Cellpy MCP server is a hosted Model Context Protocol server at https://mcp.cellpy.com. Connect it to Claude Desktop once and you can describe blocks in natural language, push them to your Workspace, and iterate — all inside a conversation.
What you need before connecting.
Point Claude Desktop at the Cellpy MCP server.
In the Cellpy dashboard go to Account → API Tokens → New token. Name it something like claude-desktop. Copy the token — it is shown only once.
Open Claude Desktop → Settings → Integrations → Add MCP Server. Enter the server URL and paste your token:
Prefer editing the config file directly? Open claude_desktop_config.json (found in Claude Desktop → Settings → Developer) and add:
{
"mcpServers": {
"cellpy": {
"url": "https://mcp.cellpy.com",
"headers": {
"Authorization": "Bearer your_token_here"
}
}
}
}Quit and reopen Claude Desktop. The Cellpy tools will appear in the conversation toolbar (look for the plug icon). Verify by asking Claude: "List my Cellpy containers."
Add the Cellpy MCP server to GitHub Copilot in VS Code 1.102+.
"servers" — not "mcpServers" (the Claude Desktop key). VS Code ignores "mcpServers" entirely.mcp.json — not settings.json. Entries in settings.json are ignored by the MCP subsystem.Ctrl+Alt+I) and switch the mode dropdown to Agent — tools are invisible in Ask or Edit modes.The easiest path. VS Code writes mcp.json for you, then you add your token.
Ctrl+Shift+PMCP: Add Server and select ithttps://mcp.cellpy.com/mcpcellpymcp.json via MCP: Open User Configuration and add your token under headers (see Option B below)Open Command Palette → MCP: Open User Configuration and add:
{
"servers": {
"cellpy": {
"type": "http",
"url": "https://mcp.cellpy.com/mcp",
"headers": {
"Authorization": "Bearer cpy_YOUR_API_TOKEN"
}
}
}
}Replace cpy_YOUR_API_TOKEN with a token from Account → API Tokens.
Ctrl+Alt+Ilist_blocks and push_to_workspace appear under CellpyThe MCP server exposes these tools to Claude automatically.
| Name | Type | Description |
|---|---|---|
list_blocks | tool | Returns all blocks in your Workspace, including status, name, and creation date. |
get_block | tool | Returns full HTML, CSS, and metadata for a specific block by ID or name. |
push_block | tool | Pushes a new block (name, HTML, CSS) to your Workspace. Returns the new block ID. |
update_block | tool | Replaces the HTML and/or CSS of an existing Workspace block by ID. |
list_containers | tool | Lists all containers in your organization with their current assigned block. |
get_container | tool | Returns the current state of a container including the live block version. |
list_block_rules | tool | Returns the block rules (CSS custom properties) exposed by a block. |
Ask Claude to design a block and push it to your Workspace.
Begin a conversation and describe the block you need. Include the purpose, key content areas, visual style, and explicitly ask Claude to push it to your Workspace:
Claude writes the HTML and CSS, then calls push_block to send it to your Workspace. It will confirm with the block ID and a link to review it in the dashboard.
Open Workspace in the Cellpy dashboard. The block appears with status pending. Preview it at different container widths. When satisfied, click Save Block.
Go to Containers, open your target container, assign the new block, and click Publish. The embed tag on your live page updates immediately — no code changes needed.
Conversationally refine a block across multiple turns.
Claude maintains context across the conversation. You can refine a block across many turns — each refinement pushes a new version to your Workspace while preserving the history.
Get better results with clearer prompts.
Start with 'Create a Cellpy block —'. This cues Claude to use HTML + CSS only (no JavaScript), use :host selectors, and expose CSS custom properties.
Ask Claude to 'expose the primary color, background, and font as CSS variables with sensible defaults'. This makes your block themeable from the embed tag.
If the design needs photos, ask Claude to 'use placeholder images for now' — it will use placeholder.co-style stubs that you can replace in Workspace.
Give Claude the actual copy: headings, button labels, pricing numbers. Placeholder text leads to generic designs. Real content leads to usable blocks.
Ask Claude to 'list my Cellpy blocks' and then 'make this new block match the style of my existing hero-section block' for visual consistency.
Restart Claude Desktop fully (quit, not just close). Check that the server URL is exactly https://mcp.cellpy.com and your token is correct. In Claude Desktop → Settings → Developer, verify the JSON config is valid.
Your API token may be expired or revoked. Go to Account → API Tokens in the dashboard, revoke the old token, and create a new one. Update the Claude Desktop config.
Claude may have generated JavaScript (which is stripped at runtime) or used external images. Ask Claude to 'fix the block without JavaScript' or 'replace external images with CSS backgrounds or placeholder.co URLs'.
By default, blocks pushed via MCP land in staging. Ask Claude to 'push this to my production Workspace' — it will use the production environment flag.
Check three things in order: (1) the config root key is "servers", not "mcpServers" — VS Code ignores the wrong key silently; (2) the config is in mcp.json, not settings.json; (3) you are in Agent Mode in Copilot Chat (Ctrl+Alt+I) — tools are invisible in Ask and Edit modes.
The Authorization header is missing or wrong in mcp.json. Open Command Palette → MCP: Open User Configuration and confirm the headers block contains: "Authorization": "Bearer cpy_YOUR_TOKEN". The Command Palette wizard does not add this automatically.