MCP server setup
FireFetch ships a Model Context Protocol server, so an AI assistant can read your Firestore through your running app — using credentials you have already authorised, under the safety rules you have already set.
How it fits together
The MCP server does not hold credentials and does not talk to Google. It connects to your running FireFetch app over a localhost bridge; FireFetch then uses the accounts already signed in.
Consequences worth understanding:
- FireFetch must be running. The server discovers the app’s bridge port from a local config file at startup.
- Nothing is exposed to the network. The bridge listens on loopback only.
- The write gate still applies. An assistant cannot write to a database that is read-only, exactly as a script cannot.
- Runs are time-capped, so a confused assistant cannot start something that never finishes.
Claude Desktop
Add FireFetch to claude_desktop_config.json:
{
"mcpServers": {
"firefetch": {
"command": "npx",
"args": ["-y", "firefetch-mcp"]
}
}
}
The file lives at:
| Platform | Path |
|---|---|
| macOS | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Windows | %APPDATA%\Claude\claude_desktop_config.json |
| Linux | ~/.config/Claude/claude_desktop_config.json |
Restart Claude Desktop afterwards.
Claude Code
claude mcp add firefetch -- npx -y firefetch-mcp
Available tools
| Tool | What it does |
|---|---|
list_projects |
Which projects and databases are connected |
list_collections |
Collections in a database, including subcollections |
query_documents |
A filtered, ordered, limited query |
get_document |
One document by path |
execute_js_query |
Run a JavaScript script, using the same engine as the editor |
Checking it works
Start FireFetch, then ask your assistant something that requires reading data — “what collections are in my project?” is a good first test. If it cannot see anything, confirm FireFetch is actually running, and that you restarted the MCP client after editing its config.
Things to think about first
Data your assistant reads becomes part of its context. Before connecting a database that holds personal or regulated data, apply the same judgement you would before pasting a document into any other tool.
Leaving the database read-only is a sensible default, and it is the default.
Something unclear or out of date? Email[email protected].