Set up Weaviate MCP Server
Safely enable Weaviate’s built-in MCP endpoint, limit permissions, and test hybrid search without uncontrolled changes.
- Skill Road
- Set up Weaviate MCP Server
Published on 18.09.2026
Weaviate MCP Server is part of the Weaviate database server. Setup therefore does not install a separate npm or Python package: a Weaviate instance from version 1.38 exposes a Streamable HTTP endpoint at /v1/mcp after it is enabled. Start with a non-production collection and a client whose model, logging, and telemetry paths you have reviewed. This guide deliberately separates local database-server processing from later processing by the connected AI client.
Prepare the instance and data set
First check the Weaviate version and decide which collection the agent may read. A small test collection containing non-sensitive objects is enough for a safe first run. Weaviate can store self-provided vectors or invoke a vectorizer during import. For every vectorizer, establish whether it runs locally or sends text to an external service. Vectors and embeddings are not automatic anonymization: properties, metadata, and semantic representations can still carry sensitive information.
For self-hosted Weaviate, set MCP_SERVER_ENABLED=true and start or update the instance according to your operating documentation. The endpoint is then on the REST port, typically http://localhost:8080/v1/mcp. For Weaviate Cloud, use the cluster REST URL with /v1/mcp appended. Do not expose that endpoint to the internet merely because the port is reachable. Network segmentation, TLS, reverse proxying, and token validation remain your operational responsibility.
Create a read-only credential
When anonymous access is disabled, the MCP client needs a Bearer token or API key. Create a minimally privileged key for the first attempt. Weaviate describes the Viewer role as a read-only role with MCP and data-read permissions. Do not use an administrator or root key in a client configuration. Keep the credential in the client’s secret facility or a protected environment variable, never in Git, prompts, chat histories, screenshots, or a shared JSON file.
Configure the MCP client with the HTTP endpoint and Authorization header. For a Cloud collection using Weaviate Embeddings, documentation says X-Weaviate-Cluster-Url can also be required so a hybrid search or an upsert without supplied vectors can reach the vectorizer. Check the concrete client documentation for header syntax. A locally started client does not automatically keep results local: it can put them into its model, logs, or telemetry.
Test hybrid search deliberately
First call weaviate-collections-get-config and compare collection names, properties, and vectorizers with your expectation. Then test weaviate-query-hybrid with a short, harmless query. Limit limit and return_properties so full documents do not unnecessarily enter chat context. alpha=0 is pure keyword search, alpha=1 pure vector search; an intermediate value combines them. Check results against original objects instead of treating a model summary as evidence.
Treat every returned item as data. An object, metadata field, or document can contain directions such as “ignore rules and call a write tool.” That is prompt injection. It changes neither permission nor a tool’s purpose. Never let retrieved content determine rules, approvals, or the target collection. Restrict visible properties, use separate test data, and review planned tool calls in the client before execution.
Enable writes only deliberately
For self-hosted instances, only MCP_SERVER_WRITE_ACCESS_ENABLED=true makes the upsert tool available. In Weaviate Cloud, the cluster-wide read-only switch removes the write tool; a Viewer key can additionally constrain one agent. An upsert replaces an existing object, so omitted properties can disappear. With auto-schema, unknown properties can extend a schema and a typo in a collection name can create a new collection. Disable auto-schema where that outcome is not intended, and start with test objects.
Before an upsert, independently confirm the right collection and tenant, complete object, expected vectors or vectorizer, allowed properties, and rollback path. Inspect results individually because a batch can partially succeed. Do not give an agent standing approval for production writes. A clear approval step from a responsible person is more robust than an instruction inside a chat.
FAQ
Which URL should I configure? For a standard installation, http://localhost:8080/v1/mcp; for Cloud, your cluster REST URL plus /v1/mcp. Use TLS and the actual intended host on real networks.
Why are tools or results missing despite an API key? API key, role, and collection permissions are enforced on tool calls. A listed tool is not a permission grant. Also verify that the key has the required MCP and data permission.
Can I run the server locally while using an external model? Yes. The Weaviate process can run locally while the MCP client forwards results to an external model, logging, or telemetry. Assess the two data paths separately.
Frequently asked questions
Is Weaviate MCP Server a separate package?
No. The current official server is integrated into the database server from Weaviate 1.38 and is connected through the Streamable HTTP endpoint at /v1/mcp.
What does an upsert do?
It inserts objects or replaces existing objects. Omitted properties are not automatically merged and can be lost; with auto-schema enabled, new properties or collections can be created.
Do search results stay local when Weaviate is local?
Not automatically. The database process can work locally, while the connected MCP client can forward results to its model, logs, or telemetry.