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.
Features
Flexible Client Types
Collection Management
Document Operations
Supported Tools
chroma_list_collections - List all collections with pagination support
chroma_create_collection - Create a new collection with optional HNSW configuration
chroma_peek_collection - View a sample of documents in a collection
chroma_get_collection_info - Get detailed information about a collection
chroma_get_collection_count - Get the number of documents in a collection
chroma_modify_collection - Update a collection's name or metadata
chroma_delete_collection - Delete a collection
chroma_add_documents - Add documents with optional metadata and custom IDs
chroma_query_documents - Query documents using semantic search with advanced filtering
chroma_get_documents - Retrieve documents by IDs or filters with pagination
chroma_update_documents - Update existing documents' content, metadata, or embeddings
chroma_delete_documents - Delete specific documents from a collection
Embedding Functions
Chroma 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
Usage with Claude Desktop
To add an ephemeral client, add the following to your claude_desktop_config.json file:
To add a persistent client, add the following to your claude_desktop_config.json file:
This will create a persistent client that will use the data directory specified.
To connect to Chroma Cloud, add the following to your claude_desktop_config.json file:
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"].
To connect to a [self-hosted Chroma instance on your own cloud provider](https://docs.trychroma.com/
production/deployment), add the following to your claude_desktop_config.json file:
This will create an HTTP client that connects to your self-hosted Chroma instance.
Demos
Find reference usages, such as shared knowledge bases & adding memory to context windows in the Chroma MCP Docs
Using Environment Variables
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.
Embedding Function Environment Variables
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.
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.
Features
Flexible Client Types
Collection Management
Document Operations
Supported Tools
chroma_list_collections - List all collections with pagination support
chroma_create_collection - Create a new collection with optional HNSW configuration
chroma_peek_collection - View a sample of documents in a collection
chroma_get_collection_info - Get detailed information about a collection
chroma_get_collection_count - Get the number of documents in a collection
chroma_modify_collection - Update a collection's name or metadata
chroma_delete_collection - Delete a collection
chroma_add_documents - Add documents with optional metadata and custom IDs
chroma_query_documents - Query documents using semantic search with advanced filtering
chroma_get_documents - Retrieve documents by IDs or filters with pagination
chroma_update_documents - Update existing documents' content, metadata, or embeddings
chroma_delete_documents - Delete specific documents from a collection
Embedding Functions
Chroma 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
Usage with Claude Desktop
To add an ephemeral client, add the following to your claude_desktop_config.json file:
To add a persistent client, add the following to your claude_desktop_config.json file:
This will create a persistent client that will use the data directory specified.
To connect to Chroma Cloud, add the following to your claude_desktop_config.json file:
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"].
To connect to a [self-hosted Chroma instance on your own cloud provider](https://docs.trychroma.com/
production/deployment), add the following to your claude_desktop_config.json file:
This will create an HTTP client that connects to your self-hosted Chroma instance.
Demos
Find reference usages, such as shared knowledge bases & adding memory to context windows in the Chroma MCP Docs
Using Environment Variables
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.
Embedding Function Environment Variables
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.