Skip to main content
Glama
zwczwczwc

Chroma MCP Server

by zwczwczwc

Chroma MCP Server

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.

This is a MCP server for self-hosting your access to Chroma. If you are looking for Package Search you can find the repository for that here.

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

Supported Tools

  • chroma_list_collections - List all collections with pagination support

  • chroma_create_collection - Create a new collection with optional HNSW configuration

  • chroma_peek_collection - View a sample of documents in a collection

  • 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_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

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

Related MCP server: Chroma MCP Server

Usage with Claude Desktop

  1. To add an ephemeral client, add the following to your claude_desktop_config.json file:

"chroma": {
    "command": "uvx",
    "args": [
        "chroma-mcp"
    ]
}
  1. To add a persistent client, add the following to your claude_desktop_config.json file:

"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.

  1. To connect to Chroma Cloud, add the following to your claude_desktop_config.json file:

"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"].

  1. 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.json file:

"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.

Available Tools

13 tools
chroma_add_documentsC

Add documents to a Chroma collection.

Args:
    collection_name: Name of the collection to add documents to
    documents: List of text documents to add
    ids: List of IDs for the documents (required)
    metadatas: Optional list of metadata dictionaries for each document
ParametersJSON Schema
NameRequiredDescriptionDefault
idsYes
documentsYes
metadatasNo
collection_nameYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description lacks any behavioral disclosure beyond the basic action. It does not mention whether duplicate IDs cause errors or overwrite, whether documents are validated for size or format, or what the return value indicates. With no annotations provided, the description carries the full burden and fails to address key behavioral traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is structured with an Args block, which is clear, but it largely restates the schema information. While not excessively long, it could be more concise by omitting redundant parameter descriptions and focusing on unique behavioral details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool mutates data and has no output schema or annotations, the description is incomplete. It does not explain the return value, constraints (e.g., document count limits), or side effects of adding documents to an existing collection. The agent lacks enough context for reliable use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description provides basic semantics for each parameter (e.g., 'ids: List of IDs for the documents (required)'). This adds moderate value beyond the parameter names but lacks depth, such as uniqueness constraints for 'ids' or format expectations for 'documents'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool adds documents to a Chroma collection, using the verb 'add' and specifying the resource 'documents to a Chroma collection'. However, it does not differentiate from sibling tools like 'chroma_update_documents' or 'chroma_delete_documents', which share similar contexts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. For instance, it does not state that the collection must exist before adding, nor does it explain when to use 'add' over 'update' or 'delete'. The agent is left without context for decision-making.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

chroma_create_collectionC

Create a new Chroma collection with configurable HNSW parameters.

Args:
    collection_name: Name of the collection to create
    embedding_function_name: Name of the embedding function to use. Options: 'default', 'cohere', 'openai', 'jina', 'voyageai', 'ollama', 'roboflow'
    metadata: Optional metadata dict to add to the collection
ParametersJSON Schema
NameRequiredDescriptionDefault
metadataNo
collection_nameYes
embedding_function_nameNoopenai_compat

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It fails to disclose side effects, idempotency, error behavior, or required permissions. The mention of HNSW parameters is misleading as they are absent from the actual parameters.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is moderately concise with an Args section. It could be tightened by removing the redundant 'Args:' header and integrating the parameter descriptions more efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, the description should explain return value and error cases. It does not describe what is returned on success or failure conditions. The HNSW parameter mention is unsubstantiated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so description must explain parameters. It adds meaning for collection_name, embedding_function_name (with options list), and metadata. However, the default value for embedding_function_name ('openai_compat') is omitted from the listed options, creating inconsistency.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Create a new Chroma collection') and distinguishes from sibling tools (which handle listing, querying, deletion). However, it misleadingly mentions 'configurable HNSW parameters' which are not reflected in the actual parameters.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., modification or deletion tools). No mention of prerequisites or when not to use (e.g., if collection already exists).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

chroma_delete_collectionB

Delete a Chroma collection.

Args:
    collection_name: Name of the collection to delete
ParametersJSON Schema
NameRequiredDescriptionDefault
collection_nameYes

TDQS

B3/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description bears full responsibility for behavioral disclosure. However, it merely says "Delete a Chroma collection" without stating that the operation is irreversible, requires the collection to exist, or any side effects (e.g., data loss). This is a critical gap for a deletion tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, consisting of one sentence for the tool and one line for the parameter. It is front-loaded with the core action and resource, with no extraneous information. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite the tool having only one parameter, no output schema, and no annotations, the description is too sparse. It omits crucial context for a deletion operation, such as whether the action is reversible, what happens to associated data, and what the response looks like. A more complete description would include warnings about irreversibility and conditions for success.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage, so the description must compensate. It adds a brief explanation for the single parameter ("Name of the collection to delete"), which clarifies its role but does not provide additional details like format, validation rules, or examples. This is minimal but sufficient for a simple string parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ("Delete") and the resource ("a Chroma collection"), which distinguishes it from sibling tools like chroma_create_collection or chroma_list_collections. The verb and resource are specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives, such as chroma_modify_collection or chroma_fork_collection. There is no mention of prerequisites (e.g., collection must exist) or when not to use it, leaving the agent with limited context for decision-making.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

chroma_delete_documentsA

Delete documents from a Chroma collection.

Args:
    collection_name: Name of the collection to delete documents from
    ids: List of document IDs to delete

Returns:
    A confirmation message indicating the number of documents deleted.

Raises:
    ValueError: If 'ids' is empty
    Exception: If the collection does not exist or if the delete operation fails.
ParametersJSON Schema
NameRequiredDescriptionDefault
idsYes
collection_nameYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description lists error conditions (empty ids, missing collection) and mentions it returns a confirmation message, but it does not state that the operation is irreversible or discuss side effects. Given no annotations, more behavioral details could be added.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured with a clear purpose statement followed by parameter, return, and error sections. Every sentence adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple deletion tool with two required parameters, the description covers purpose, parameters, returns, and errors. However, it omits details on permanence, handling of non-existent IDs, and usage context, leaving some gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description compensates by explaining the purpose of each parameter: 'collection_name' is the collection's name, 'ids' are document IDs. While basic, it adds necessary meaning beyond the schema's titles.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description begins with 'Delete documents from a Chroma collection,' which is a specific verb-resource combination that clearly differentiates from sibling tools like adding, querying, or listing documents.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. For example, it does not mention prerequisites (e.g., obtaining IDs via get_documents) or when deletion is appropriate, which is critical given 12 siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

chroma_fork_collectionC

Fork a Chroma collection.

Args:
    collection_name: Name of the collection to fork
    new_collection_name: Name of the new collection to create
    metadata: Optional metadata dict to add to the new collection
ParametersJSON Schema
NameRequiredDescriptionDefault
collection_nameYes
new_collection_nameYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description lacks behavioral details. It does not disclose whether the fork is deep or shallow, if metadata is copied, or if the operation is reversible. The brief description leaves significant ambiguity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short but structured as a docstring with repeated 'Args:' lines. It could be more concise, e.g., by combining the purpose and parameter descriptions. Every sentence is functional but not optimally efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and the complexity of a mutation tool, the description is insufficient. It fails to explain what happens to existing data, whether embeddings are copied, or how success is indicated. The tool's behavior remains opaque.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds minimal meaning beyond parameter names: 'Name of the collection to fork' and 'Name of the new collection to create' are largely redundant. It also mentions an optional 'metadata' parameter that is not present in the input schema, creating inconsistency. Schema coverage is 0%, so the description should compensate more.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Fork a Chroma collection', which is a specific verb and resource indicating duplication. However, it does not differentiate from sibling tools like chroma_create_collection or chroma_delete_collection, as 'fork' could imply partial copying or aliasing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. It does not mention prerequisites, such as the original collection must exist, or contrast with creating a new collection from scratch.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

chroma_get_collection_countC

Get the number of documents in a Chroma collection.

Args:
    collection_name: Name of the collection to count
ParametersJSON Schema
NameRequiredDescriptionDefault
collection_nameYes

TDQS

C2.7/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears full burden. It merely restates the obvious action without disclosing return format, error handling (e.g., missing collection), or side effects. This is a serious gap for a tool that returns a computed value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise and front-loaded with the purpose sentence. However, it is overly minimal and could include more details in the same space (e.g., return type). It is acceptable but not exemplary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite low complexity (1 param, no output schema), the description fails to specify the return format (e.g., integer, JSON object) or behavior on errors. The agent lacks sufficient information to confidently invoke and parse results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description should add meaning to the lone parameter. It says 'Name of the collection to count,' which slightly clarifies purpose but repeats the schema title. No additional constraints, formats, or examples are provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Get the number of documents in a Chroma collection' with a specific verb and resource. It uniquely identifies the tool's function and distinguishes it from siblings like chroma_list_collections (list collections) and chroma_get_collection_info (get info).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives, such as chroma_get_collection_info which might also provide count information. There are no prerequisites, exclusions, or context for optimal usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

chroma_get_collection_infoC

Get information about a Chroma collection.

Args:
    collection_name: Name of the collection to get info about
ParametersJSON Schema
NameRequiredDescriptionDefault
collection_nameYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose all behavioral traits. It only states the basic operation without explaining error handling (e.g., if collection doesn't exist), read-only nature, or return format. This leaves significant ambiguity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with a single line and structured docstring. No redundant information, though it could be more informative without being verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description should explain what data is returned (e.g., metadata fields). It does not. The simple parameter and operation suggest a straightforward tool, but missing return type and error behavior leave gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%. The description's Args section merely repeats the parameter name and a trivial description ('Name of the collection'), adding little beyond the schema's title. For a single parameter, the baseline expectation is higher.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action and resource ('Get information about a Chroma collection'), which distinguishes it from siblings like chroma_list_collections (list all) and chroma_get_collection_count (count). However, it lacks specifics on what 'information' entails.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives, such as chroma_list_collections or chroma_get_collection_count. No prerequisites or typical scenarios are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

chroma_get_documentsA

Get documents from a Chroma collection with optional filtering.

Args:
    collection_name: Name of the collection to get documents from
    ids: Optional list of document IDs to retrieve
    where: Optional metadata filters using Chroma's query operators
           Examples:
           - Simple equality: {"metadata_field": "value"}
           - Comparison: {"metadata_field": {"$gt": 5}}
           - Logical AND: {"$and": [{"field1": {"$eq": "value1"}}, {"field2": {"$gt": 5}}]}
           - Logical OR: {"$or": [{"field1": {"$eq": "value1"}}, {"field1": {"$eq": "value2"}}]}
    where_document: Optional document content filters
           Examples:
           - Contains: {"$contains": "value"}
           - Not contains: {"$not_contains": "value"}
           - Regex: {"$regex": "[a-z]+"}
           - Not regex: {"$not_regex": "[a-z]+"}
           - Logical AND: {"$and": [{"$contains": "value1"}, {"$not_regex": "[a-z]+"}]}
           - Logical OR: {"$or": [{"$regex": "[a-z]+"}, {"$not_contains": "value2"}]}
    include: List of what to include in response. By default, this will include documents, and metadatas.
    limit: Optional maximum number of documents to return
    offset: Optional number of documents to skip before returning results

Returns:
    Dictionary containing the matching documents, their IDs, and requested includes
ParametersJSON Schema
NameRequiredDescriptionDefault
idsNo
limitNo
whereNo
offsetNo
includeNo
where_documentNo
collection_nameYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It describes retrieval behavior with filtering, pagination, and includes, but does not discuss error conditions, authentication needs, rate limits, or whether the operation is idempotent. The read-only nature is implied but not explicitly stated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a brief summary followed by a bulleted parameter list. It is moderately long but every sentence adds value. Could be slightly more concise by removing redundant wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 7 parameters and no output schema, the description covers most aspects: parameter details, examples, and a general return description. Missing information includes possible error responses and collection existence requirements, but overall sufficiently complete for effective tool usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, yet the description extensively explains each parameter with clear examples for complex objects like 'where' and 'where_document', including supported operators (comparison, logical, regex). Default values for 'include' are noted. This adds significant value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Get documents from a Chroma collection with optional filtering,' which is a specific verb+resource. It naturally distinguishes from sibling tools like chroma_query_documents (which uses vector similarity) and chroma_add_documents.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for retrieving documents with metadata/content filtering, but does not explicitly guide when to use this tool over alternatives like chroma_query_documents (which uses embedding similarity). No exclusions or when-not-to-use guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

chroma_list_collectionsA

List all collection names in the Chroma database with pagination support.

Args:
    limit: Optional maximum number of collections to return
    offset: Optional number of collections to skip before returning results

Returns:
    List of collection names or ["__NO_COLLECTIONS_FOUND__"] if database is empty
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the return format (list of names or a sentinel value) and mentions pagination. However, it does not clarify behavior when limit/offset exceed bounds (e.g., does it return an error or empty list?). The phrase 'list all' conflicts with pagination, causing slight ambiguity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise: a single-line purpose, followed by Args and Returns sections. Every sentence adds value, and the structure is clean and easy to parse. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, no output schema, and 2 optional parameters, the description reasonably covers purpose and return format. However, it lacks details on pagination defaults (e.g., default limit when omitted) and error handling for invalid parameters. The slight inconsistency 'list all' vs pagination reduces completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% (parameters lack descriptions), so the description must compensate. It explains 'limit: Optional maximum number of collections to return' and 'offset: Optional number of collections to skip before returning results.' This adds meaningful semantics beyond the raw schema, clarifying defaults (None) and optionality.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List all collection names in the Chroma database with pagination support.' This specific verb ('list') and resource ('collection names') distinguishes it from siblings like chroma_get_collection_info (which retrieves details of a single collection) and chroma_create_collection.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly guide when to use this tool vs alternatives. It implies usage for listing collection names, but lacks cues like 'use this to get an overview of collections; for details on a specific collection, use chroma_get_collection_info.' The pagination support is mentioned but no guidance on setting limit/offset.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

chroma_modify_collectionB

Modify a Chroma collection's name or metadata.

Args:
    collection_name: Name of the collection to modify
    new_name: Optional new name for the collection
    new_metadata: Optional new metadata for the collection
ParametersJSON Schema
NameRequiredDescriptionDefault
new_nameNo
new_metadataNo
collection_nameYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description must carry full burden. It only says 'modify' implying mutation, but lacks details on side effects, revertibility, required permissions, or whether other collection properties are affected. Minimal disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is short and front-loaded with purpose. The docstring lists parameters efficiently with no extraneous text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema and minimal schema coverage; description should provide more context about return values, errors, or behavioral outcomes of modification. It lacks completeness for a tool with no annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but description explains all three parameters (collection_name, new_name, new_metadata) in a docstring format. It adds basic meaning beyond property titles, though no detailed constraints or formats.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Modify a Chroma collection's name or metadata' with a specific verb and resource. It distinguishes from sibling tools like chroma_list_collections, chroma_create_collection, etc., which focus on different operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives, no prerequisites, and no conditions for safe usage. The description only lists parameters without context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

chroma_peek_collectionB

Peek at documents in a Chroma collection.

Args:
    collection_name: Name of the collection to peek into
    limit: Number of documents to peek at
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
collection_nameYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, and the description does not disclose any behavioral traits beyond 'peek at documents'. It does not mention side effects, rate limits, authentication requirements, or what happens if the collection is empty or doesn't exist.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with a clear purpose sentence followed by structured parameter descriptions. Every sentence serves a purpose; no unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with only 2 parameters and no output schema, the description covers the basic functionality and parameters. However, it lacks details about the return format or behavior in edge cases, which would be helpful but not critical for such a straightforward operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds meaningful information for both parameters: collection_name is described as 'Name of the collection to peek into' and limit as 'Number of documents to peek at'. Since schema description coverage is 0%, this provides necessary clarity beyond the schema's titles.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Peek at documents in a Chroma collection', which clearly indicates a read operation on a collection. However, it does not distinguish from sibling tools like chroma_get_documents or chroma_query_documents, which also retrieve documents.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool over alternatives. There is no mention of use cases, prerequisites, or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

chroma_query_documentsA

Query documents from a Chroma collection with advanced filtering.

Args:
    collection_name: Name of the collection to query
    query_texts: List of query texts to search for
    n_results: Number of results to return per query
    where: Optional metadata filters using Chroma's query operators
           Examples:
           - Simple equality: {"metadata_field": "value"}
           - Comparison: {"metadata_field": {"$gt": 5}}
           - Logical AND: {"$and": [{"field1": {"$eq": "value1"}}, {"field2": {"$gt": 5}}]}
           - Logical OR: {"$or": [{"field1": {"$eq": "value1"}}, {"field1": {"$eq": "value2"}}]}
    where_document: Optional document content filters
           Examples:
           - Contains: {"$contains": "value"}
           - Not contains: {"$not_contains": "value"}
           - Regex: {"$regex": "[a-z]+"}
           - Not regex: {"$not_regex": "[a-z]+"}
           - Logical AND: {"$and": [{"$contains": "value1"}, {"$not_regex": "[a-z]+"}]}
           - Logical OR: {"$or": [{"$regex": "[a-z]+"}, {"$not_contains": "value2"}]}
    include: List of what to include in response. By default, this will include documents, metadatas, and distances.
ParametersJSON Schema
NameRequiredDescriptionDefault
whereNo
includeNo
n_resultsNo
query_textsYes
where_documentNo
collection_nameYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears the full burden. It discloses default response fields (documents, metadatas, distances), supported filter operators with examples, and use of n_results for pagination. However, it lacks details on rate limits, maximum result limits, or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a well-structured docstring that front-loads the purpose and then systematically describes each parameter. While it includes many examples that increase length, these are necessary for complex parameters and are not redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 6 parameters, no output schema, and no annotations, the description covers all parameters with examples. It mentions the default include list but does not detail the response structure beyond field names. The tool's purpose is clear, but some behavioral details are omitted.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description adds substantial meaning to all 6 parameters, especially for complex fields where and where_document, providing detailed examples of supported operators and logical combinations. This goes far beyond the schema's type and default information.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'Query documents from a Chroma collection with advanced filtering,' with a specific verb and resource. It distinguishes from siblings like add, get, update, delete documents by focusing on querying with filtering.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for querying with advanced filtering but provides no explicit guidance on when to use this tool versus alternatives like get_documents or peek_collection. No when-not-to-use or alternative naming is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

chroma_update_documentsA

Update documents in a Chroma collection.

Args:
    collection_name: Name of the collection to update documents in
    ids: List of document IDs to update (required)
    embeddings: Optional list of new embeddings for the documents.
                Must match length of ids if provided.
    metadatas: Optional list of new metadata dictionaries for the documents.
               Must match length of ids if provided.
    documents: Optional list of new text documents.
               Must match length of ids if provided.

Returns:
    A confirmation message indicating the number of documents updated.

Raises:
    ValueError: If 'ids' is empty or if none of 'embeddings', 'metadatas',
                or 'documents' are provided, or if the length of provided
                update lists does not match the length of 'ids'.
    Exception: If the collection does not exist or if the update operation fails.
ParametersJSON Schema
NameRequiredDescriptionDefault
idsYes
documentsNo
metadatasNo
embeddingsNo
collection_nameYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It states that the tool updates documents and raises ValueError if inputs are mismatched, but it doesn't disclose behavioral traits such as whether updates are full replacements or incremental, whether the operation is idempotent, or any permission requirements. It adequately describes error conditions but lacks broader behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with bullet points for args, returns, and raises. It is front-loaded with the core purpose and is fairly concise, though the 'Args:' header and bullet format could be slightly tighter without losing clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 5 parameters, no output schema, and no annotations, the description covers the input semantics, return type, and error conditions reasonably well. However, it lacks details on overall behavior like incremental vs full updates, idempotency, or prerequisites such as collection existence (though implied by exception). It is mostly complete for an update tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, yet the description provides detailed explanations for each parameter, including constraints like 'Must match length of ids if provided.' This adds significant meaning beyond the schema's property titles and types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Update documents in a Chroma collection' which is a specific verb+resource. It clearly distinguishes from sibling tools like add_documents (add new), delete_documents (delete), query_documents (query), etc.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains what can be updated (embeddings, metadatas, documents) but does not provide explicit guidance on when to use this tool vs alternatives like add_documents (for new documents) or modify_collection (for collection settings). Usage is implied but not clearly contrasted.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 13 tool updatesv0.2.6
    • First observedchroma_add_documents
    • First observedchroma_create_collection
    • First observedchroma_delete_collection
    • First observedchroma_delete_documents
    • First observedchroma_fork_collection
    • First observedchroma_get_collection_count
    • First observedchroma_get_collection_info
    • First observedchroma_get_documents
    • First observedchroma_list_collections
    • First observedchroma_modify_collection
    • First observedchroma_peek_collection
    • First observedchroma_query_documents
    • First observedchroma_update_documents

TDQS

A3.6/5.0

Scored across 13 tools

Disambiguation5/5

Each tool targets a distinct operation: collection management (list, create, peek, info, count, modify, fork, delete) and document operations (add, query, get, update, delete). No two tools have overlapping purposes.

Naming Consistency5/5

All tools follow a consistent 'chroma_verb_noun' pattern (e.g., chroma_list_collections, chroma_create_collection). The naming is uniform and predictable.

Tool Count5/5

13 tools is an appropriate number for a vector database MCP server, covering all essential CRUD operations for collections and documents without being excessive or insufficient.

Completeness5/5

The tool set provides comprehensive coverage: create, read (get, list, peek, count), update (modify collection, update documents), and delete for both collections and documents. Advanced querying with filtering is supported, and there are no obvious gaps for typical usage.

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    A Model Context Protocol server providing vector database capabilities through Chroma, enabling semantic document search, metadata filtering, and document management with persistent storage.
    6
    41
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server integration that creates a persistent, searchable working memory for AI-assisted development by enabling automated context recall and knowledge persistence in Chroma, the open-source embedding database.
    24
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that exposes ChromaDB vector database operations, enabling AI assistants to perform collection management and semantic document searches. It supports HTTP, persistent, and in-memory connection modes along with various embedding providers including OpenAI and HuggingFace.
    MIT

Appeared in Searches