Chroma

by chroma-core

92 stars
18k downloads
Not rated
GitHub

About

Integrates with Chroma vector database to enable collection management, document operations, and vector search capabilities for knowledge bases and context-aware conversations.

Details

Author
chroma-core
Repository
chroma-core/chroma-mcp
GitHub stars
92
Downloads
18,029
License
Apache License 2.0
Categories
Developer Tools, Database, Other, Knowledge Base, Search, Productivity, Design, Workplace, File Management, AI, Infrastructure, Frontend, Cloud Service
Tags
#web

- Flexible Client Types
- Ephemeral (in-memory) for testing and development
- Persistent for file-based storage
- HTTP client for self-hosted Chroma instances
- Cloud client for Chroma Cloud integration (automatically connects to api.trychroma.com)

- Collection Management
- Create, modify, and delete collections
- List all collections with pagination support
- Get collection information and statistics
- Configure HNSW parameters for optimized vector search
- Select embedding functions when creating collections

- Document Operations
- Add documents with optional metadata and custom IDs
- Query documents using semantic search
- Advanced filtering using metadata and document content
- Retrieve documents by IDs or filters
- Full text search capabilities

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name Chroma
    Command (node, npx, python, etc.) uvx
    Arguments
    • Argument 1 chroma-mcp

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

1. To add an ephemeral client, add the following to your claude_desktop_config.json file:

"chroma": {
    "command": "uvx",
    "args": [
        "chroma-mcp"
    ]
}

2. To add a persistent client, add the following to your 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.

3. To connect to Chroma Cloud, add the following to your 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"].

4. To connect to a self-hosted Chroma instance on your own cloud provider, add the following to your 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.

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.

``bash

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.

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.

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "chroma": {
            "env": {},
            "args": [
                "chroma-mcp"
            ],
            "command": "uvx"
        }
    }
}

Linux

{
    "env": [],
    "args": [
        "chroma-mcp"
    ],
    "command": "uvx"
}

Macos

{
    "env": [],
    "args": [
        "chroma-mcp"
    ],
    "command": "uvx"
}

Windows

{
    "env": [],
    "args": [
        "/c",
        "uvx",
        "chroma-mcp"
    ],
    "command": "cmd"
}

Chroma MCP Server

smithery badge

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.

This is a MCP server for self-hosting your access to Chroma. If you are looking for Package Search you can find the repository for that here.

Features

- Flexible Client Types
- Ephemeral (in-memory) for testing and development
- Persistent for file-based storage
- HTTP client for self-hosted Chroma instances
- Cloud client for Chroma Cloud integration (automatically connects to api.trychroma.com)

- Collection Management
- Create, modify, and delete collections
- List all collections with pagination support
- Get collection information and statistics
- Configure HNSW parameters for optimized vector search
- Select embedding functions when creating collections

- Document Operations
- Add documents with optional metadata and custom IDs
- Query documents using semantic search
- Advanced filtering using metadata and document content
- Retrieve documents by IDs or filters
- Full text search capabilities

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

1. To add an ephemeral client, add the following to your claude_desktop_config.json file:

"chroma": {
    "command": "uvx",
    "args": [
        "chroma-mcp"
    ]
}

2. To add a persistent client, add the following to your 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.

3. To connect to Chroma Cloud, add the following to your 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"].

4. To connect to a self-hosted Chroma instance on your own cloud provider, add the following to your 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.

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.

```bash

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.