MCP Connection Guide

Connect to your AI

One URL. No auth. Works with Claude Desktop, Claude.ai, Cursor, and any MCP-compatible client.

Claude Desktop Claude.ai Cursor Any MCP client
Step 01 · Pick your client

Add the server

  1. 01
    Find your config file
    Mac: ~/Library/Application Support/Claude/claude_desktop_config.json
    Windows: %APPDATA%\Claude\claude_desktop_config.json
  2. 02
    Add this inside the "mcpServers" key
claude_desktop_config.json
"petaluma": {
  "type": "sse",
  "url":  "https://petaluma-civic.fly.dev/mcp"
}
  1. 03
    Restart Claude Desktop after saving the file.
  1. 01
    Go to Settings → Integrations → Add custom integration
  2. 02
    Paste this URL
Integration URL
https://petaluma-civic.fly.dev/mcp
No API key needed. Leave the auth fields blank.

Add Petaluma Civic as an SSE MCP server in your client's settings. Use the URL below and refer to your client's MCP documentation for where to paste it.

MCP server URL · SSE transport
https://petaluma-civic.fly.dev/mcp
No authentication required. The server uses SSE transport.
Step 02 · Verify it worked

Try your first question

Once connected, paste this into your AI client. If Petaluma Civic is active, you'll get an answer grounded in real council records.

Sample prompt
you

"What did the Petaluma City Council vote on at their most recent meeting?"

Step 03 · What you can ask

Three tools, hundreds of questions

The server exposes three tools. Your AI client will pick the right one automatically.

semantic_search
Find documents by meaning across ordinances, transcripts, agendas, and meeting minutes. Use this when you want to understand what the city has said or decided about a topic.
execute_sql
Query structured data directly — council votes, attendance records, permit counts, budget items. Returns precise, tabular results from the underlying PostgreSQL database.
get_permit_detail
Look up live permit status for a specific address or permit number, pulled directly from the city's permitting system.