Curl examples
Examples for using the OpenText Analytics Database MCP server with curl for testing and automation.
This page provides curl examples for testing and automating interactions with the OpenText™ Analytics Database MCP server.
Using the MCP server with curl
For testing and automation, you can interact with the MCP server directly using curl.
Basic request format
All MCP requests use JSON-RPC 2.0 format:
curl -k -X POST https://localhost:8667/mcp \
-H "Content-Type: application/json" \
-H "X-Api-Key: YOUR_JWT_TOKEN" \
-d '{
"jsonrpc": "2.0",
"method": "METHOD_NAME",
"params": {
"key": "value"
},
"id": 1
}'
Initialize connection
First, initialize the MCP session:
curl -k -X POST https://localhost:8667/mcp \
-H "Content-Type: application/json" \
-H "X-Api-Key: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." \
-d '{
"jsonrpc": "2.0",
"method": "initialize",
"params": {
"protocolVersion": "2024-11-05",
"capabilities": {
"roots": {
"listChanged": true
}
},
"clientInfo": {
"name": "curl-client",
"version": "1.0.0"
}
},
"id": 1
}'
Response:
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"protocolVersion": "2024-11-05",
"serverInfo": {
"name": "vertica-mcp-server",
"version": "1.0.0"
},
"capabilities": {
"tools": {},
"resources": {},
"prompts": {}
}
}
}
List available tools
Discover what tools are available:
curl -k -X POST https://localhost:8667/mcp \
-H "Content-Type: application/json" \
-H "X-Api-Key: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." \
-d '{
"jsonrpc": "2.0",
"method": "tools/list",
"params": {},
"id": 2
}'
Response:
{
"jsonrpc": "2.0",
"id": 2,
"result": {
"tools": [
{
"name": "execute_query",
"description": "Execute SQL queries against Vertica database",
"inputSchema": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "SQL query to execute"
},
"subcluster": {
"type": "string",
"description": "Optional subcluster name"
}
},
"required": ["query"]
}
},
{
"name": "submit_queue_query",
"description": "Submit long-running query to job queue"
},
{
"name": "list_jobs",
"description": "List all jobs in the queue"
}
]
}
}
Execute a query
Run a simple SQL query:
curl -k -X POST https://localhost:8667/mcp \
-H "Content-Type: application/json" \
-H "X-Api-Key: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." \
-d '{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "execute_query",
"arguments": {
"query": "SELECT version()"
}
},
"id": 3
}'
Response:
{
"jsonrpc": "2.0",
"id": 3,
"result": {
"content": [
{
"type": "text",
"text": "{\"columns\":[\"version\"],\"rows\":[{\"version\":\"Vertica Analytic Database v24.3.0-0\"}],\"count\":1}"
}
]
}
}
Execute query with subcluster routing
Route query to a specific subcluster:
curl -k -X POST https://localhost:8667/mcp \
-H "Content-Type: application/json" \
-H "X-Api-Key: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." \
-d '{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "execute_query",
"arguments": {
"query": "SELECT node_name, subcluster_name FROM nodes",
"subcluster": "analytics_cluster"
}
},
"id": 4
}'
Submit long-running query to queue
For complex analytics queries that take longer to complete:
curl -k -X POST https://localhost:8667/mcp \
-H "Content-Type: application/json" \
-H "X-Api-Key: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." \
-d '{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "submit_queue_query",
"arguments": {
"query": "SELECT customer_id, SUM(amount) FROM sales GROUP BY customer_id",
"description": "Monthly sales by customer"
}
},
"id": 5
}'
Response:
{
"jsonrpc": "2.0",
"id": 5,
"result": {
"content": [
{
"type": "text",
"text": "Job submitted successfully. Job ID: 550e8400-e29b-41d4-a716-446655440000"
}
]
}
}
Check job status
curl -k -X POST https://localhost:8667/mcp \
-H "Content-Type: application/json" \
-H "X-Api-Key: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." \
-d '{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "get_job",
"arguments": {
"job_id": "550e8400-e29b-41d4-a716-446655440000"
}
},
"id": 6
}'
List all jobs
curl -k -X POST https://localhost:8667/mcp \
-H "Content-Type: application/json" \
-H "X-Api-Key: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." \
-d '{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "list_jobs",
"arguments": {}
},
"id": 7
}'
Cancel a job
curl -k -X POST https://localhost:8667/mcp \
-H "Content-Type: application/json" \
-H "X-Api-Key: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." \
-d '{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "cancel_job",
"arguments": {
"job_id": "550e8400-e29b-41d4-a716-446655440000"
}
},
"id": 8
}'
Health check
Check server health without authentication:
curl -k https://localhost:8667/health
Response:
{
"status": "healthy",
"total_pools": 3,
"max_pools": 100
}
Using jq for pretty output
Format JSON responses with jq:
curl -k -X POST https://localhost:8667/mcp \
-H "Content-Type: application/json" \
-H "X-Api-Key: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." \
-d '{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "execute_query",
"arguments": {
"query": "SELECT table_name FROM tables LIMIT 5"
}
},
"id": 1
}' | jq '.'
Bash script example
Create a reusable script for queries:
#!/bin/bash
# mcp_query.sh
API_KEY="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
SERVER="https://localhost:8667/mcp"
QUERY="$1"
if [ -z "$QUERY" ]; then
echo "Usage: $0 'SQL QUERY'"
exit 1
fi
curl -k -X POST "$SERVER" \
-H "Content-Type: application/json" \
-H "X-Api-Key: $API_KEY" \
-d "{
\"jsonrpc\": \"2.0\",
\"method\": \"tools/call\",
\"params\": {
\"name\": \"execute_query\",
\"arguments\": {
\"query\": \"$QUERY\"
}
},
\"id\": 1
}" | jq -r '.result.content[0].text'
Usage:
chmod +x mcp_query.sh
./mcp_query.sh "SELECT COUNT(*) FROM customers"