
Chroma MCP Server
OfficialOfficial Chroma server: create collections and run vector, full-text, and metadata search.
Add to your client
Copy the config for your MCP client and paste it into its config file.
uvx chroma-mcp --client-type persistent --data-dir /absolute/path/to/dataPaste into ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"chroma-mcp-server": {
"command": "uvx",
"args": [
"chroma-mcp",
"--client-type",
"persistent",
"--data-dir",
"/absolute/path/to/data"
]
}
}
}Requires `uv` (the Python package runner). Install it from https://docs.astral.sh/uv/ if `uvx` is not found.
Step-by-step guides: Add to Claude Desktop · Add to Cursor · Add to Windsurf
Before you start
- Python with the `uv`/`uvx` package manager (Docker image also provided)
- A storage target depending on client type: nothing for `ephemeral`, a directory for `persistent`, a server URL for `http`, or a Chroma Cloud account for `cloud`
- For Chroma Cloud: a tenant ID, database name, and API key from your Chroma Cloud account (trychroma.com)
- For external embeddings: the provider's API key set as `CHROMA_<PROVIDER>_API_KEY` (e.g. `CHROMA_OPENAI_API_KEY`, `CHROMA_COHERE_API_KEY`)
About Chroma MCP Server
The Chroma MCP Server is the official server from Chroma (chroma-core) that gives AI assistants direct access to a Chroma vector database. It supports the full collection lifecycle — create, list, peek, inspect, modify, delete — plus document operations for adding, querying, updating, and deleting embedded documents.
Beyond vector similarity search, it can run full-text search and metadata filtering, so retrieval can combine semantic meaning with structured where/where_document constraints. Embeddings can be produced by Chroma's default function or by external providers (OpenAI, Cohere, Jina, VoyageAI, Roboflow) when you supply the matching API key.
It is flexible about where data lives: an ephemeral in-memory client for quick tests, a persistent local directory, an http client pointing at a self-hosted Chroma server, or a cloud client backed by Chroma Cloud. The client type and all connection details are chosen via command-line args or environment variables, and it runs over stdio via uvx chroma-mcp.
Tools & capabilities (12)
chroma_list_collectionsList all collections in the database
chroma_create_collectionCreate a new collection (optionally with an embedding function/config)
chroma_peek_collectionPreview a few sample records from a collection
chroma_get_collection_infoGet metadata and configuration for a collection
chroma_get_collection_countReturn the number of documents in a collection
chroma_modify_collectionRename or update a collection's metadata
chroma_delete_collectionDelete a collection
chroma_add_documentsAdd documents (with ids/metadata) to a collection, embedding them on insert
chroma_query_documentsSemantic vector query, optionally with metadata and full-text filters
chroma_get_documentsFetch documents by id or metadata filter
chroma_update_documentsUpdate existing documents or their metadata
chroma_delete_documentsDelete documents by id or filter
When to use it
- Use it when you want an AI assistant to build and query a vector knowledge base for RAG
- Use it when you need combined semantic, full-text, and metadata-filtered search over documents
- Use it when prototyping retrieval quickly with an in-memory (ephemeral) Chroma client
- Use it when persisting embeddings locally to a directory across sessions
- Use it when connecting an assistant to a self-hosted Chroma server or Chroma Cloud
- Use it when you want to use a specific embedding provider (OpenAI, Cohere, Jina, VoyageAI, Roboflow)
Quick setup
- 1Install `uv` so `uvx chroma-mcp` is runnable (or use the Docker image)
- 2Choose a client type with `--client-type` (`ephemeral`, `persistent`, `http`, or `cloud`)
- 3Provide the matching connection args: `--data-dir` for persistent, `--host`/`--port`/`--ssl` for http, or `--tenant`/`--database`/`--api-key` for cloud
- 4If using external embeddings, set `CHROMA_<PROVIDER>_API_KEY` (e.g. `CHROMA_OPENAI_API_KEY`) in the environment or a `.env` file
- 5Add the server to your MCP client config and restart it
- 6Verify the `chroma_*` tools appear and run `chroma_list_collections` as a smoke test
Security notes
Cloud mode requires a Chroma API key that grants tenant/database access, so keep it out of shared config. Persistent mode writes to a local data directory, so point --data-dir at a path you control and trust.
Chroma MCP Server FAQ
What client types are supported?
Four: `ephemeral` (in-memory, for testing), `persistent` (local directory), `http` (self-hosted Chroma server), and `cloud` (Chroma Cloud). Set it with `--client-type` or `CHROMA_CLIENT_TYPE`.
Do I need an embedding API key?
Not for the default embedding function. You only need a provider key (set as `CHROMA_<PROVIDER>_API_KEY`) if you choose OpenAI, Cohere, Jina, VoyageAI, or Roboflow embeddings.
How do I connect to Chroma Cloud?
Use `--client-type cloud` with your tenant ID, database name, and API key (via `--tenant`/`--database`/`--api-key` or the corresponding `CHROMA_*` env vars) from your Chroma Cloud account.
Can it do more than vector search?
Yes. `chroma_query_documents` supports metadata filters (`where`) and full-text filters (`where_document`) alongside semantic similarity search.
Where is data stored with the persistent client?
In the directory given by `--data-dir` (or `CHROMA_DATA_DIR`); the collections and embeddings persist there across restarts.
Alternatives to Chroma MCP Server
Compare all alternatives →Official MCP server providing persistent, file-backed knowledge-graph memory across sessions.
Structured step-by-step reasoning tool for breaking problems into revisable thought sequences.
Fully managed remote server for AWS docs, blogs, What's-New and Well-Architected guidance — no key.
Compare Chroma MCP Server with: