DuckDB MCP Client Functions Reference
DuckDB MCP Client Functions Reference
Complete reference for MCP client functions in healthcare analytics
Core Client Functions
Server Connection and Management
ATTACH - Connect to MCP Server
-- Syntax
ATTACH 'command' AS server_name (
TYPE mcp,
TRANSPORT 'transport_type',
ARGS '[command_args]'
);
-- Examples for Healthcare Data Sources
ATTACH 'python3' AS census_api (
TYPE mcp,
TRANSPORT 'stdio',
ARGS '["scripts/census_mcp_server.py", "--api-key", "${CENSUS_API_KEY}"]'
);
ATTACH 'node' AS medicare_analytics (
TYPE mcp,
TRANSPORT 'stdio',
ARGS '["services/medicare_server.js", "--env", "production"]'
);
-- TCP Connection Example
ATTACH 'tcp://healthcare-analytics.internal:8080' AS analytics_server (
TYPE mcp,
TRANSPORT 'tcp'
);
mcp_reconnect_server() - Reconnect to MCP Server
-- Syntax
SELECT mcp_reconnect_server(server_name);
-- Healthcare Examples
SELECT mcp_reconnect_server('census_api');
SELECT mcp_reconnect_server('medicare_analytics');
-- Reconnect all servers
SELECT mcp_reconnect_server(server_name)
FROM (SELECT DISTINCT server_name FROM duckdb_mcp_servers());
Resource Discovery Functions
mcp_list_resources() - List Available Resources
-- Syntax
SELECT mcp_list_resources(server_name);
-- Healthcare Examples
SELECT * FROM mcp_list_resources('census_api');
SELECT * FROM mcp_list_resources('medicare_analytics');
-- Filter resources by type
SELECT *
FROM mcp_list_resources('healthcare_server')
WHERE resource_type = 'dataset';
-- Find patient data resources
SELECT *
FROM mcp_list_resources('ehr_server')
WHERE resource_uri LIKE '%patient%';
mcp_get_resource() - Retrieve Specific Resource
-- Syntax
SELECT mcp_get_resource(server_name, resource_uri);
-- Healthcare Examples
SELECT mcp_get_resource('census_api', 'census://acs/demographics/2022');
SELECT mcp_get_resource('medicare_server', 'medicare://beneficiaries/county/12086');
-- Get facility information
SELECT mcp_get_resource('facilities_server', 'facilities://hospitals/state/FL');
-- Get health indicators
SELECT mcp_get_resource('cdc_server', 'cdc://health-indicators/county/all');
Tool Discovery and Execution
mcp_list_tools() - List Available Tools
-- Syntax
SELECT mcp_list_tools(server_name);
-- Healthcare Examples
SELECT * FROM mcp_list_tools('analytics_server');
SELECT * FROM mcp_list_tools('privacy_server');
-- Find specific tool categories
SELECT *
FROM mcp_list_tools('healthcare_tools')
WHERE tool_category = 'population_health';
-- List all analytics tools across servers
SELECT server_name, tool_name, description
FROM (
SELECT 'census_api' as server_name, * FROM mcp_list_tools('census_api')
UNION ALL
SELECT 'medicare_server' as server_name, * FROM mcp_list_tools('medicare_server')
)
WHERE tool_name LIKE '%analytic%';
mcp_call_tool() - Execute MCP Tool
-- Syntax
SELECT mcp_call_tool(server_name, tool_name, parameters_json);
-- Healthcare Analytics Examples
SELECT mcp_call_tool('analytics_server', 'calculate_medicare_eligibility', '{
"county_fips": "12086",
"age_threshold": 65,
"income_considerations": true
}');
SELECT mcp_call_tool('population_server', 'project_population', '{
"base_year": 2022,
"projection_years": 10,
"geography": "county",
"state": "FL"
}');
-- Data quality tools
SELECT mcp_call_tool('quality_server', 'validate_demographics', '{
"dataset": "census_data",
"validation_rules": ["age_range", "income_positive", "population_consistent"]
}');
-- Privacy and anonymization tools
SELECT mcp_call_tool('privacy_server', 'anonymize_patient_data', '{
"method": "k_anonymity",
"k_value": 5,
"quasi_identifiers": ["age", "zipcode", "gender"]
}');
Prompt Management Functions
mcp_list_prompts() - List Available Prompts
-- Syntax
SELECT mcp_list_prompts(server_name);
-- Healthcare Examples
SELECT * FROM mcp_list_prompts('ai_analytics_server');
-- Find healthcare-specific prompts
SELECT *
FROM mcp_list_prompts('healthcare_ai')
WHERE prompt_category = 'clinical_analysis';
mcp_get_prompt() - Retrieve Prompt Template
-- Syntax
SELECT mcp_get_prompt(server_name, prompt_name);
-- Healthcare Examples
SELECT mcp_get_prompt('ai_server', 'analyze_population_health');
SELECT mcp_get_prompt('clinical_ai', 'generate_health_report');
-- Get prompts for specific healthcare domains
SELECT mcp_get_prompt('epidemiology_ai', 'disease_outbreak_analysis');
Data Access Functions
File Reading via MCP
read_csv() with MCP URIs
-- Syntax
SELECT * FROM read_csv('mcp://server_name/resource_uri', options);
-- Healthcare Examples
SELECT * FROM read_csv('mcp://census_server/file:///data/acs_demographics.csv',
header=true,
auto_detect=true
);
SELECT * FROM read_csv('mcp://medicare_server/file:///data/beneficiaries.csv',
header=true,
types={
'BENE_ID': 'VARCHAR',
'AGE': 'INTEGER',
'STATE_CD': 'VARCHAR'
}
);
-- Read multiple demographic files
SELECT * FROM read_csv('mcp://data_server/file:///demographics/*.csv',
union_by_name=true,
filename=true
);
read_json() with MCP URIs
-- Syntax
SELECT * FROM read_json('mcp://server_name/resource_uri', options);
-- Healthcare API Examples
SELECT * FROM read_json('mcp://fhir_server/api://Patient?_count=1000',
format='array'
);
SELECT * FROM read_json('mcp://healthcare_api/api://facilities/search',
headers={'Authorization': 'Bearer ${API_TOKEN}'}
);
-- Process nested healthcare JSON
SELECT
JSON_EXTRACT_STRING(data, '$.patient.id') as patient_id,
JSON_EXTRACT_STRING(data, '$.diagnosis.primary') as primary_diagnosis
FROM read_json('mcp://clinical_server/api://encounters/recent');
read_parquet() with MCP URIs
-- Syntax
SELECT * FROM read_parquet('mcp://server_name/resource_uri');
-- Large Healthcare Dataset Examples
SELECT * FROM read_parquet('mcp://warehouse_server/file:///data/claims_data.parquet');
SELECT * FROM read_parquet('mcp://analytics_server/file:///processed/population_health.parquet')
WHERE state = 'FL' AND survey_year = 2022;
-- Read partitioned healthcare data
SELECT * FROM read_parquet('mcp://data_lake/file:///healthcare/year=2022/state=FL/*.parquet');
Healthcare-Specific Function Patterns
Population Health Analytics
-- Calculate population health metrics via MCP
CREATE TABLE population_health_metrics AS
SELECT
county,
state,
mcp_call_tool('health_server', 'calculate_health_index',
JSON_OBJECT('county_fips', geo_id, 'metrics', 'all')
)::JSON as health_metrics
FROM demographics;
-- Extract specific health indicators
SELECT
county,
state,
JSON_EXTRACT_STRING(health_metrics, '$.diabetes_rate') as diabetes_rate,
JSON_EXTRACT_STRING(health_metrics, '$.obesity_rate') as obesity_rate
FROM population_health_metrics;
Medicare Advantage Analytics
-- Get Medicare Advantage penetration data
CREATE TABLE ma_penetration AS
SELECT
county_fips,
mcp_call_tool('medicare_server', 'get_ma_penetration',
JSON_OBJECT('county', county_fips, 'year', 2022)
)::JSON as ma_data
FROM county_list;
-- Calculate enrollment projections
SELECT
county_fips,
mcp_call_tool('actuarial_server', 'project_ma_enrollment',
JSON_OBJECT(
'current_enrollment', JSON_EXTRACT(ma_data, '$.current_enrollment'),
'demographic_trends', JSON_EXTRACT(ma_data, '$.demographic_trends'),
'projection_years', 5
)
) as enrollment_projection
FROM ma_penetration;
Clinical Data Integration
-- Access FHIR patient resources
CREATE TABLE patient_demographics AS
SELECT
JSON_EXTRACT_STRING(resource, '$.id') as patient_id,
JSON_EXTRACT_STRING(resource, '$.gender') as gender,
EXTRACT(YEAR FROM CURRENT_DATE) -
EXTRACT(YEAR FROM CAST(JSON_EXTRACT_STRING(resource, '$.birthDate') AS DATE)) as age,
JSON_EXTRACT_STRING(resource, '$.address[0].state') as state
FROM read_json('mcp://fhir_server/api://Patient?_count=10000', format='array') t(resource);
-- Process clinical observations
CREATE TABLE clinical_observations AS
SELECT
JSON_EXTRACT_STRING(obs, '$.subject.reference') as patient_ref,
JSON_EXTRACT_STRING(obs, '$.code.coding[0].code') as observation_code,
JSON_EXTRACT_STRING(obs, '$.code.coding[0].display') as observation_name,
JSON_EXTRACT_STRING(obs, '$.valueQuantity.value') as value,
JSON_EXTRACT_STRING(obs, '$.valueQuantity.unit') as unit
FROM read_json('mcp://fhir_server/api://Observation?category=vital-signs', format='array') t(obs);
Error Handling Patterns
Robust MCP Operations
-- Safe MCP tool execution with error handling
CREATE OR REPLACE FUNCTION safe_mcp_call(
server_name VARCHAR,
tool_name VARCHAR,
parameters VARCHAR
) RETURNS VARCHAR AS $$
BEGIN
RETURN mcp_call_tool(server_name, tool_name, parameters);
EXCEPTION
WHEN OTHERS THEN
INSERT INTO mcp_error_log (server_name, tool_name, error_message, timestamp)
VALUES (server_name, tool_name, SQLERRM, CURRENT_TIMESTAMP);
RETURN NULL;
END;
$$ LANGUAGE plpgsql;
-- Usage
SELECT safe_mcp_call('analytics_server', 'calculate_health_score', '{"county": "12086"}');
Connection Resilience
-- Function to ensure MCP server connectivity
CREATE OR REPLACE FUNCTION ensure_mcp_connection(server_name VARCHAR) RETURNS BOOLEAN AS $$
DECLARE
server_status VARCHAR;
BEGIN
-- Check server status
SELECT status INTO server_status
FROM duckdb_mcp_servers()
WHERE name = server_name;
IF server_status != 'connected' THEN
-- Attempt reconnection
PERFORM mcp_reconnect_server(server_name);
-- Wait and check again
PERFORM pg_sleep(2);
SELECT status INTO server_status
FROM duckdb_mcp_servers()
WHERE name = server_name;
END IF;
RETURN server_status = 'connected';
END;
$$ LANGUAGE plpgsql;
-- Usage before critical operations
SELECT CASE
WHEN ensure_mcp_connection('census_api') THEN
mcp_call_tool('census_api', 'get_demographics', '{"state": "FL"}')
ELSE
'{"error": "Server unavailable"}'
END as result;
Performance Optimization
Caching MCP Resources
-- Create cache table for frequently accessed resources
CREATE TABLE mcp_resource_cache (
server_name VARCHAR,
resource_uri VARCHAR,
resource_data JSON,
cache_timestamp TIMESTAMP,
ttl_seconds INTEGER,
PRIMARY KEY (server_name, resource_uri)
);
-- Function to get cached or fresh resource
CREATE OR REPLACE FUNCTION get_cached_resource(
server_name VARCHAR,
resource_uri VARCHAR,
ttl_seconds INTEGER DEFAULT 3600
) RETURNS JSON AS $$
DECLARE
cached_data JSON;
cache_age INTEGER;
BEGIN
-- Check cache
SELECT
resource_data,
EXTRACT(EPOCH FROM CURRENT_TIMESTAMP - cache_timestamp)::INTEGER
INTO cached_data, cache_age
FROM mcp_resource_cache
WHERE server_name = get_cached_resource.server_name
AND resource_uri = get_cached_resource.resource_uri;
-- Return cached data if fresh
IF cached_data IS NOT NULL AND cache_age < ttl_seconds THEN
RETURN cached_data;
END IF;
-- Fetch fresh data
cached_data := mcp_get_resource(server_name, resource_uri)::JSON;
-- Update cache
INSERT INTO mcp_resource_cache VALUES (
server_name, resource_uri, cached_data, CURRENT_TIMESTAMP, ttl_seconds
) ON CONFLICT (server_name, resource_uri) DO UPDATE SET
resource_data = EXCLUDED.resource_data,
cache_timestamp = EXCLUDED.cache_timestamp,
ttl_seconds = EXCLUDED.ttl_seconds;
RETURN cached_data;
END;
$$ LANGUAGE plpgsql;
Batch Operations
-- Batch MCP tool calls for efficiency
CREATE OR REPLACE FUNCTION batch_mcp_tool_calls(
server_name VARCHAR,
tool_name VARCHAR,
parameters_array JSON[]
) RETURNS JSON[] AS $$
DECLARE
result JSON[];
param JSON;
BEGIN
-- Use array processing for batch operations
SELECT ARRAY_AGG(
mcp_call_tool(server_name, tool_name, param::VARCHAR)::JSON
)
INTO result
FROM UNNEST(parameters_array) AS param;
RETURN result;
END;
$$ LANGUAGE plpgsql;
-- Usage for batch county analysis
SELECT batch_mcp_tool_calls(
'analytics_server',
'calculate_health_score',
ARRAY[
'{"county": "12086"}',
'{"county": "12011"}',
'{"county": "12099"}'
]::JSON[]
);
This reference provides comprehensive coverage of all DuckDB MCP client functions specifically optimized for healthcare analytics and Census data integration scenarios.