Indexing and querying are both tools here, so one session can ingest a set of documents and search them immediately — there is no separate ingestion script in between. chroma_fork_collection is the one worth noticing: you can branch a collection and experiment against the copy while the original stays where it was.
Chroma's own MCP server, 13 tools over a Chroma database: create, inspect, modify, fork and delete collections; add, update and delete documents; and query them by similarity with metadata and document-content filters.
- Manage collections: chroma_create_collection with a choice of embedding function — default, cohere, openai, jina, voyageai, ollama or roboflow — and configurable HNSW parameters, plus chroma_modify_collection, chroma_fork_collection and chroma_delete_collection.
- See what is in a store before querying it — chroma_list_collections (paged), chroma_peek_collection, chroma_get_collection_info, chroma_get_collection_count.
- Write documents with IDs and per-document metadata (chroma_add_documents), then update or delete them by ID (chroma_update_documents, chroma_delete_documents).
- Query by similarity with metadata filters and document-content filters, several query texts at a time (chroma_query_documents).
- Fetch documents directly by ID or by filter, with limit and offset (chroma_get_documents).
A Chroma database the server can reach, the API key of whichever embedding provider you choose when it is not the default, and Python with uv on the machine. Apache-2.0.
One command plus a key — uvx chroma-mcp, then supply credentials
