chroma-mcp
- Type
- MCP server
- Scanned
- Oct 29, 2026
- Version
- 98ff67589bdc
- Files read
- 15
This MCP server connects AI agents to a local, self-hosted, or cloud Chroma vector database to create collections and store, search, update, and delete documents. The main risk is that the server always exposes destructive tools without a read-only option, allowing a prompt injection attack to modify or delete collections and documents in the connected database.
What it can reach
- Files
- Reads environment variables from a local dotenv file (defaulting to .chroma_env) and reads or writes database files in the configured data directory when using the persistent client.
- Network
- Connects to Chroma Cloud (api.trychroma.com), a user-specified Chroma HTTP server, or third-party embedding APIs (OpenAI, Cohere, Jina, VoyageAI, Roboflow, or model downloads for default embeddings).
- Secrets
- Reads Chroma credentials and third-party embedding API keys from environment variables, the dotenv file, or command-line arguments.
Findings
-
MediumUnrestricted destructive database operations with no read-only mode
The server unconditionally registers tools that delete or overwrite collections and documents (
chroma_delete_collection,chroma_delete_documents,chroma_modify_collection,chroma_update_documents). If the AI agent processes untrusted content containing a prompt injection, an attacker could instruct the agent to wipe or corrupt data in the connected Chroma database.Fix: Add a
--read-onlyconfiguration flag or environment variable that disables collection and document creation, modification, and deletion tools when enabled. -
LowAPI keys and credentials accepted via command-line arguments
The server accepts
--api-keyand--custom-auth-credentialsas command-line arguments, and the documentation shows passing secrets directly in theargslist of the MCP configuration. Command-line arguments are visible to other local users and processes on the same machine through the operating system process table.Fix: Pass credentials exclusively through environment variables or the
--dotenv-pathfile rather than command-line flags, and deprecate the secret CLI flags.