by chroma-core
Offers an MCP server exposing Chroma's vector database capabilities for LLM applications, supporting collection and document management, multiple embedding functions, and flexible client types such as in‑memory, persistent, HTTP, and cloud.
Provides a Model Context Protocol (MCP) server that wraps Chroma, an open‑source embedding database. It lets LLM applications create, query, and manage vector collections through a standardized protocol, enabling seamless context retrieval.
uvx chroma-mcp (or install with pip install chroma-mcp and execute chroma-mcp).--data-dir.--host, --port, --ssl, etc.).--tenant, --database, --api-key)..env file) for defaults; command‑line arguments override them.chroma_create_collection, chroma_add_documents, chroma_query_documents, etc., which can be called by LLM agents or client libraries.Q: Do I need an API key for embedding functions?
A: Yes, for external providers (Cohere, OpenAI, Jina, VoyageAI, Roboflow) set the corresponding CHROMA_<PROVIDER>_API_KEY environment variable.
Q: Can I switch embedding functions after a collection is created? A: The embedding function is persisted with the collection configuration; to change it you must create a new collection.
Q: How do I persist data across restarts?
A: Use the persistent client type and specify a --data-dir path, or connect to Chroma Cloud/HTTP which store data externally.
Q: What authentication is required for the HTTP client?
A: Provide --custom-auth-credentials (or the related env var) and optionally enable SSL via --ssl true.
Q: How do I control pagination when listing collections?
A: The chroma_list_collections tool accepts limit and offset parameters to page through results.
The Model Context Protocol (MCP) is an open protocol designed for effortless integration between LLM applications and external data sources or tools, offering a standardized framework to seamlessly provide LLMs with the context they require.
This server provides data retrieval capabilities powered by Chroma, enabling AI models to create collections over generated data and user inputs, and retrieve that data using vector search, full text search, metadata filtering, and more.
Flexible Client Types
Collection Management
Document Operations
chroma_list_collections - List all collections with pagination supportchroma_create_collection - Create a new collection with optional HNSW configurationchroma_peek_collection - View a sample of documents in a collectionchroma_get_collection_info - Get detailed information about a collectionchroma_get_collection_count - Get the number of documents in a collectionchroma_modify_collection - Update a collection's name or metadatachroma_delete_collection - Delete a collectionchroma_add_documents - Add documents with optional metadata and custom IDschroma_query_documents - Query documents using semantic search with advanced filteringchroma_get_documents - Retrieve documents by IDs or filters with paginationchroma_update_documents - Update existing documents' content, metadata, or embeddingschroma_delete_documents - Delete specific documents from a collectionChroma MCP supports several embedding functions: default, cohere, openai, jina, voyageai, and roboflow.
The embedding functions utilize Chroma's collection configuration, which persists the selected embedding function of a collection for retrieval. Once a collection is created using the collection configuration, on retrieval for future queries and inserts, the same embedding function will be used, without needing to specify the embedding function again. Embedding function persistance was added in v1.0.0 of Chroma, so if you created a collection using version <=0.6.3, this feature is not supported.
When accessing embedding functions that utilize external APIs, please be sure to add the environment variable for the API key with the correct format, found in Embedding Function Environment Variables
claude_desktop_config.json file:"chroma": {
"command": "uvx",
"args": [
"chroma-mcp"
]
}
claude_desktop_config.json file:"chroma": {
"command": "uvx",
"args": [
"chroma-mcp",
"--client-type",
"persistent",
"--data-dir",
"/full/path/to/your/data/directory"
]
}
This will create a persistent client that will use the data directory specified.
claude_desktop_config.json file:"chroma": {
"command": "uvx",
"args": [
"chroma-mcp",
"--client-type",
"cloud",
"--tenant",
"your-tenant-id",
"--database",
"your-database-name",
"--api-key",
"your-api-key"
]
}
This will create a cloud client that automatically connects to api.trychroma.com using SSL.
Note: Adding API keys in arguments is fine on local devices, but for safety, you can also specify a custom path for your environment configuration file using the --dotenv-path argument within the args list, for example: "args": ["chroma-mcp", "--dotenv-path", "/custom/path/.env"].
claude_desktop_config.json file:"chroma": {
"command": "uvx",
"args": [
"chroma-mcp",
"--client-type",
"http",
"--host",
"your-host",
"--port",
"your-port",
"--custom-auth-credentials",
"your-custom-auth-credentials",
"--ssl",
"true"
]
}
This will create an HTTP client that connects to your self-hosted Chroma instance.
Find reference usages, such as shared knowledge bases & adding memory to context windows in the Chroma MCP Docs
You can also use environment variables to configure the client. The server will automatically load variables from a .env file located at the path specified by --dotenv-path (defaults to .chroma_env in the working directory) or from system environment variables. Command-line arguments take precedence over environment variables.
# Common variables
export CHROMA_CLIENT_TYPE="http" # or "cloud", "persistent", "ephemeral"
# For persistent client
export CHROMA_DATA_DIR="/full/path/to/your/data/directory"
# For cloud client (Chroma Cloud)
export CHROMA_TENANT="your-tenant-id"
export CHROMA_DATABASE="your-database-name"
export CHROMA_API_KEY="your-api-key"
# For HTTP client (self-hosted)
export CHROMA_HOST="your-host"
export CHROMA_PORT="your-port"
export CHROMA_CUSTOM_AUTH_CREDENTIALS="your-custom-auth-credentials"
export CHROMA_SSL="true"
# Optional: Specify path to .env file (defaults to .chroma_env)
export CHROMA_DOTENV_PATH="/path/to/your/.env"
When using external embedding functions that access an API key, follow the naming convention
CHROMA_<>_API_KEY="<key>".
So to set a Cohere API key, set the environment variable CHROMA_COHERE_API_KEY="". We recommend adding this to a .env file somewhere and using the CHROMA_DOTENV_PATH environment variable or --dotenv-path flag to set that location for safekeeping.
Please log in to share your review and rating for this MCP.
Explore related MCPs that share similar capabilities and solve comparable challenges
by googleapis
An MCP server that streamlines database tool development by handling connection pooling, authentication, observability, and secure access, allowing agents to interact with databases via natural language.
by bytebase
Provides a universal gateway that lets MCP‑compatible clients explore and query MySQL, PostgreSQL, SQL Server, MariaDB, and SQLite databases through a single standardized interface.
by designcomputer
Enables secure interaction with MySQL databases via the Model Context Protocol, allowing AI applications to list tables, read contents, and execute queries safely.
by benborla
Provides read‑only access to MySQL databases for large language models, allowing schema inspection and safe execution of SQL queries.
by neo4j-contrib
Enables natural‑language interaction with Neo4j databases, allowing large language models to query, modify, and manage graph data through multiple transport modes.
by mongodb-js
Provides a Model Context Protocol server that enables interaction with MongoDB databases and MongoDB Atlas clusters through a unified API.
by ClickHouse
Enables AI assistants to run read‑only ClickHouse queries, list databases and tables, and execute embedded chDB queries through an MCP interface.
by neondatabase
Interact with Neon Postgres databases using natural language commands through the Model Context Protocol, enabling conversational database creation, migration, and query execution.
by motherduckdb
Enables SQL analytics on DuckDB and MotherDuck databases via a Model Context Protocol server, allowing AI assistants and IDEs to query data directly.