panini-connector-mcp
MCP server that lets AI coding agents (Claude Desktop, Cursor, Windsurf, Claude Code, etc.) install and verify the panini-connector SDK on a customer's self-hosted site — end-to-end, without human copy-pasting.
Companion to the wizard at panini.autoscreen.ai — same code generation, same verify flow, exposed as MCP tools an agent can call.
What it does
Exposes 4 tools over the Model Context Protocol:
install_panini_connector | Given (language, framework, storage), returns the install command + files to write + env vars to set. Handles Next.js App/Pages, Express, FastAPI, Django, Flask. Storage: Supabase, Postgres, custom DB (MySQL/Mongo/etc.), or in-memory. |
verify_panini_connector | Fires all 4 signed HTTP ops (ping / create_post / update_post / delete_post) at the deployed URL. Returns per-op status + diagnostics. Cleans up its own smoke-test post. |
generate_shared_secret | Returns a cryptographically-random 32-byte hex secret for SEO_CONNECTOR_SECRET. |
get_envelope_schema | Returns the raw HTTP envelope contract Panini uses. For agents implementing custom handlers in languages the SDK doesn't cover (Laravel, Rails, Go, .NET, etc.). |
Install (one line per client)
Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%/Claude/claude_desktop_config.json (Windows):
{
"mcpServers": {
"panini-connector": {
"command": "npx",
"args": ["-y", "panini-connector-mcp"]
}
}
}
Windows note: GUI apps don't inherit shell PATH. Use cmd as the command instead:
{
"mcpServers": {
"panini-connector": {
"command": "cmd",
"args": ["/c", "npx", "-y", "panini-connector-mcp"]
}
}
}
Restart Claude Desktop. You should see 4 new tools available.
Cursor
Settings → Cursor Settings → MCP → Add new MCP server:
{
"mcpServers": {
"panini-connector": {
"command": "npx",
"args": ["-y", "panini-connector-mcp"]
}
}
}
Windsurf
Edit ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"panini-connector": {
"command": "npx",
"args": ["-y", "panini-connector-mcp"]
}
}
}
Claude Code (CLI)
claude mcp add panini-connector -- npx -y panini-connector-mcp
Example agent workflow
Once registered, prompt your AI:
"Install the panini-connector on this Next.js site. It uses Supabase — the table is blog_posts and posts render at /blog/[slug]."
The agent will:
- Call
install_panini_connector with language=node, framework=next_app, storage=supabase, existing_table=blog_posts, url_template=https://.../blog/{slug}
- Read the returned
install_command and run npm install panini-connector in your project
- Write
app/api/seo-connector/route.ts with the returned file content
- Call
generate_shared_secret and prompt you to add SEO_CONNECTOR_SECRET=<value> to your hosting env vars
- Prompt you to redeploy
- Once deployed, call
verify_panini_connector with your URL + the secret
- Report the result: 4 green ✓s means the round-trip works and you're ready to paste URL+secret into the Panini dashboard
Tool reference
install_panini_connector
Input:
language: 'node' | 'python'
framework: 'next_app' | 'next_pages' | 'express' | 'fastapi' | 'django' | 'flask'
storage: 'supabase' | 'postgres' | 'custom_db' | 'memory'
existing_table?: string
url_template?: string
Output:
install_command: string
files: [{ path, content, language }]
env_vars: string
post_install_note?: string
verify_command: string
Framework/language pairing:
node → next_app | next_pages | express
python → fastapi | django | flask
verify_panini_connector
Input:
url: string
secret: string
timeout_ms?: number
Output:
ok: boolean
url: string
ops: [{
op: 'ping' | 'create_post' | 'update_post' | 'delete_post'
status: 'pass' | 'fail'
http_status?: number
response_body?: unknown
error?: string
}]
summary: string
generate_shared_secret
Input: {}
Output: { secret: string, length_bytes: 32 }
get_envelope_schema
Input: {}
Output: {
http_method: 'POST'
request_headers: { ... }
request_body_shape: { ... }
response_success: { ... }
response_ping: { ... }
response_errors: { ... }
replay_window_seconds: 300
hmac_pseudocode: string
laravel_example: string
}
Use this when the customer's stack isn't Node or Python — the returned contract is enough for an agent to hand-implement the connector in any language.
Running locally / debugging
npx panini-connector-mcp
npx @modelcontextprotocol/inspector npx panini-connector-mcp
License
MIT.