MCP servers
Let Claude Code and Cursor read your Firebase, RevenueCat, OneSignal, and Expo projects without leaving the editor.
The kit ships a .mcp.json at the project root with seven Model Context
Protocol servers already declared. Where
agents.md tells an agent how the code is organised, MCP lets it reach the
services behind that code: query Firestore, check a subscriber's entitlement,
send a test push, or start an EAS build, all from a prompt.
The file
{
"mcpServers": {
"heroui-native": {
"command": "npx",
"args": ["-y", "@heroui/native-mcp@latest"]
},
"firebase": {
"command": "npx",
"args": [
"-y",
"firebase-tools@15.4.0",
"mcp",
"--only",
"auth,firestore,functions,crashlytics,remoteconfig"
]
},
"onesignal": {
"type": "http",
"url": "https://api.onesignal.com/mcp/oauth"
},
"airbridge": {
"type": "http",
"url": "https://mcp.airbridge.io/mcp"
},
"expo": {
"type": "http",
"url": "https://mcp.expo.dev/mcp"
},
"revenuecat": {
"type": "http",
"url": "https://mcp.revenuecat.ai/mcp"
},
"plunk": {
"command": "npx",
"args": ["-y", "@plunk/mcp"],
"env": {
"PLUNK_API_KEY": "${PLUNK_API_KEY}"
}
}
}
}Two transports appear here:
- stdio (
command+args) runs the server locally throughnpx. Nothing is installed up front; the package is fetched on first use. - http (
type: "http"+url) connects to a hosted server. These prompt you to sign in through OAuth the first time an agent calls them.
What each server gives you
| Server | Transport | Use it for |
|---|---|---|
heroui-native | stdio | Generating and editing HeroUI Native components in the kit's own design language. |
firebase | stdio | Auth, Firestore, Functions, Crashlytics, and Remote Config. |
onesignal | http | Creating segments and sending test notifications. |
airbridge | http | Reading install attribution and campaign performance. |
expo | http | Expo and EAS docs, plus builds and submissions. |
revenuecat | http | Products, entitlements, and subscriber state while you build the paywall. |
plunk | stdio | Drafting and sending transactional or marketing email. |
The Firebase server is deliberately scoped with --only. It can reach
auth, firestore, functions, crashlytics, and remoteconfig, and nothing
else. Add a service to that list only when you actually need it.
Enable it in your editor
Claude Code reads .mcp.json from the project root. Open the project and
approve the servers when prompted, or list them explicitly:
claude mcp listCursor reads the same format from .cursor/mcp.json. Symlink or copy the file:
mkdir -p .cursor && cp .mcp.json .cursor/mcp.jsonThen enable the servers under Settings → MCP.
Credentials
Only plunk needs a key in the file itself. Add it to your shell profile or
.env.local so the ${PLUNK_API_KEY} reference resolves:
export PLUNK_API_KEY="sk_..."firebase uses whatever account firebase login already authenticated. The
four HTTP servers each run their own OAuth flow on first call, so no secrets
live in the repo.
These servers talk to your real projects. A prompt that asks an agent to delete a Firestore collection will delete it. Point them at a development Firebase project and a RevenueCat sandbox while you are building.
Removing a server
Delete its entry from .mcp.json. Nothing else in the kit depends on the file,
so removing a server only removes what agents can reach. See
Customize AI rules for the agents.md side of the setup.