Chroma MCP Custom
This is an enhanced fork of the original chroma-core/chroma-mcp project, featuring FastMCP architecture, streamable HTTP transport, and additional enhancements for production use.
Ask AI about Chroma MCP Custom
Powered by Claude · Grounded in docs
I know everything about Chroma MCP Custom. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
Chroma - the open-source embedding database.
The fastest way to build Python or JavaScript LLM apps with memory!
Chroma MCP Server
Note: This is an enhanced fork of the original chroma-core/chroma-mcp project, featuring FastMCP architecture, streamable HTTP transport, and additional enhancements for production use.
MCP SDK Version
Current Version: Python MCP SDK 1.15.0 (upgraded October 1, 2025)
This server uses the latest Model Context Protocol SDK with enhanced capabilities:
New Features:
- Paginated List Decorators: Support for paginated prompts, resources, and tools
- Protected Resource Metadata: Improved metadata handling for resources
- Enhanced Security: HTTP 403 responses for invalid Origin headers
- Default Values: Elicitation schema support for default values
- Extended Metadata: Additional metadata and icon support in SDK
Previous Version: 1.2.1 → Upgrade Jump: 13+ major versions (significant protocol enhancements)
Compatibility: The upgrade maintains full backward compatibility while enabling new optional features when MCP clients support them. All existing tool definitions and workflows continue to work unchanged.
Installation Notes:
All 123 packages installed successfully in a fresh uv virtual environment. Server tested and operational with the chroma-mcp entry point.
For complete MCP protocol documentation, see Model Context Protocol.
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.
Enhancements in This Fork
📋 Validation: All claims below are verified with code references and evidence. See VALIDATION.md for detailed verification.
Sequential Thinking Capabilities ⭐
This fork restores the Sequential Thinking feature (removed in upstream v0.2.0) and enhances it with new capabilities:
What's New:
- Branching Support: Explore alternative solution paths from any thought in a session
- Revision Tracking: Revise previous thoughts based on new insights while maintaining history
- Session Management: Track complete thought chains with metadata-based organization
- Enhanced Search: Find similar reasoning sessions using ChromaDB's vector similarity
Implementation:
- Self-contained ChromaDB implementation using dedicated "sequential_thinking" collection
- Metadata-driven architecture (session_id, thought_number, branch_id, revision flags)
- No external service dependencies - works with any Chroma deployment
Use Cases: Algorithm design, code review, exploratory analysis, complex problem-solving
Verification:
- Code:
src/chroma_mcp/server.py:1054-1119(5 sequential thinking tools) - Tests:
tests/unit/test_sequential_thinking.py - Examples:
examples/sequential_thinking_example.py(727 lines, 2 complete workflows) - Evidence: See VALIDATION.md for detailed feature verification
Infrastructure Enhancements
- FastMCP Architecture: Modernized codebase following FastMCP template patterns
- Streamable HTTP Transport: MCP-compliant HTTP server implementation (port 10550)
- Improved Type Safety: Full Pydantic validation and structured error handling
- Docker-First Deployment: Production-ready containerized setup with integrated services
- Enhanced Documentation: Comprehensive guides for development and deployment
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
-
Sequential Thinking & Reasoning ⭐
- Multi-step problem solving with structured thought chains
- Thought revision and branching for exploring alternative approaches
- Session management with complete history tracking via ChromaDB metadata
- Find similar reasoning sessions using vector similarity search
- Self-contained implementation - no external service dependencies
Supported Tools
chroma_list_collections- List all collections with pagination supportchroma_create_collection- Create a new collection with optional HNSW configurationchroma_peek_collection- View a sample of documents in a collectionchroma_get_collection_info- Get detailed information about a collectionchroma_get_collection_count- Get the number of documents in a collectionchroma_modify_collection- Update a collection's name or metadatachroma_delete_collection- Delete a collectionchroma_add_documents- Add documents with optional metadata and custom IDschroma_query_documents- Query documents using semantic search with advanced filteringchroma_get_documents- Retrieve documents by IDs or filters with paginationchroma_update_documents- Update existing documents' content, metadata, or embeddingschroma_delete_documents- Delete specific documents from a collection
Sequential Thinking Tools
Note: These tools enable advanced reasoning capabilities unique to this fork. The Sequential Thinking feature was removed in upstream v0.2.0 but has been restored and enhanced here. See VALIDATION.md for verification.
chroma_sequential_thinking- Store and process sequential thoughts with support for:- Step-by-step reasoning with thought numbering
- Thought revision (revise previous thoughts based on new insights)
- Thought branching (explore alternative solution paths)
- Session summarization and key thought identification
chroma_get_similar_sessions- Find related thinking sessions based on:- Content similarity (semantic search across session summaries)
- Metadata filters (session type, thought count ranges)
- Configurable result limits
chroma_get_thought_history- Retrieve complete thought chains including:- All thoughts in chronological order
- Branch exploration with branch IDs
- Revision history tracking
chroma_get_thought_branches- View branching thought processes:- Identify all branches from a specific thought
- Track alternative solution paths
- Navigate complex reasoning trees
chroma_continue_thought_chain- Analyze and continue reasoning:- Analyze last thought in a session
- Provide continuation suggestions
- Support completion, continuation, and branching analysis types
Example Use Cases: See examples/sequential_thinking_example.py for detailed demonstrations of algorithm design and code review workflows using these tools.
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.jsonfile:
"chroma": {
"command": "uvx",
"args": [
"chroma-mcp"
]
}
- To add a persistent client, add the following to your
claude_desktop_config.jsonfile:
"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.
- To connect to Chroma Cloud, add the following to your
claude_desktop_config.jsonfile:
"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"].
- 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.jsonfile:
"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.
# Common variables
export CHROMA_CLIENT_TYPE="http" # or "cloud", "persistent", "ephemeral"
# For persistent client
export CHROMA_DATA_DIR="/full/path/to/your/data/directory"
# For cloud client (Chroma Cloud)
export CHROMA_TENANT="your-tenant-id"
export CHROMA_DATABASE="your-database-name"
export CHROMA_API_KEY="your-api-key"
# For HTTP client (self-hosted)
export CHROMA_HOST="your-host"
export CHROMA_PORT="your-port"
export CHROMA_CUSTOM_AUTH_CREDENTIALS="your-custom-auth-credentials"
export CHROMA_SSL="true"
# Optional: Specify path to .env file (defaults to .chroma_env)
export CHROMA_DOTENV_PATH="/path/to/your/.env"
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.

