About Kampalo
Kampalo is an MCP server for marketing teams using Grok, Cursor, or Claude to inspect synced advertising and analytics data and run controlled automations. It combines read tools with proposal-and-confirm actions, while limiting rule administration to admins.
Key features
- 01Synced ads, SEO, and GA4 insights
- 02Campaign pause proposals and confirmation
- 03Ads and SEO alert creation
- 04Dry-run and live ROAS rules
- 05Performance report JSON
Use cases
- 01Compare Google Ads and Meta Ads performance
- 02Review SEO, GA4, and organic Page/IG data
- 03Propose and confirm pausing a weak campaign
- 04Create alerts or ROAS automation rules
MCP support
Connects MCP clients to Kampalo’s hosted FastMCP server at https://be.kampalo.com/mcp. It exposes read tools and automation tools; campaign pauses require explicit confirmation, and live rules require confirmation.
Configuration
Remote servers need no local install. Pick your client, then copy the config or install in one click.
https://be.kampalo.com/mcpclaude mcp add --transport http com-kampalo-kampalo https://be.kampalo.com/mcp{"mcpServers":{"com-kampalo-kampalo":{"type":"http","url":"https://be.kampalo.com/mcp"}}}Open in Cursor{"servers":{"com-kampalo-kampalo":{"type":"http","url":"https://be.kampalo.com/mcp"}}}Open in VS Code{"mcpServers":{"com-kampalo-kampalo":{"type":"http","url":"https://be.kampalo.com/mcp"}}}{"mcpServers":{"com-kampalo-kampalo":{"serverUrl":"https://be.kampalo.com/mcp"}}}Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.
Tools
Details
From the project READMEKampalo plugin for Grok Build
Grok Build plugin that connects to Kampalo’s hosted FastMCP server. Grok can read synced ads/SEO/GA4 data and run the automations Kampalo already has: pause proposals, ads/SEO alerts, ROAS pause rules, and report JSON.
This plugin does not add product APIs. It wires Grok to python manage.py run_mcp_server:
- Read tools from
marketing/agents/suites.py(synced Postgres) automate_*tools frommarketing/agents/automation_backend.py(same services as/api/marketing/actions/, alert rules, automation rules, reports)
In-app Kai (LangGraph) stays read-only. Only this MCP catalog has automate_*.
Installation
After the plugin is listed in the xAI marketplace, in Grok Build run /plugin, search Kampalo, and install.
Until then, install from the plugin repo:
grok plugin install Tekreign/kampalo-cursor-plugin
Set KAMPALO_MCP_API_KEY to your personal kmp_… key from Kampalo Settings → API Keys (Starter and Enterprise). On first tool use Grok calls https://be.kampalo.com/mcp with Authorization: Bearer ….
Every tool also needs a Kampalo user_id or user_email. Ask the user if neither is known. A personal key already binds your user, so you can omit both.
Cursor
The same repo ships Cursor packaging next to the Grok files. Both use the same skills/ and the same MCP server.
| Grok Build | Cursor |
|---|---|
.grok-plugin/plugin.json | .cursor-plugin/plugin.json |
.mcp.json (${KAMPALO_MCP_API_KEY}) | mcp.json (${env:KAMPALO_MCP_API_KEY}) |
-
Generate a key in Kampalo Settings → API Keys.
-
Set it in the environment Cursor starts from, then restart Cursor:
setx KAMPALO_MCP_API_KEY "kmp_..."export KAMPALO_MCP_API_KEY="kmp_..." # in ~/.zshrc or ~/.bashrc -
Install the plugin from this repo in Cursor. Check Settings → MCP shows
kampaloconnected, then ask: Brief Google vs Meta in Kampalo.
Without the plugin, the same server works from a project or user ~/.cursor/mcp.json by copying the kampalo entry from mcp.json.
Claude (claude.ai, Cowork, Claude Code)
The Claude plugin lives in claude/ and is what the Claude directory lists. It uses OAuth: Claude asks you to sign in to Kampalo the first time, so there is no KAMPALO_MCP_API_KEY to set. Its skills are a copy of skills/ without the user_id / user_email step, because the signed-in account is applied automatically. Keep both copies in sync when you edit a skill.
Install in Claude Code from this repo's marketplace (.claude-plugin/marketplace.json points at ./claude):
/plugin marketplace add Tekreign/kampalo-cursor-plugin
/plugin install kampalo@kampalo
Run /mcp, choose kampalo, and sign in to Kampalo when prompted.
Network and credentials
| What | Value |
|---|---|
| MCP endpoint | https://be.kampalo.com/mcp (streamable HTTP) |
| Auth | Authorization: Bearer ${KAMPALO_MCP_API_KEY} |
| Secret | Personal kmp_… key from Kampalo Settings → API Keys (Starter and Enterprise). Scoped to your account, plan and role. |
The plugin talks only to that MCP host. It does not read local .env / SSH keys or send telemetry elsewhere.
What Grok can do
With MCP up and a Kampalo user who can mutate data (admin, or enterprise manager/marketer) for confirms. Alert/automation rule writes are admin only.
- Brief Google vs Meta, SEO, GA4, and organic Page/IG from synced stats
- Propose pausing a weak selected campaign
- Confirm that proposal (
confirm=true) — writesPAUSEDto Google or Meta - Create ads alerts (ROAS / CPA / spend pace) and SEO/AEO alerts
- Create a dry-run ROAS automation rule; enable live only with
confirm_live=true - Generate a performance report JSON (no PDF bytes over MCP)
What it cannot do
- Connect OAuth, change budgets, create campaigns, or write Shopify/TikTok
- Pause without a catalog-backed proposal + explicit confirm
- Act as a view-only user for confirms or rule admin
- Invent metrics if MCP is down or the DB has no rows
Layout
kampalo-cursor-plugin/
├── .grok-plugin/plugin.json
├── .mcp.json
├── .cursor-plugin/plugin.json
├── mcp.json
├── .claude-plugin/plugin.json
├── .claude-plugin/marketplace.json
├── skills/campaign-performance-brief/
├── skills/automate-kampalo-work/
├── assets/logo.svg
├── LICENSE
└── README.md
Skills
| Skill | When |
|---|---|
campaign-performance-brief | Read synced Google Ads, Meta Ads, Search Console, GA4, Page/IG |
automate-kampalo-work | Propose/confirm pauses, alerts, ROAS rules, report JSON |
Example prompts
Read
Use my Kampalo email
[email protected]. Brief Google vs Meta. Which campaigns have the worst ROAS?
Propose (no live pause)
Propose pausing the worst ROAS Google campaign. Do not confirm yet.
Expect automate_propose_pause and a pending action_id. The live campaign status must stay ENABLED.
Confirm (live pause)
Confirm pause for action
<id>.
Expect automate_confirm_action with confirm=true. Campaign becomes PAUSED (needs valid Google/Meta tokens).
Watchdog
Create a dry-run rule: pause Google campaigns if ROAS stays below 1 for 3 days with at least $10 spend. Do not enable live.
Expect automate_upsert_automation_rule with dry_run=true, is_active=false.
Failure
Stop MCP and ask again. The bot must not claim a pause or a saved rule.
License
MIT
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.