Firebase MCP for your local emulators
firenook mcp gives your coding agent 54 tools over the Firebase emulators on your machine: the
log, every function call with its error, why the rules denied a request, and your data. Not production.
npx firenook mcp add- You
The Stripe webhook answers 500 on my machine. Why?
functions_list_calls outcome: "failed"
- failed
- 500 stripeWebhook http POST /, 1.15 ms at 13:06:19
functions_get_call id: "e72ca3-25"
- error
- Error: No signatures found matching the expected signature for payload
- at
- functions/index.js:24:11
- headers
- host, connection, content-type, accept, accept-language, sec-fetch-mode, user-agent, accept-encoding, content-length
- body
- {"type":"checkout.session.completed"}
rules_evaluate service: "storage", method: "create", path: "products/mug.svg"
- verdict
- deny as unauthenticated
- line 9
- allow read, write: if false;
What your agent can do
The 54 tools cover every service Firenook runs, so an agent can reproduce a bug, find the failing call and check its fix without leaving the emulators.
The log and function calls 7
Search every emulator’s log and each function’s output. List, call and replay functions, and read a failed call’s request, answer, error and stack.
functions_listfunctions_invokefunctions_list_callsfunctions_get_callfunctions_replay_calllogs_searchlogs_facetsSecurity Rules 3
Read the rules in force, ask whether a request would be allowed, and list recent denials with the lines that decided them.
rules_getrules_evaluaterules_list_denialsFirestore 6
Read, query, count, write and delete documents, and list collections, in any database of the project.
firestore_getfirestore_queryfirestore_countfirestore_setfirestore_deletefirestore_list_collectionsAuthentication 13
Find, create and disable users, set their claims, mint an ID token to call a function as them, and read the codes and links Auth would have sent.
auth_list_usersauth_get_userauth_create_userauth_delete_userauth_oob_codesauth_verification_codesauth_mint_tokenauth_set_claimsauth_remove_claimsauth_disable_userauth_enable_userauth_revoke_tokensauth_list_tenantsCloud Storage 7
List, read, upload, copy, move and delete files, and read their metadata.
storage_liststorage_get_metadatastorage_readstorage_uploadstorage_deletestorage_copystorage_movePub/Sub and schedules 6
Publish a message, list topics and subscriptions, peek at a backlog without taking it, and run a scheduled function now.
pubsub_publishpubsub_list_topicspubsub_list_subscriptionspubsub_peekschedules_listschedules_runTasks, Eventarc and Extensions 9
See and run queued tasks, publish and replay custom events, and reload an extension after changing its parameters.
tasks_statstasks_listtasks_runeventarc_publisheventarc_list_eventseventarc_get_eventeventarc_replay_eventextensions_listextensions_reloadThe suite 3
What is running and where, an export of its data, and a reset of the services you name.
firenook_statusemulators_exportemulators_clear
From tools/list of 0.2.0. Every tool with its parameters.
One command sets it up
Run it in your project. It finds Claude Code, Cursor and VS Code and gives each one the server in the project’s own files.
Other servers in those files stay as they are, and a second run changes nothing. Commit the files, and everyone on your team gets the server with the repository. --dry-run shows what it would write.
npx firenook mcp add{
"mcpServers": {
"firenook": {
"command": "npx",
"args": ["firenook", "mcp"]
}
}
}{
"servers": {
"firenook": {
"type": "stdio",
"command": "npx",
"args": ["firenook", "mcp"]
}
}
}Local by design
An agent with the emulator can try things production would never let it try, and nothing it does leaves your machine.
On your machine
The server talks to your agent over stdio and to the emulators on this machine. It finds the running suite again on every call, so it can start before the emulators do.
Never your real project
Every tool works on the emulators. A demo- project never reaches Google, and the users the agent creates have made-up credentials, never real ones.
Clear about what it changes
Tools that change data say so in their names, and storage_delete and emulators_clear start their descriptions with DESTRUCTIVE, so an agent can tell before it calls them.
Questions
The rest is in the MCP guide. Something else? Ask on GitHub.
Which agents does it work with?
Any agent that runs MCP servers over stdio. firenook mcp add writes the project files for Claude Code, Cursor and VS Code; for others, such as Codex, it prints the line to add: codex mcp add firenook -- npx firenook mcp.
Do the emulators have to be running?
Yes: the tools work on the running suite. Start it as usual with npx firenook emulators:start. The server looks for it on every call, so you can start the emulators after the agent.
Can the agent change my data?
Yes, in the emulators: it can write documents, create users and upload files, which is how it reproduces a bug. Nothing reaches your Firebase project. Export first with npx firenook emulators:export if you want a copy.
Can I give it fewer tools?
Yes. firenook mcp --only firestore,auth serves only those groups of tools.
Does it need a project folder?
No. Started outside a project, it uses the one suite running on this machine, and asks you to choose with --project when there are two.
Which MCP versions does it speak?
Protocol 2025-06-18, and clients on 2025-03-26 or 2024-11-05 are accepted. It has no dependencies of its own.
Give your agent the emulator
Install Firenook in your project, start the emulators, and add the server. Then ask your agent why something fails.