Skip to content

MCP Tools Overview โ€‹

PerchIQX provides 5 comprehensive MCP tools for Cloudflare D1 database introspection. Each tool is designed with semantic intent principles, focusing on what you want to accomplish rather than technical implementation details.

Available Tools โ€‹

ToolPurposeKey Features
analyze_database_schemaComplete schema introspectionTables, columns, indexes, foreign keys, sample data
get_table_relationshipsRelationship analysisForeign keys, cardinality, referential integrity
validate_database_schemaSchema validationAnti-patterns, missing keys, naming conventions
suggest_database_optimizationsOptimization recommendationsMissing indexes, primary keys, performance tips
compare_schemasSchema drift detectionCross-environment comparison, ICE-scored differences, migration planning

analyze_database_schema โ€‹

Analyze complete database schema structure with metadata and optional sample data.

Parameters โ€‹

typescript
{
  environment: "development" | "staging" | "production",  // required
  includeSamples?: boolean,                                // default: true
  maxSampleRows?: number                                   // default: 5
}

Returns โ€‹

  • Complete schema analysis
  • Table structures with columns, types, constraints
  • Indexes and foreign keys
  • Sample data from each table (if enabled)
  • Schema metadata and statistics

Example Usage โ€‹

json
{
  "name": "analyze_database_schema",
  "arguments": {
    "environment": "development",
    "includeSamples": true,
    "maxSampleRows": 5
  }
}

Use Cases โ€‹

  • Understanding existing database structure
  • Generating schema documentation
  • Planning migrations or refactoring
  • Onboarding new team members

Learn more โ†’


get_table_relationships โ€‹

Extract and analyze foreign key relationships between tables.

Parameters โ€‹

typescript
{
  environment: "development" | "staging" | "production",  // required
  tableName?: string                                       // optional filter
}

Returns โ€‹

  • Foreign key relationships with cardinality (one-to-many, many-to-one)
  • Referential integrity rules (CASCADE, SET NULL, etc.)
  • Relationship metadata and statistics
  • Dependency graph information

Example Usage โ€‹

json
{
  "name": "get_table_relationships",
  "arguments": {
    "environment": "production",
    "tableName": "users"
  }
}

Use Cases โ€‹

  • Understanding data model relationships
  • Planning cascading deletes or updates
  • Identifying circular dependencies
  • Visualizing database architecture

Learn more โ†’


validate_database_schema โ€‹

Validate database schema for common issues and anti-patterns.

Parameters โ€‹

typescript
{
  environment: "development" | "staging" | "production"  // required
}

Returns โ€‹

  • Schema validation results
  • Missing primary keys
  • Foreign keys without indexes
  • Naming convention violations
  • Tables without relationships
  • Severity levels (error, warning, info)

Example Usage โ€‹

json
{
  "name": "validate_database_schema",
  "arguments": {
    "environment": "production"
  }
}

Use Cases โ€‹

  • Pre-deployment schema checks
  • Database health monitoring
  • Identifying schema debt
  • Enforcing best practices

Learn more โ†’


suggest_database_optimizations โ€‹

Generate schema optimization recommendations based on structure analysis.

Parameters โ€‹

typescript
{
  environment: "development" | "staging" | "production"  // required
}

Returns โ€‹

  • Prioritized optimization suggestions (high/medium/low)
  • Missing index recommendations
  • Primary key suggestions
  • Schema improvement opportunities
  • Performance optimization tips
  • Impact analysis for each suggestion

Example Usage โ€‹

json
{
  "name": "suggest_database_optimizations",
  "arguments": {
    "environment": "production"
  }
}

Use Cases โ€‹

  • Performance tuning
  • Query optimization planning
  • Database maintenance
  • Cost reduction (fewer queries)

Learn more โ†’


compare_schemas โ€‹

Compare database schemas between environments to detect drift and plan migrations with ICE-scored differences.

Parameters โ€‹

typescript
{
  sourceDatabaseId: string,                              // required
  sourceEnvironment: "development" | "staging" | "production",  // required
  targetDatabaseId: string,                              // required
  targetEnvironment: "development" | "staging" | "production"   // required
}

Returns โ€‹

  • ICE-scored differences with derived priorities (high/medium/low)
  • Missing tables between source and target
  • Missing columns in existing tables
  • Type mismatches between columns
  • Missing indexes and foreign keys
  • Migration plan with ordered SQL statements
  • Execution metrics (table counts, execution time)

Example Usage โ€‹

json
{
  "name": "compare_schemas",
  "arguments": {
    "sourceDatabaseId": "dev-database-id",
    "sourceEnvironment": "development",
    "targetDatabaseId": "prod-database-id",
    "targetEnvironment": "production"
  }
}

ICE Scoring โ€‹

Each difference is scored using the ICE (Insight-Context-Execution) methodology:

  • Insight (I): Semantic depth of the difference (0-10)
  • Context (C): Environmental criticality and risk (0-10)
  • Execution (E): Action clarity and implementation ease (0-10)
  • Combined Score: (I ร— C ร— E) / 100 โ†’ Priority derivation

Priority Thresholds:

  • High: Combined score โ‰ฅ 6.0 (critical changes)
  • Medium: Combined score 3.0-5.9 (important changes)
  • Low: Combined score < 3.0 (minor changes)

Use Cases โ€‹

  • Drift Detection: Identify schema divergence between environments
  • Migration Planning: Generate ordered migration scripts
  • Pre-deployment Validation: Ensure production readiness
  • Environment Synchronization: Keep dev/staging/prod aligned
  • Schema Version Control: Track schema evolution over time

Example Response โ€‹

json
{
  "result": {
    "summary": {
      "totalDifferences": 5,
      "missingTables": 1,
      "missingColumns": 2,
      "typeMismatches": 1,
      "missingIndexes": 1,
      "isIdentical": false
    },
    "differences": [
      {
        "type": "missing_table",
        "severity": "critical",
        "description": "Table 'audit_logs' exists in development but not in production",
        "iceScore": {
          "insight": 9,
          "context": 10,
          "execution": 8,
          "combined": 7.2,
          "priority": "high"
        },
        "migrationSql": "CREATE TABLE audit_logs (...)"
      }
    ]
  },
  "sourceTableCount": 15,
  "targetTableCount": 14,
  "executionTimeMs": 342
}

Learn more โ†’


Common Patterns โ€‹

Schema Drift Detection โ€‹

Use compare_schemas to detect differences between environments:

typescript
// Compare development against production
compare_schemas({
  sourceDatabaseId: "dev-db-id",
  sourceEnvironment: "development",
  targetDatabaseId: "prod-db-id",
  targetEnvironment: "production"
})

// Review ICE-scored differences
// Generate migration plan
// Apply changes with confidence

Multi-Environment Analysis โ€‹

Compare schemas across environments:

typescript
// Check development schema
analyze_database_schema({ environment: "development" })

// Compare with production
analyze_database_schema({ environment: "production" })

// Or use direct comparison
compare_schemas({
  sourceDatabaseId: "dev-db-id",
  sourceEnvironment: "development",
  targetDatabaseId: "prod-db-id",
  targetEnvironment: "production"
})

Validation + Optimization Workflow โ€‹

  1. Validate schema for issues
  2. Analyze structure in detail
  3. Optimize based on recommendations
typescript
// Step 1: Find issues
validate_database_schema({ environment: "production" })

// Step 2: Get optimization suggestions
suggest_database_optimizations({ environment: "production" })

// Step 3: Analyze specific tables
get_table_relationships({
  environment: "production",
  tableName: "orders"  // Focus on problem area
})

Documentation Generation โ€‹

Use analyze_database_schema with samples to auto-generate documentation:

typescript
analyze_database_schema({
  environment: "production",
  includeSamples: true,
  maxSampleRows: 3  // Show example data
})

Error Handling โ€‹

All tools provide clear error messages:

  • Invalid environment: Environment not configured in .env
  • Database not found: Check database ID and credentials
  • Permission denied: Verify API token has D1 read access
  • Network errors: Cloudflare API connectivity issues

Response Format โ€‹

All tools return structured JSON responses:

json
{
  "success": true,
  "data": {
    // Tool-specific data
  },
  "metadata": {
    "environment": "production",
    "timestamp": "2025-10-15T12:00:00Z",
    "duration_ms": 245
  }
}

Performance Considerations โ€‹

  • Schema analysis is cached for 5 minutes
  • Sample data limits are configurable (default: 5 rows)
  • Relationship analysis uses efficient SQLite introspection queries
  • Large schemas (100+ tables) may take 1-2 seconds

Next Steps โ€‹