Chroma MCP Server
The official MCP server for the Chroma vector database: collections, documents, semantic and full-text search
- 600 ★ on the repository
- Last commit
- Apache-2.0
Extended access
Why this level
- Can delete collections and documents
- With external embeddings sends text to third-party APIs
Install
- Works in
Manual install
"chroma": {
"command": "uvx",
"args": [
"chroma-mcp",
"--client-type",
"persistent",
"--data-dir",
"/full/path/to/your/data/directory"
]
}Persistent local database. For Chroma Cloud use --client-type cloud with --tenant, --database and --api-key; for your own server use --client-type http.
Access and checks
How we reviewExtended accessThe tool runs code or makes network calls and only reads external data.
- Can delete collections and documents
- With external embeddings sends text to third-party APIs
This is third-party code. Review the repository files before installing.
What it does
The server lets an agent work with a Chroma database: create, modify and delete collections, add documents with metadata, and search by meaning, by text and with metadata filters. It connects to an in-memory database, a local directory on disk, your own Chroma server over HTTP, or Chroma Cloud. When creating a collection you pick an embedding function: the built-in one or external ones from OpenAI, Cohere, Jina, VoyageAI and Roboflow. The chosen function is stored in the collection config and reused automatically.
Who it is for. For RAG developers and anyone who wants to give an agent long-term memory in a vector database.
Good fit when
- You want to give an agent memory or a knowledge base with semantic search
- You need to inspect and debug Chroma collections from chat
- You want a quick RAG prototype on a local database
Not a fit when
- Your vectors already live elsewhere, such as pgvector or Qdrant
- Collections were created with Chroma 0.6.3 or older: embedding function persistence is not supported
Example request
Create a meeting-notes collection, save these notes to it, then find everything about the budgetMCP
- Transport
- stdio
- Authentication
- not required
Environment variables
CHROMA_CLIENT_TYPE- http, cloud, persistent or ephemeral
CHROMA_DATA_DIR- Data directory for the persistent client
CHROMA_API_KEYsecret- Chroma Cloud API key
CHROMA_TENANT- Chroma Cloud tenant
CHROMA_DATABASE- Chroma Cloud database name
CHROMA_CUSTOM_AUTH_CREDENTIALSsecret- Credentials for a self-hosted Chroma server
Limitations
External embedding functions need keys for those services, and the OpenAI API and some others are unavailable from Russia without a VPN. Chroma Cloud needs an account and a key. With built-in embeddings and a local database no external services are needed. The repository was last updated about a year ago.
How to disable. Remove the chroma block from your MCP client config. Persistent client data stays in the directory you set.
FAQ
Where is data stored?
It depends on the client type: ephemeral keeps it in memory until restart, persistent writes to a directory, http and cloud store it on a Chroma server.
How do I keep keys out of arguments?
Put them in an env file and pass its path with --dotenv-path; external embedding keys use the CHROMA_<NAME>_API_KEY pattern.
Discussion
No questions or reviews yet.
Related
MCP serversA local MCP server that turns a folder of documents into a knowledge base with hybrid search for Claude Code and Cursor
Official Pinecone MCP server: documentation search, index creation, record upserts and search from your agent
Official Zilliz MCP server: the agent runs vector and text search and manages collections and data in Milvus
Redis's official MCP server: strings, hashes, streams, JSON and vector search from your agent
Neo4j Labs MCP servers: Cypher queries on a graph, graph memory for agents, Aura management and data modeling
Official MongoDB MCP server: queries and aggregations, index management, Atlas clusters and local deployments
README in short
The README lists four client types and the full set of collection and document tools. It gives Claude Desktop configs for each client type, launched through uvx. It also covers configuration via environment variables and a .chroma_env file, including keys for external embedding functions.