WAVE exposes operations as Model Context Protocol (MCP) tools, allowing AI assistants (Claude Code, Cursor, Windsurf) to interact with WAVE services directly from your IDE.
| Server | Tools | Purpose |
|---|---|---|
supabase | Database queries, migrations, RLS advisors | Data layer |
sentry | Error search, issue details, Seer AI analysis | Error tracking |
stripe | Customer, subscription, payment management | Billing |
linear | Issue creation, project management | Task tracking |
github | PR management, code search, file operations | Source control |
grafana | Dashboard queries, Prometheus metrics, alerts | Monitoring |
pencil | Design creation, token sync, screenshots | Design |
MCP servers are configured in .mcp.json at the project root. Each server specifies its command, arguments, and required environment variables.
{
"mcpServers": {
"supabase": {
"command": "npx",
"args": ["-y", "@supabase/mcp-server-supabase@latest"],
"env": {
"SUPABASE_ACCESS_TOKEN": "${SUPABASE_ACCESS_TOKEN}",
"SUPABASE_PROJECT_REF": "${SUPABASE_PROJECT_REF}"
}
}
}
}
MCP servers require environment variables to be set. Check .env.local or your Doppler configuration for required values.
WAVE agents have least-privilege MCP access. Each agent only gets the servers it needs:
| Agent | MCP Servers |
|---|---|
security-reviewer | sentry, corridor |
database-specialist | supabase |
pr-reviewbot | github, linear, sentry, corridor, cubic |
backend-specialist | supabase, stripe |
frontend-specialist | pencil (when enabled) |
# Search for Sentry issues
mcp__sentry__search_issues({ query: "is:unresolved level:error" })
# Query Supabase
mcp__supabase__execute_sql({ query: "SELECT count(*) FROM streams WHERE status = 'live'" })
# Create a Linear issue
mcp__linear__save_issue({ title: "Fix auth bug", teamId: "WAVE" })