Data Recon MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| FASTAPI_URL | No | URL of the centralized backend FastAPI server (optional, defaults to embedded backend) | |
| DATASOURCE_MYSQL_PROD | No | JSON string with MySQL datasource configuration (example for pre-configured datasource) |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| add_datasourceA | Register a new database connection (MySQL or Snowflake). AFTER USING: Always call test_datasource to verify the connection works. MySQL config: {host, port, username, password, database}. Snowflake config: {account, username, password, warehouse, database, schema}. |
| list_datasourcesA | List all registered data sources. FIRST STEP: Always check what data sources are available before doing any work. If empty, guide user to add data sources with add_datasource. |
| test_datasourceA | Test connection to a data source. USE: After adding a new data source, when user reports issues, or before starting reconciliation. |
| remove_datasourceA | Remove a registered data source. CAUTION: This deletes the configuration permanently. |
| get_databasesA | List all databases in a data source. USE: To discover available databases before listing tables. |
| get_tablesA | List all tables in a database/schema. PREFER search_tables if user mentions a specific table name pattern. |
| get_table_schemaB | Get column definitions (name, type, nullable, primary key). USE: To understand table structure, find numeric columns for aggregates, or find primary keys for sample checks. |
| get_metadata_catalogA | Get FULL metadata catalog (all databases, schemas, tables). USE: When starting with a data source to understand what's available. WARNING: Can be slow for large databases - prefer search_tables for targeted queries. |
| search_tablesA | 🔍 CRITICAL - USE FIRST when user mentions a table name. Search for tables by name pattern. NEVER assume table names exist - always search first. Example: User says 'orders table' → search pattern 'order' to find 'orders', 'order_items', etc. Then confirm with user which table they mean. |
| get_sample_dataA | Preview first N rows of a table. USE: To VERIFY you found the correct table before running expensive checks. Show user what data looks like. |
| validate_table_existsB | ⚠️ REQUIRED BEFORE CHECKS - Verify a table exists before running any reconciliation. ALWAYS call this for BOTH source AND target tables before run_row_count_check, run_aggregate_check, run_schema_check, or run_sample_check. Prevents wasted time and cryptic errors. |
| validate_columns_existB | ⚠️ REQUIRED FOR AGGREGATES - Verify columns exist before running aggregate checks. ALWAYS call this before run_aggregate_check to prevent errors from typos or missing columns. |
| get_table_statsB | Get quick statistics: row count, column count, size. USE: For sanity check before reconciliation, to estimate how long checks might take (large tables = longer). |
| compare_table_structuresA | 📊 RECOMMENDED FIRST STEP - Side-by-side comparison of source and target schemas BEFORE running data checks. Shows column differences and type mismatches that may cause false positives in data comparison. |
| run_row_count_checkA | ✅ FAST FIRST CHECK - Compare row counts. Run this FIRST - it's fast and catches major issues. PREREQUISITE: Call validate_table_exists for both tables first. For large tables, use partition_config to compare date ranges. |
| run_aggregate_checkA | Compare column-level aggregates: SUM, AVG, MIN, MAX, COUNT_DISTINCT. PREREQUISITES: 1) validate_table_exists 2) validate_columns_exist. USE: After row counts match, to verify numeric data integrity. |
| run_schema_checkC | Compare table schemas (column names, data types). USE: To identify structural differences that might cause data issues. |
| run_sample_checkA | 🔬 DETAILED CHECK - Compare actual row values by primary key. USE: After row counts and aggregates pass, for detailed validation. Identifies specific mismatched rows. PREREQUISITE: validate_table_exists, know the primary key. |
| create_recon_jobA | Create comprehensive reconciliation job with multiple checks. Runs asynchronously - use get_job_status to monitor. PREREQUISITES: validate_table_exists, compare_table_structures. |
| get_job_statusA | Get job progress: status, percent complete, current check. Poll every few seconds while running. Report to user: 'Job is 50% complete, running aggregate check...' |
| get_job_resultsA | Get detailed results after job completes. USE: After get_job_status shows status=completed. |
| list_jobsB | List recent reconciliation jobs. USE: To see job history or find previous results. |
| cancel_jobB | Cancel a running job. USE: When user wants to stop long-running reconciliation. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| quick_validation | Quick validation workflow for comparing two tables |
| full_reconciliation | Comprehensive reconciliation job with all check types |
| setup_datasources | Help setting up new data source connections |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/hindocharaj1997/data-recon-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server