icon for mcp server

ChromaDB Vector Database

STDIO

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

🧠 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

Be the First to Experience MCP Now