mirror of
https://github.com/google/adk-docs.git
synced 2026-09-14 16:16:59 +08:00
200 lines
7.4 KiB
Markdown
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/)
|