---
slug: "firebase-firebase-docs-mcp"
source_type: "readme"
source_url: "https://cdn.jsdelivr.net/gh/nohe427/firebase-docs-mcp@main/README.md"
repo: "https://github.com/nohe427/firebase-docs-mcp"
source_file: "README.md"
branch: "main"
---
# Firebase Docs MCP Server Setup

## Directory Layout
### [docs-mcp](https://github.com/nohe427/firebase-docs-mcp/tree/HEAD/docs-mcp)
This corresponds to the indexer for Firebaes docs. This is a Go project that
goes and indexes the Firebase documents contained within the listed filepaths.
### [docs-mcp-server](https://github.com/nohe427/firebase-docs-mcp/tree/HEAD/docs-mcp-server) 
This is the model context protocol server that serves content over a stdio
transport.
### [genkit-mcp-tester](https://github.com/nohe427/firebase-docs-mcp/tree/HEAD/genkit-mcp-tester)
This is a genkit implementation of an MCP client to test using the docs-mcp-server.

## How to use
### Start with indexing
1. Set the API Key. We are using the Gemini embedding model for the documents so
getting an API key from [AI Studio](https://aistudio.google.com) is required. To
set the API key, call `export genaikey="APIKEY"` in your terminal

1. Ensure that the output directory is empty. We are writing files to your home
directory in a folder called `.indexResp`. As go fetches documents from the
Firebase documentation site, it writes the files to disk in markdown format and
also indexes them in a SQL lite database in this directory. If indexing fails,
it performes a retry strategy to reindex the documents into a markdown format.

1. From the `docs-mcp` folder, call `go run .` This will start the indexing
process on the files listed near line 291 in the `main.go` file.

### Test the indexer
1. Set the API Key. We are using the Gemini embedding model for the documents so
getting an API key from [AI Studio](https://aistudio.google.com) is required. To
set the API key, call `export genaikey="APIKEY"` in your terminal

1. Switch into the `docs-mcp-server` folder.

1. Copy the indexed database to the local `docs-mcp-server` folder. This can be
done by calling `cp $HOME/.indexResp/db.sqlite .`

1. Install the dependencies and build the project. `npm ci` and then
`npm run build`. Once the project is built, you can then test the project by
calling `npm run build && npx @modelcontextprotocol/inspector node build/index.js`.
This starts the inspector and should print a URL for you to view the STDIO server with.

1. Click on Connect in the inspector view, and then click on tools -> List Tools
-> find-firebase-doc and then type in for your request that you would want to
use. **NOTE:** The author has had trouble using the terminal built into VSCode
for running this step, so if you run into a similar issue, try the system
terminal.

### Use Genkit for testing
1. Set the API key in the code by changing this line in
[embedding.ts](https://github.com/nohe427/firebase-docs-mcp/blob/HEAD/docs-mcp-server/src/helpers/embeddings.ts) from :
`const genAiKey = process.env.genaikey || "";`
to `const genAiKey = process.env.genaikey || "MYAPIKEY";`

1. Switch into the `genkit-mcp-tester` directory.

1. Copy the indexed database to the local `genkit-mcp-tester` folder. This can be
done by calling `cp $HOME/.indexResp/db.sqlite .`

1. Install the dependencies and build the project. `npm ci` and then
`npm run build`. Once the project is built, you can then test the project by
calling `npx genkit start -- npx tsx --watch src/index.ts`.
This starts the Genkit DevUI where you can interact with the flow and tool
directly. Open the DevUI, generally [http://localhost:4000](http://localhost:4000)
and visit the Tools -> `find-firebase-doc/find-firebase-doc` tool and make a
request here. You can see that the request is then returning the results we see
in the modelcontextprotocol/inspector.