MCP Vertica
MCP Vertica is a Model Context Protocol server that provides comprehensive database connectivity and management tools for Vertica databases.
Execute SQL queries - Run any SQL operations including SELECT, INSERT, UPDATE, DELETE statements
Stream large query results - Process query results in configurable batches for efficient handling of large datasets
Bulk data operations - Use COPY command for efficient bulk data loading into Vertica tables
Schema inspection - Get detailed table structures including columns, data types, and constraints
Index and view management - List all indexes for tables and views within schemas along with their definitions
Connection management - Configurable connection pooling with SSL/TLS support, automatic cleanup, and timeout handling
Security controls - Operation-level permissions (INSERT, UPDATE, DELETE, DDL) and schema-specific access controls
Configuration options - Set database connection parameters (host, port, database, user, password, connection limits) and enable debug logging for troubleshooting
Provides instructions for running Vertica with Docker Compose, including environment setup and container configuration for testing purposes.
Supports configuration through environment variables files, allowing users to set connection parameters, security settings, and operation permissions without command-line arguments.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP Verticashow me the top 10 customers by total sales this month"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Vertica
🏆 First implementation of Vertica MCP Server • Learn more
âś… Listed in Model Context Protocol Official Registry
A Vertica MCP(model-context-protocol) Server
Example: MCP Server Setting
Create or edit the file your mcp client config file with the following content:
UVX
{
"mcpServers": {
"vertica": {
"command": "uvx",
"args": ["mcp-vertica"],
"env": {
"VERTICA_HOST": "localhost",
"VERTICA_PORT": 5433,
"VERTICA_DATABASE": "VMart",
"VERTICA_USER": "dbadmin",
"VERTICA_PASSWORD": "test_password",
"VERTICA_CONNECTION_LIMIT": 10,
"VERTICA_SSL": false,
"VERTICA_SSL_REJECT_UNAUTHORIZED": true
}
}
}
}Or with args
{
"mcpServers": {
"vertica": {
"command": "uvx",
"args": [
"mcp-vertica",
"--host=localhost",
"--db-port=5433",
"--database=VMart",
"--user=dbadmin",
"--password=test_password",
"--connection-limit=10"
]
}
}
}Docker
{
"mcpServers": {
"vertica": {
"command": "docker",
"args": ["run", "-i", "--rm", "nolleh/mcp-vertica"],
"env": {
"VERTICA_HOST": "localhost",
"VERTICA_PORT": 5433,
"VERTICA_DATABASE": "VMart",
"VERTICA_USER": "dbadmin",
"VERTICA_PASSWORD": "test_password",
"VERTICA_CONNECTION_LIMIT": 10,
"VERTICA_SSL": false,
"VERTICA_SSL_REJECT_UNAUTHORIZED": true
}
}
}
}[!Note]
For boolean flags like
--sslor--ssl-reject-unauthorized, simply add the flag (e.g.,"--ssl") to enable it, or omit it to disable.For an empty password, use an empty string as shown above.
Features
Database Connection Management
Connection pooling with configurable limits
SSL/TLS support
Automatic connection cleanup
Connection timeout handling
Query Operations
Execute SQL queries
Stream large query results in batches
Copy data operations
Transaction management
Schema Management
Table structure inspection
Index management
View management
Constraint information
Column details
Security Features
Operation-level permissions (INSERT, UPDATE, DELETE, DDL)
Schema-specific permissions
SSL/TLS support
Password masking in logs
Related MCP server: MSSQL MCP Server
Tools
Database Operations
execute_queryExecute SQL queries
Support for all SQL operations
stream_queryStream large query results in batches
Configurable batch size
copy_dataBulk data loading using COPY command
Efficient for large datasets
Schema Management
get_table_structureGet detailed table structure
Column information
Constraints
list_indexesList all indexes for a table
Index type and uniqueness
Column information
list_viewsList all views in a schema
View definitions
Configuration
Environment Variables
VERTICA_HOST=localhost
VERTICA_PORT=5433
VERTICA_DATABASE=VMart
VERTICA_USER=newdbadmin
VERTICA_PASSWORD=vertica
VERTICA_CONNECTION_LIMIT=10
VERTICA_SSL=false
VERTICA_SSL_REJECT_UNAUTHORIZED=trueOperation Permissions
ALLOW_INSERT_OPERATION=false
ALLOW_UPDATE_OPERATION=false
ALLOW_DELETE_OPERATION=false
ALLOW_DDL_OPERATION=falseSchema Permissions
SCHEMA_INSERT_PERMISSIONS=schema1:true,schema2:false
SCHEMA_UPDATE_PERMISSIONS=schema1:true,schema2:false
SCHEMA_DELETE_PERMISSIONS=schema1:true,schema2:false
SCHEMA_DDL_PERMISSIONS=schema1:true,schema2:falseInstallation
Installing via Smithery
To install Vertica Database Connector for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @nolleh/mcp-vertica --client claudeInstalling Manually
Open your favorite mcp client's config file, then configure with uvx mcp-vertica
Development
Debug Mode
When running with Docker, you can enable debug logging by setting the DEBUG environment variable:
# Run with maximum verbosity (-vvv)
docker run -e DEBUG=3 -e VERTICA_HOST=localhost ... nolleh/mcp-vertica:latest
# Run with medium verbosity (-vv)
docker run -e DEBUG=2 -e VERTICA_HOST=localhost ... nolleh/mcp-vertica:latest
# Pass additional arguments
docker run -e EXTRA_ARGS="--connection-limit=20" -e VERTICA_HOST=localhost ... nolleh/mcp-vertica:latestIn docker-compose.yml:
environment:
DEBUG: 3 # 0=none, 1=-v, 2=-vv, 3=-vvv
EXTRA_ARGS: "--connection-limit=20" # Optional additional argumentsAppendix: For Testing, VerticaDB Docker Compose Example
version: "3.8"
services:
vertica:
# image: vertica/vertica-ce:11.1.0-0
image: vertica/vertica-ce:latest
platform: linux/amd64
container_name: vertica-ce
environment:
VERTICA_MEMDEBUG: 2
ports:
- "5433:5433"
- "5444:5444"
volumes:
- vertica_data:/home/dbadmin/VMart
healthcheck:
test:
[
"CMD",
"/opt/vertica/bin/vsql",
"-h",
"localhost",
"-d",
"VMart",
"-U",
"dbadmin",
"-c",
"SELECT 1",
]
interval: 10s
timeout: 5s
retries: 5
start_period: 30s
restart: unless-stopped
mcp-vertica:
image: nolleh/mcp-vertica:latest
container_name: mcp-vertica
ports:
- "8081:8081"
environment:
# Transport mode
TRANSPORT: http
PORT: 8081
# Debug settings (0=none, 1=-v, 2=-vv, 3=-vvv)
DEBUG: 3 # Set to 3 for maximum verbosity
# Extra command line arguments (optional)
# EXTRA_ARGS: "--some-flag"
# Vertica connection settings
VERTICA_HOST: vertica
VERTICA_PORT: 5433
VERTICA_DATABASE: VMart
VERTICA_USER: dbadmin
VERTICA_PASSWORD: ""
VERTICA_CONNECTION_LIMIT: 10
VERTICA_SSL: "false"
depends_on:
vertica:
condition: service_healthy
volumes:
vertica_data:
driver: localThen run server by following instruction Example: Mcp Server Setting, Then see everything works as fine
License
This project is licensed under the MIT License - see the LICENSE file for details.
Available Tools
6 toolscopy_dataC
Copy data into a Vertica table using COPY command.
Args:
ctx: FastMCP context for progress reporting and logging
schema: vertica schema to execute the copy against
table: Target table name
data: List of rows to insert
Returns:
Status message indicating success or failure
| Name | Required | Description | Default |
|---|---|---|---|
| schema | Yes | ||
| table | Yes | ||
| data | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It mentions using COPY command but lacks details on permissions, error handling, or side effects. Returns a status message but no specifics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise with Args and Returns sections, front-loading the purpose. No unnecessary sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, no annotations, and 3 required params, the description is incomplete. It doesn't mention table existence requirements, data format constraints, or behavior on conflict.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but description adds minimal meaning: 'vertica schema', 'Target table name', 'List of rows to insert'. The 'data' parameter lacks structure details beyond list of rows, leaving ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it copies data into a Vertica table using COPY command, which is a specific verb and resource. It is easily distinguishable from siblings like execute_query or list_indexes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives like execute_query for single inserts. No prerequisites or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execute_queryC
Execute a SQL query and return the results.
Args:
ctx: FastMCP context for progress reporting and logging
query: SQL query to execute
database: Optional database name to execute the query against
Returns:
Query results as a string
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It only states the action and return type, omitting crucial details such as whether the query is read-only, impacts on data, or required permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is reasonably concise with a clear structure (Args, Returns). The purpose sentence is front-loaded, and every sentence serves a purpose despite the parameter mismatch.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that there is no output schema and no annotations, the description is insufficient. It lacks details about error handling, supported SQL syntax, database selection, and whether the tool is safe for read-only queries.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning for the 'query' parameter ('SQL query to execute'), but it also mentions 'ctx' and 'database' which are not in the input schema, causing confusion. Schema description coverage is 0%, so the description should compensate but instead introduces inconsistency.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Execute a SQL query and return the results,' which is a specific verb and resource. However, the mention of parameters not present in the input schema (ctx, database) slightly reduces clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 siblings like stream_query or copy_data. The description does not specify prerequisites or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_table_structureB
Get the structure of a table including columns, data types, and constraints.
Args:
ctx: FastMCP context for progress reporting and logging
table_name: Name of the table to inspect
schema: Schema name (default: public)
Returns:
Table structure information as a string
| Name | Required | Description | Default |
|---|---|---|---|
| table_name | Yes | ||
| schema | No | public |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It mentions returning 'Table structure information as a string' but does not describe the format, side effects (e.g., read-only), error behavior, or performance characteristics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is relatively concise, with the purpose stated in the first line. However, the Args/Returns block adds some verbosity without significant extra value, and could be streamlined.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and a potentially complex return value, the description should elaborate on the format of the returned string (e.g., JSON, plain text). It also lacks error handling details and examples.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description adds value beyond the schema. It defines table_name and schema with a default, but does not provide examples, constraints (e.g., required format for table_name), or clarification of schema parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves table structure including columns, data types, and constraints. It uses a specific verb (Get) and resource (table structure), and is distinct from sibling tools like execute_query or list_views.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus alternatives. No mention of prerequisites, cases where other tools are preferred, or scope limitations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_indexesB
List all indexes for a specific table.
Args:
ctx: FastMCP context for progress reporting and logging
table_name: Name of the table to inspect
schema: Schema name (default: public)
Returns:
Index information as a string
| Name | Required | Description | Default |
|---|---|---|---|
| table_name | Yes | ||
| schema | No | public |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must disclose behavioral traits. It states returns are a string but omits details on performance, side effects, permissions, or error handling, leaving the agent under-informed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and includes an Args/Returns structure, making it reasonably scannable. It could be slightly more concise by merging the header, but overall it is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 2 parameters and no output schema, the description is minimal. It lacks details on the return format, edge cases, or database prerequisites, making it only barely adequate for operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description adds meaningful parameter descriptions ('Name of the table to inspect' and 'Schema name (default: public)'), compensating for the lack of schema descriptions. This adds value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List all indexes for a specific table,' specifying the verb and resource. However, it does not differentiate from sibling tools like get_table_structure, which might have similar functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 alternative tools. The description only states what the tool does, without any when-not or alternative references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_viewsB
List all views in a schema.
Args:
ctx: FastMCP context for progress reporting and logging
schema: Schema name (default: public)
Returns:
View information as a string
| Name | Required | Description | Default |
|---|---|---|---|
| schema | No | public |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It mentions returning a string but does not reveal side effects, authentication needs, or performance implications. The included 'ctx' parameter is not in the input schema, causing inconsistency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and uses a structured 'Args/Returns' format. However, it includes redundant technical formatting and a parameter (ctx) that does not appear in the schema, which could confuse an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Missing important details: the return format of the string, progress reporting behavior (despite mentioning ctx), and how to handle large results. The discrepancy between description params and schema further reduces completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% (low), so the description must compensate. The description provides meaning for the 'schema' parameter ('Schema name (default: public)'), adding semantic value beyond the schema's default and type. However, it includes an undocumented 'ctx' parameter, slightly reducing clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'List all views in a schema,' clearly identifying the resource (views) and action (list). It distinguishes from sibling tools like list_indexes and get_table_structure by specifying it is for views.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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, exclusions, or comparison with siblings. The description only states what it does, not the context for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stream_queryC
Execute a SQL query and return the results in batches as a single string.
Args:
ctx: FastMCP context for progress reporting and logging
query: SQL query to execute
batch_size: Number of rows to fetch at once
Returns:
Query results as a concatenated string
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| batch_size | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should fully disclose behavioral traits. It mentions batching and progress reporting but omits critical details like whether the tool modifies data, safety concerns, or authentication requirements. The description does not warn about potentially destructive SQL operations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with a single-purpose summary and structured Args/Returns. No extraneous text, though it could be more informative without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (SQL execution with optional batching, no output schema) and zero annotations, the description is incomplete. It fails to explain return value format, error handling, or when to adjust batch_size. The agent lacks sufficient context to use it safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must add meaning. It provides minimal descriptions for 'query' and 'batch_size' (e.g., 'SQL query to execute') but lacks constraints, valid ranges, or examples. The batch_size default and meaning are implied but not elaborated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Execute a SQL query') and the unique output format ('return the results in batches as a single string'). This distinguishes it from siblings like execute_query, which likely returns results differently.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 (e.g., execute_query). There is no mention of prerequisites, limitations, or exclusions.
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.
6 tool updates
- First observed
copy_data - First observed
execute_query - First observed
get_table_structure - First observed
list_indexes - First observed
list_views - First observed
stream_query
TDQS
Scored across 6 tools
Most tools are distinct, but 'execute_query' and 'stream_query' both execute SQL queries with only a difference in batch handling, leading to potential confusion for an agent.
All tools follow a consistent verb_noun pattern with underscores (e.g., copy_data, list_indexes, get_table_structure), making the naming predictable.
6 tools is a reasonable size for a focused database server, though it leans slightly low.
The set covers query execution and data copying but lacks essential operations like table creation, modification, and deletion, leaving significant gaps for typical database management.
Maintenance
Related MCP Connectors
The BigQuery remote MCP server is a fully managed service that uses the Model Context Protocol to connect AI applications and LLMs to BigQuery data sources. It provides secure, standardized tools for AI agents to list datasets and tables, retrieve schemas, generate and execute SQL queries through natural language, and analyze data—enabling direct access to enterprise analytics data without requiring manual SQL coding.
Draxlr's remote MCP server connects AI assistants to your SQL databases and dashboards. Explore schemas, run read-only queries, manage saved queries and dashboards, and export results, all with row-level security so each user sees only their own data.
Hosted MCP server for AI-driven data ops. Create apps, manage schemas, and CRUD structured data.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables SQL query execution, database management, and business intelligence capabilities through MySQL connections.1,166MIT
- AlicenseBqualityDmaintenanceA Model Context Protocol server that enables executing SQL queries and managing connections with Microsoft SQL Server databases.11,7746MIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that provides AI assistants with comprehensive access to SQL databases, enabling schema inspection, query execution, and database operations with enterprise-grade security.357MIT
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables AI assistants to interact with Vertica databases through SQL queries, schema inspection, database documentation, and data export capabilities.1-