This page is what happened when we ran it. The project itself — code, maintenance, community — has its own review: full repo review →
Chroma
Chroma's MCP server puts the Chroma vector database behind an assistant: create collections, add documents, run similarity and metadata queries over stdio. It ships as the Python package chroma-mcp, maintained by Chroma itself, and is meant to be launched with uvx. We started it that way on 2026-08-19 in a clean environment and it exited before initialize, so this page is about the crash.
How we started it
uvx chroma-mcpSkip it until you can control the working directory it starts in, then it is worth another look. Our probe never reached the tool list because pydantic-settings went looking for a .env file in the current directory and hit a permission error opening one it was not allowed to read. That is a launcher problem, not a bug in the vector search, but it is the kind of problem that will bite anyone running the server as a different user than the one who owns the project folder. Chroma the database is good; this wrapper's config loading assumes a friendlier filesystem than it deserves.
Use it if
Skip it if
The bill for your context window
There is no Context Tax to report, and that absence is the finding. tools/list never ran, so the chars/4 estimate we print on every other page has nothing to work with here: zero tools, zero bytes of schema, zero tokens, not because the server is lean but because it was never asked. That matters when you are budgeting a client's tool window, since an unmeasurable server is a hole in the plan rather than a cheap slot. A vector-store surface is normally small, since add, query, list and delete cover most of it, so the honest guess is that chroma-mcp lands under this batch's median once it boots. Guess is the operative word. We did not measure it.
Setup reality
It is a uvx launch of chroma-mcp over stdio, and the harness scraped no env-var names out of the failure, so there is no secret list to hand you. What there is instead is a working-directory contract nobody documents: chroma-mcp reads settings through pydantic-settings, which unconditionally tries to open a .env file in the process's current directory. Ours existed and was not readable by the probe user, and the traceback ends in a plain PermissionError on '.env' with an exit code of one. Fixes, in order of how much you will hate them: start the server from a directory with no .env, grant the running user read access to the one that is there, or set the client's cwd explicitly instead of inheriting whatever your editor happened to be in. The README also describes client, persistent, HTTP and Chroma Cloud modes selected by flags, which you will need to pick once the process survives long enough to read them.
Questions people ask
Why did the Chroma MCP server fail to start?
Not for a missing API key. The traceback ends in a PermissionError opening '.env' in the working directory, raised by pydantic-settings while loading configuration, and the process exited with code 1 before it answered initialize.
Can I fix it without changing the code?
Usually yes. Launch it from a directory with no .env file, or make the existing .env readable by whichever user your MCP client spawns the server as. Setting an explicit cwd in your client config is the cleanest of the three.
Does this mean Chroma itself is broken?
No. The database never got a chance to run. What failed is the settings load in the MCP wrapper's startup path, before any collection is opened or any query is served.
Did any other servers in the batch fail the same way?
Yes. Config loading during startup, before initialize, was one of the recurring failure shapes we saw, and a working directory the spawning user cannot fully read is a common trigger. Chroma is the clearest example of it.
Other databases servers we started
| Server | Vendor | Boots | Context tax |
|---|---|---|---|
| Elasticsearch | Elastic | ✗ | ~0 tokens |
| MongoDB | MongoDB | ✓ | ~9,462 tokens |
| MySQL | community (benborla29) | ✓ | ~100 tokens |
| Pinecone | Pinecone | ✓ | ~6,165 tokens |
| PostgreSQL (archived) | Anthropic (archived) | ✓ | ~33 tokens |
| Qdrant | Qdrant | ✗ | ~0 tokens |
| Supabase | Supabase | ✗ | ~0 tokens |
How this page is made: the server is spawned as an unprivileged user with a clean environment and no credentials, then asked for its tools, resources and prompts over stdio. Token figures are estimates at four characters per token, not a tokenizer count. One run, one machine. Corrections: contact the desk.