# chroma-core/chroma-mcp [Health: Active]

**Category:** 🗄️ Databases  
**Repository:** https://github.com/chroma-core/chroma-mcp  
**GitHub Stars:** 600  
**Views:** 4  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/chroma-core-chroma-mcp

## Description
Chroma MCP server to access local and cloud Chroma instances for retrieval capabilities

## Tools
Capabilities this server exposes over MCP:

- **chroma_list_collections** — List all collection names in the Chroma database with pagination support.
    
    Args:
        limit: Optional maximum number of collections to return
        offset: Optional number of collections to skip before returning results
    
    Returns:
        List of collection names or ["__NO_COLLECTIONS_FOUND__"] if database is empty
    
- **chroma_create_collection** — Create a new Chroma collection with configurable HNSW parameters.
    
    Args:
        collection_name: Name of the collection to create
        embedding_function_name: Name of the embedding function to use. Options: 'default', 'cohere', 'openai', 'jina', 'voyageai', 'ollama', 'roboflow'
        metadata: Optional metadata dict to add to the collection
    
- **chroma_peek_collection** — Peek at documents in a Chroma collection.
    
    Args:
        collection_name: Name of the collection to peek into
        limit: Number of documents to peek at
    
- **chroma_get_collection_info** — Get information about a Chroma collection.
    
    Args:
        collection_name: Name of the collection to get info about
    
- **chroma_get_collection_count** — Get the number of documents in a Chroma collection.
    
    Args:
        collection_name: Name of the collection to count
    
- **chroma_modify_collection** — Modify a Chroma collection's name or metadata.
    
    Args:
        collection_name: Name of the collection to modify
        new_name: Optional new name for the collection
        new_metadata: Optional new metadata for the collection
    
- **chroma_fork_collection** — Fork a Chroma collection.
    
    Args:
        collection_name: Name of the collection to fork
        new_collection_name: Name of the new collection to create
        metadata: Optional metadata dict to add to the new collection
    
- **chroma_delete_collection** — Delete a Chroma collection.
    
    Args:
        collection_name: Name of the collection to delete
    
- **chroma_add_documents** — Add documents to a Chroma collection.
    
    Args:
        collection_name: Name of the collection to add documents to
        documents: List of text documents to add
        ids: List of IDs for the documents (required)
        metadatas: Optional list of metadata dictionaries for each document
    
- **chroma_query_documents** — Query documents from a Chroma collection with advanced filtering.
    
    Args:
        collection_name: Name of the collection to query
        query_texts: List of query texts to search for
        n_results: Number of results to return per query
        where: Optional metadata filters using Chroma's query operators
               Examples:
               - Simple equality: {"metadata_field": "value"}
               - Comparison: {"metadata_field": {"$gt": 5}}
               - Logical AND: {"$and": [{"field1": {"$eq": "value1"}}, {"field2": {"$gt": 5}}]}
               - Logical OR: {"$or": [{"field1": {"$eq": "value1"}}, {"field1": {"$eq": "value2"}}]}
        where_document: Optional document content filters
               Examples:
               - Contains: {"$contains": "value"}
               - Not contains: {"$not_contains": "value"}
               - Regex: {"$regex": "[a-z]+"}
               - Not regex: {"$not_regex": "[a-z]+"}
               - Logical AND: {"$and": [{"$contains": "value1"}, {"$not_regex": "[a-z]+"}]}
               - Logical OR: {"$or": [{"$regex": "[a-z]+"}, {"$not_contains": "value2"}]}
        include: List of what to include in response. By default, this will include documents, metadatas, and distances.
    
- **chroma_get_documents** — Get documents from a Chroma collection with optional filtering.
    
    Args:
        collection_name: Name of the collection to get documents from
        ids: Optional list of document IDs to retrieve
        where: Optional metadata filters using Chroma's query operators
               Examples:
               - Simple equality: {"metadata_field": "value"}
               - Comparison: {"metadata_field": {"$gt": 5}}
               - Logical AND: {"$and": [{"field1": {"$eq": "value1"}}, {"field2": {"$gt": 5}}]}
               - Logical OR: {"$or": [{"field1": {"$eq": "value1"}}, {"field1": {"$eq": "value2"}}]}
        where_document: Optional document content filters
               Examples:
               - Contains: {"$contains": "value"}
               - Not contains: {"$not_contains": "value"}
               - Regex: {"$regex": "[a-z]+"}
               - Not regex: {"$not_regex": "[a-z]+"}
               - Logical AND: {"$and": [{"$contains": "value1"}, {"$not_regex": "[a-z]+"}]}
               - Logical OR: {"$or": [{"$regex": "[a-z]+"}, {"$not_contains": "value2"}]}
        include: List of what to include in response. By default, this will include documents, and metadatas.
        limit: Optional maximum number of documents to return
        offset: Optional number of documents to skip before returning results
    
    Returns:
        Dictionary containing the matching documents, their IDs, and requested includes
    
- **chroma_update_documents** — Update documents in a Chroma collection.

    Args:
        collection_name: Name of the collection to update documents in
        ids: List of document IDs to update (required)
        embeddings: Optional list of new embeddings for the documents.
                    Must match length of ids if provided.
        metadatas: Optional list of new metadata dictionaries for the documents.
                   Must match length of ids if provided.
        documents: Optional list of new text documents.
                   Must match length of ids if provided.

    Returns:
        A confirmation message indicating the number of documents updated.

    Raises:
        ValueError: If 'ids' is empty or if none of 'embeddings', 'metadatas',
                    or 'documents' are provided, or if the length of provided
                    update lists does not match the length of 'ids'.
        Exception: If the collection does not exist or if the update operation fails.
    
- **chroma_delete_documents** — Delete documents from a Chroma collection.

    Args:
        collection_name: Name of the collection to delete documents from
        ids: List of document IDs to delete

    Returns:
        A confirmation message indicating the number of documents deleted.

    Raises:
        ValueError: If 'ids' is empty
        Exception: If the collection does not exist or if the delete operation fails.
    

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `uvx` (confidence: high):

```json
"mcpServers": {
  "chroma-mcp": {
    "command": "uvx",
    "args": ["chroma-mcp"],
    "env": {
      "CHROMA_CLIENT_TYPE": "",
      "CHROMA_DATA_DIR": "",
      "CHROMA_TENANT": "",
      "CHROMA_DATABASE": "",
      "CHROMA_API_KEY": "",
      "CHROMA_HOST": "",
      "CHROMA_PORT": "",
      "CHROMA_CUSTOM_AUTH_CREDENTIALS": ""
    }
  }
}
```

**Requires environment variables:** `CHROMA_CLIENT_TYPE`, `CHROMA_DATA_DIR`, `CHROMA_TENANT`, `CHROMA_DATABASE`, `CHROMA_API_KEY`, `CHROMA_HOST`, `CHROMA_PORT`, `CHROMA_CUSTOM_AUTH_CREDENTIALS` — the values above are empty placeholders; fill in real credentials before running (see the repository for what each one is for).

## Documentation

## What chroma-core/chroma-mcp does

The chroma-core/chroma-mcp MCP server connects an MCP-compatible AI client to Chroma, an embedding database. It supports ephemeral in-memory storage, persistent file-based storage, self-hosted Chroma over HTTP, and Chroma Cloud. This makes it suitable for agents that need retrieval over indexed documents, shared knowledge bases, or stored application data.

As a 🗄️ Databases entry, chroma-core/chroma-mcp focuses on database access rather than application-specific workflows. Agents can inspect collections, create or modify them, manage metadata, and add, retrieve, update, or delete documents.

## How it works

The server runs as a standard MCP process and exposes Chroma operations as named tools. Collection tools cover listing with pagination, creation, peeking at sample documents, retrieving collection information and counts, renaming or changing metadata, forking, and deletion.

Document tools accept required IDs for inserts and updates where applicable. Queries can use semantic search with a requested result count, metadata predicates, and document-content predicates. Supported filter patterns include equality and comparisons, logical AND and OR, text containment, and regular expressions. Retrieval can also be limited with IDs, offsets, and limits.

Collections can be created with one of the supported embedding function names: `default`, `cohere`, `openai`, `jina`, `voyageai`, `ollama`, or `roboflow`. The selected collection configuration is reused for later inserts and retrievals when supported by the Chroma version.

## Setup and configuration

Use the default invocation for an ephemeral client, or pass `--client-type persistent` and `--data-dir` for file-backed storage. A cloud connection uses `--client-type cloud`, tenant, database, and API key arguments. A self-hosted deployment uses `--client-type http` with host, port, optional custom authentication credentials, and SSL settings.

The same settings can come from system environment variables or a dotenv file. The default dotenv filename is `.chroma_env`; a different path can be selected with `--dotenv-path` or `CHROMA_DOTENV_PATH`. Command-line options take precedence over environment variables. External embedding providers require API keys using the `CHROMA_<PROVIDER>_API_KEY` naming pattern.

## Tools and capabilities

chroma-core/chroma-mcp provides these MCP tools:

- List, create, inspect, count, modify, fork, and delete collections.
- Add documents with IDs and optional metadata.
- Query documents with semantic search, metadata filters, and content filters.
- Retrieve documents by IDs or filters with pagination.
- Update document text, metadata, or embeddings.
- Delete documents by ID.

Use `chroma_peek_collection` for a limited sample, while `chroma_get_documents` is intended for filtered or ID-based retrieval. Query and retrieval responses can request specific included fields; documented defaults include documents and metadata, with distances also included by default for queries.

## Limitations and notes

External embedding functions depend on their corresponding API keys. Persisted embedding-function configuration requires Chroma version 1.0.0 or later; collections created with versions through 0.6.3 do not support that behavior. Update operations require at least one replacement field, and supplied update lists must match the number of IDs. Empty ID lists are invalid for update and delete operations.

_Full upstream README: https://allmcps.com/mcp/chroma-core-chroma-mcp/readme_

