The Vecten MCP
Your warehouse, served to Claude and your agents, as each person, with a receipt for every answer. An open-source Model Context Protocol (MCP) server for the Snowflake or Postgres warehouse you already run.
Who it is for
You have a warehouse and data applications on top of it. Now people want to ask questions from Claude or another chat assistant, and you want agents to use the same data. What is missing is an MCP interface: the open protocol those assistants use to reach tools and data. The Vecten MCP is that interface, and it runs on your own cloud. It is one half of Vecten Open; the other half, a data platform that builds a warehouse, you can leave out.
Security at the core
Who can see what is decided by your warehouse, not by the AI. Each person gets their own warehouse identity: a Postgres role or a Snowflake user. Every query runs as that identity, so what their grants forbid, they cannot read, whatever the assistant asks. Queries are read-only, with a row cap and a timeout, and the server treats questions and agent-written SQL as untrusted data.
The server holds no admin warehouse account. It creates people's identities through one narrowly
granted login and never keeps their passwords. It refuses to start when that login's grants
differ from what is expected. vecten mcp provisioner-script prints the setup SQL, so your
warehouse administrator reads it before anything runs.
You can prove what happened. Every call is recorded with the person, their question, the
tool, the SQL and the tables and columns it touched. Every answer carries a receipt that anyone
signed in can check later with verify_receipt. Administrators see who asked what, and which
questions the data could not answer.
Sign-in is a password or your identity provider over OpenID Connect. Identity and access has the full model, and Connections, credentials, and compromise says what v0.1 does not protect against.
Common definitions and metrics
An assistant left to write its own SQL will invent its own revenue. Here each metric is defined once, in a semantic model kept in your repository (an Apache Ossie model), and reviewed like code.
- Start from what you have.
vecten mcp import --dbt <path>builds the datasets (the tables the model may read) from an existing dbt project;vecten mcp introspectdrafts them from the warehouse catalog. You and your agent write the metrics. - Answers come from the definitions.
query_metricsturns a question into SQL from the shared definitions and returns the definitions it used. When the model cannot answer exactly, it refuses with a reason; it never returns an approximate number. - Numbers stay put. Evaluation cases pin what each metric request must compile to, so a later edit cannot quietly change a number someone relies on.
- Wrong answers become fixes. A person who gets a wrong answer reports it. That opens a gap, a tracked record of what the model got wrong, and the fix comes back as a pull request with a regression case for you to review.
Authoring the semantic model · Querying metrics · Correcting a business definition
Install
You install the vecten CLI, not this package. vecten sets up the project, and the server runs
as a container from the ghcr.io/vecten/vecten-mcp image: on your laptop with Docker, and
deployed on your cloud. This package is the code inside that image.
uv tool install vecten
vecten init warehouse-assistant --name warehouse-assistant --users 5 \
--has-warehouse yes --warehouse-url postgres://warehouse.example.com/analytics
cd warehouse-assistant
vecten next
A Snowflake address has the form snowflake://account/database. The address never holds a
password; vecten secret set stores a credential when a setup step asks for one. vecten next lists what
the project needs, in order: the setup SQL for your administrator, the semantic model, the first
people. On Postgres, vecten up then runs the server on your laptop at
https://mcp.localhost:8443. With an agent such as Claude Code, point it at the directory and it
runs vecten next --json and follows the items.
To connect, vecten mcp connection --env prod prints the deployed address. In Claude Code:
claude mcp add --transport http vecten https://mcp.<domain>/mcp. In Claude Desktop: Settings,
Connectors, add a custom connector with the same address. The first call opens the sign-in page.
What v0.1 covers
This is an alpha.
| v0.1 | |
|---|---|
| Warehouses | Postgres, Snowflake. Support for Databricks, BigQuery and Redshift is planned. |
| Runs on | your laptop with Docker (Postgres only), AWS or Scaleway, deployed with Terraform through GitHub Actions |
| Snowflake | deployed only: Snowflake trusts the server's sign-in at its public address, so a laptop cannot stand in |
| Clients | Claude Desktop, Claude Code, and any client that speaks MCP over streamable HTTP |
| Metrics | one dataset per metric query; a question that needs a join gets a SQL starting point instead |
Minor releases in the 0.x series may break things; pin the minor.
More
- The MCP: how it fits, its tools, connecting a client
- MCP tools · audit records · admin panel and usage analytics
- Deploying to AWS · deploying to Scaleway
- Security policy · questions · issues
Apache-2.0, copyright 2026 Vecten. Released together with vecten, vecten-platform and
vecten-shared at one version.
Metadata
Release files for vecten-mcp 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| vecten_mcp-0.1.0.tar.gz | 353.1 kB | Without provenance | Details for vecten_mcp-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| vecten_mcp-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for vecten_mcp-0.1.0-py3-none-any.whl |
Total release size: 642.8 kB
Release files / vecten_mcp-0.1.0.tar.gz
| Download URL | vecten_mcp-0.1.0.tar.gz |
|---|---|
| Size | 353.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
361dc9454b307afa48d9264fe285ef3e9bccdaa146dd321d0dc99eac74f86ba1
|
|
BLAKE2b-256 checksum How to use checksums |
579a7b08ff14003b9d206e83d2ae0a577cd0700cf0c3135181bc992903797ebe
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.8.15
|
Release files / vecten_mcp-0.1.0-py3-none-any.whl
| Download URL | vecten_mcp-0.1.0-py3-none-any.whl |
|---|---|
| Size | 289.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7f06e3b51670eee248f7e21fee741c9d00a0d87483a8e7520ec70913f5bf011b
|
|
BLAKE2b-256 checksum How to use checksums |
fe6be05fad8a2123fb1c6050fa3e94ccb682b824e2c2ff0a0fff7801dc341ed1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.8.15
|
Security for vecten-mcp 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.