Chroma

🧠 mcp.chroma

A ChromaDB MCP server for vector embeddings, collections, and document management.

Rust MCP ChromaDB

πŸ“‹ Overview

This MCP server provides a interface for working with ChromaDB, a vector database for embeddings. It enables operations on collections and documents through a set of tools accessible via the MCP (Model-Controller-Protocol) interface.

✨ Features

  • πŸ“Š Collection management (create, list, modify, delete)
  • πŸ“„ Document operations (add, query, get, update, delete)
  • 🧠 Thought processing for session management
  • πŸ”Œ Multiple client types (HTTP, Cloud, Persistent, Ephemeral)

πŸš€ Installation

Clone the repository and build with Cargo:

git clone https://github.com/yourusername/mcp-chroma.git
cd mcp-chroma
cargo build --release

πŸ› οΈ Usage

Setting Up Environment

Create a .chroma_env file in your project directory with the configuration parameters:

CHROMA_CLIENT_TYPE=ephemeral
CHROMA_HOST=localhost
CHROMA_PORT=8000

Running the Server

# Run with default configuration
./mcp-chroma

# Run with specific client type
./mcp-chroma --client-type http --host localhost --port 8000

# Run with persistent storage
./mcp-chroma --client-type persistent --data-dir ./chroma_data

Available Client Types

  1. Ephemeral: In-memory client (default)
  2. Persistent: Local storage client with persistence
  3. HTTP: Remote client via HTTP
  4. Cloud: Managed cloud client

βš™οΈ Configuration Options

OptionEnvironment VariableDescriptionDefault
--client-typeCHROMA_CLIENT_TYPEType of client (ephemeral, persistent, http, cloud)ephemeral
--data-dirCHROMA_DATA_DIRDirectory for persistent storageNone
--hostCHROMA_HOSTHost for HTTP clientNone
--portCHROMA_PORTPort for HTTP clientNone
--sslCHROMA_SSLUse SSL for HTTP clienttrue
--tenantCHROMA_TENANTTenant for cloud clientNone
--databaseCHROMA_DATABASEDatabase for cloud clientNone
--api-keyCHROMA_API_KEYAPI key for cloud clientNone
--dotenv-pathCHROMA_DOTENV_PATHPath to .env file.chroma_env

🧰 Tools

Collection Tools

  • chroma_list_collections: List all collections
  • chroma_create_collection: Create a new collection
  • chroma_peek_collection: Preview documents in a collection
  • chroma_get_collection_info: Get metadata about a collection
  • chroma_get_collection_count: Count documents in a collection
  • chroma_modify_collection: Update collection properties
  • chroma_delete_collection: Delete a collection

Document Tools

  • chroma_add_documents: Add documents to a collection
  • chroma_query_documents: Search for similar documents
  • chroma_get_documents: Retrieve documents from a collection
  • chroma_update_documents: Update existing documents
  • chroma_delete_documents: Delete documents from a collection

Thought Processing

  • process_thought: Process thoughts in an ongoing session

πŸ“ Examples

Creating a Collection

{
  "collection_name": "my_documents",
  "metadata": {
    "description": "A collection of example documents"
  }
}

Querying Documents

{
  "collection_name": "my_documents",
  "query_texts": ["What are the benefits of vector databases?"],
  "n_results": 3
}

πŸ”§ Integration with Claude

You can use MCP-Chroma with Claude by setting up a configuration like:

{
  "mcpServers": {
    "chroma": {
      "command": "mcp-chroma",
      "args": [
        "--client-type",
        "http",
        "--host",
        "localhost",
        "--port",
        "8000"
      ],
      "env": {
        "CHROMA_API_KEY": "<YOUR_API_KEY>"
      }
    }
  }
}

πŸ–₯️ Integration with Cursor

To use MCP-Chroma with Cursor, add the following to your .vscode/mcp.json file:

{
  "mcp": {
    "inputs": [
      {
        "type": "promptString",
        "id": "chroma_api_key",
        "description": "ChromaDB API Key",
        "password": true
      }
    ],
    "servers": {
      "chroma": {
        "command": "mcp-chroma",
        "args": [
          "--client-type",
          "http",
          "--host",
          "localhost",
          "--port",
          "8000"
        ],
        "env": {
          "CHROMA_API_KEY": "${input:chroma_api_key}"
        }
      }
    }
  }
}

πŸ“„ License

MIT License