Files

200 lines
7.4 KiB
Markdown

---
catalog_title: Chroma
catalog_description: Store and retrieve information using semantic vector search
catalog_icon: /integrations/assets/chroma.png
catalog_tags: ["data","mcp"]
---
# Chroma MCP tool for ADK
<div class="language-support-tag">
<span class="lst-supported">Supported in ADK</span><span class="lst-python">Python</span><span class="lst-typescript">TypeScript</span>
</div>
The [Chroma MCP Server](https://github.com/chroma-core/chroma-mcp) connects your
ADK agent to [Chroma](https://www.trychroma.com/), an open-source embedding
database. This integration gives your agent the ability to create collections,
store documents, and retrieve information using semantic search, full text
search, and metadata filtering.
## Use cases
- **Semantic Memory for Agents**: Store conversation context, facts, or learned
information that agents can retrieve later using natural language queries.
- **Knowledge Base Retrieval**: Build a retrieval-augmented generation (RAG)
system by storing documents and retrieving relevant context for responses.
- **Persistent Context Across Sessions**: Maintain long-term memory across
conversations, allowing agents to reference past interactions and accumulated
knowledge.
## Prerequisites
- **For local storage**: A directory path to persist data
- **For Chroma Cloud**: A [Chroma Cloud](https://www.trychroma.com/) account
with tenant ID, database name, and API key
## Use with agent
=== "Python"
=== "Local MCP Server"
```python
from google.adk.agents import Agent
from google.adk.tools.mcp_tool import McpToolset
from google.adk.tools.mcp_tool.mcp_session_manager import StdioConnectionParams
from mcp import StdioServerParameters
# For local storage, use:
DATA_DIR = "/path/to/your/data/directory"
# For Chroma Cloud, use:
# CHROMA_TENANT = "your-tenant-id"
# CHROMA_DATABASE = "your-database-name"
# CHROMA_API_KEY = "your-api-key"
root_agent = Agent(
model="gemini-flash-latest",
name="chroma_agent",
instruction="Help users store and retrieve information using semantic search",
tools=[
McpToolset(
connection_params=StdioConnectionParams(
server_params=StdioServerParameters(
command="uvx",
args=[
"chroma-mcp",
# For local storage, use:
"--client-type",
"persistent",
"--data-dir",
DATA_DIR,
# For Chroma Cloud, use:
# "--client-type",
# "cloud",
# "--tenant",
# CHROMA_TENANT,
# "--database",
# CHROMA_DATABASE,
# "--api-key",
# CHROMA_API_KEY,
],
),
timeout=30,
),
)
],
)
```
=== "TypeScript"
=== "Local MCP Server"
```typescript
import { LlmAgent, MCPToolset } from "@google/adk";
// For local storage, use:
const DATA_DIR = "/path/to/your/data/directory";
// For Chroma Cloud, use:
// const CHROMA_TENANT = "your-tenant-id";
// const CHROMA_DATABASE = "your-database-name";
// const CHROMA_API_KEY = "your-api-key";
const rootAgent = new LlmAgent({
model: "gemini-flash-latest",
name: "chroma_agent",
instruction: "Help users store and retrieve information using semantic search",
tools: [
new MCPToolset({
type: "StdioConnectionParams",
serverParams: {
command: "uvx",
args: [
"chroma-mcp",
// For local storage, use:
"--client-type",
"persistent",
"--data-dir",
DATA_DIR,
// For Chroma Cloud, use:
// "--client-type",
// "cloud",
// "--tenant",
// CHROMA_TENANT,
// "--database",
// CHROMA_DATABASE,
// "--api-key",
// CHROMA_API_KEY,
],
},
}),
],
});
export { rootAgent };
```
## Available tools
### Collection management
Tool | Description
---- | -----------
`chroma_list_collections` | List all collections with pagination support
`chroma_create_collection` | Create a new collection with optional HNSW configuration
`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_peek_collection` | View a sample of documents in a collection
### Document operations
Tool | Description
---- | -----------
`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
## Configuration
The Chroma MCP server supports multiple client types to suit different needs:
### Client types
Client Type | Description | Key Arguments
----------- | ----------- | -------------
`ephemeral` | In-memory storage, cleared on restart. Useful for testing. | None (default)
`persistent` | File-based storage on your local machine | `--data-dir`
`http` | Connect to a self-hosted Chroma server | `--host`, `--port`, `--ssl`, `--custom-auth-credentials`
`cloud` | Connect to Chroma Cloud (api.trychroma.com) | `--tenant`, `--database`, `--api-key`
### Environment variables
You can also configure the client using environment variables. Command-line
arguments take precedence over environment variables.
Variable | Description
-------- | -----------
`CHROMA_CLIENT_TYPE` | Client type: `ephemeral`, `persistent`, `http`, or `cloud`
`CHROMA_DATA_DIR` | Path for persistent local storage
`CHROMA_TENANT` | Tenant ID for Chroma Cloud
`CHROMA_DATABASE` | Database name for Chroma Cloud
`CHROMA_API_KEY` | API key for Chroma Cloud
`CHROMA_HOST` | Host for self-hosted HTTP client
`CHROMA_PORT` | Port for self-hosted HTTP client
`CHROMA_SSL` | Enable SSL for HTTP client (`true` or `false`)
`CHROMA_DOTENV_PATH` | Path to `.env` file (defaults to `.chroma_env`)
## Additional resources
- [Chroma MCP Server Repository](https://github.com/chroma-core/chroma-mcp)
- [Chroma Documentation](https://docs.trychroma.com/)
- [Chroma Cloud](https://www.trychroma.com/)