Skip to content

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].