Provides comprehensive database introspection tools for Cloudflare D1 databases, enabling schema analysis, relationship mapping, validation, and optimization recommendations across development, staging, and production environments.
Semantic D1 MCP
Reference implementation of Semantic Intent as Single Source of Truth patterns
A Model Context Protocol (MCP) server for Cloudflare D1 database introspection, demonstrating semantic anchoring, observable properties, and domain-driven design for AI-assisted database development.
π Table of Contents
π― What Makes This Different
This isn't just another database introspection toolβit's a reference implementation of proven semantic intent patterns:
β Semantic Anchoring: Schema analysis based on meaning (table purpose, relationships), not technical metrics (row counts, sizes)
β Observable Properties: Decisions anchored to directly observable schema markers (foreign keys, indexes, constraints)
β Intent Preservation: Database semantics maintained through all transformations (development β staging β production)
β Domain Boundaries: Clear semantic ownership (Schema Domain β Query Optimization Domain β MCP Protocol Domain)
Built on research from Semantic Intent as Single Source of Truth, this implementation demonstrates how to build maintainable, AI-friendly database tools that preserve intent.
π Quick Start
Prerequisites
Node.js 20.x or higher
Cloudflare account with D1 databases
Cloudflare API token with D1 access
Installation
Clone the repository
git clone https://github.com/semanticintent/semantic-d1-mcp.git cd semantic-d1-mcpInstall dependencies
npm installConfigure environment
Copy the example configuration:
cp .env.example .envUpdate
.env
with your Cloudflare credentials:# Cloudflare Configuration CLOUDFLARE_ACCOUNT_ID=your_cloudflare_account_id CLOUDFLARE_API_TOKEN=your_cloudflare_api_token # D1 Database Configuration - Development D1_DEV_DATABASE_ID=your_dev_database_id D1_DEV_DATABASE_NAME=your_dev_database_name # D1 Database Configuration - Staging (Optional) D1_STAGING_DATABASE_ID=your_staging_database_id D1_STAGING_DATABASE_NAME=your_staging_database_name # D1 Database Configuration - Production (Optional) D1_PROD_DATABASE_ID=your_prod_database_id D1_PROD_DATABASE_NAME=your_prod_database_nameNote: At least one database environment must be configured.
Build the server
npm run buildStart the MCP server
npm startOr use the provided shell script:
./start-d1-mcp.sh
Get Cloudflare API Token
Go to Cloudflare Dashboard
Navigate to My Profile β API Tokens
Click Create Token
Use the Edit Cloudflare Workers template
Add D1 permissions:
D1:Read
Copy the token to your
.env
file
Get D1 Database IDs
Copy the database IDs to your .env
file.
π οΈ MCP Tools
This server provides 4 comprehensive MCP tools for D1 database introspection:
1. analyze_database_schema
Analyze complete database schema structure with metadata and optional sample data.
Parameters:
environment
(required):"development"
|"staging"
|"production"
includeSamples
(optional, default:true
): Include sample data from tablesmaxSampleRows
(optional, default:5
): Maximum rows per table sample
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:
2. get_table_relationships
Extract and analyze foreign key relationships between tables.
Parameters:
environment
(required): Database environmenttableName
(optional): Filter relationships for specific table
Returns:
Foreign key relationships with cardinality (one-to-many, many-to-one)
Referential integrity rules (CASCADE, SET NULL, etc.)
Relationship metadata and statistics
Example:
3. validate_database_schema
Validate database schema for common issues and anti-patterns.
Parameters:
environment
(required): Database environment
Returns:
Schema validation results
Missing primary keys
Foreign keys without indexes
Naming convention violations
Tables without relationships
Example:
4. suggest_database_optimizations
Generate schema optimization recommendations based on structure analysis.
Parameters:
environment
(required): Database environment
Returns:
Prioritized optimization suggestions (high/medium/low)
Missing index recommendations
Primary key suggestions
Schema improvement opportunities
Performance optimization tips
Example:
π Connect to Claude Desktop
Connect this MCP server to Claude Desktop for AI-assisted database development.
Configuration
Edit Claude Desktop config - Go to Settings β Developer β Edit Config
Add MCP server configuration:
Restart Claude Desktop
Verify tools are available - You should see 4 D1 tools in Claude's tool list
Usage Example
In Claude Desktop:
"Analyze my production database schema and suggest optimizations for tables with foreign keys"
Claude will use the analyze_database_schema
and suggest_database_optimizations
tools automatically.
ποΈ Architecture
This project demonstrates Domain-Driven Hexagonal Architecture with clean separation of concerns:
Implementation Status
Status: β Hexagonal architecture refactoring complete
Current Structure:
See ARCHITECTURE.md for detailed design documentation.
Layer Responsibilities
Domain Layer:
Database schema entities (Schema, Table, Relationship, Index)
Schema analysis business logic
Relationship extraction logic
Optimization recommendation rules
Application Layer:
Orchestrate domain services
Execute use cases (AnalyzeSchema, GetRelationships, etc.)
Coordinate infrastructure adapters
Infrastructure Layer:
Cloudflare D1 REST API integration
HTTP client for API calls
Cache provider (in-memory)
Presentation Layer:
MCP server initialization
Tool registration and routing
Request/response formatting
Semantic Intent Principles
This codebase follows strict semantic anchoring rules:
Semantic Over Structural
// β SEMANTIC: Based on observable schema properties const needsIndex = table.hasForeignKey() && !table.hasIndexOnForeignKey() // β STRUCTURAL: Based on technical metrics const needsIndex = table.rowCount > 10000 && table.queryCount > 100Intent Preservation
// β Environment semantics preserved through transformations const schema = await fetchSchema(Environment.PRODUCTION) // Schema analysis preserves "production" intent - no overridesObservable Anchoring
// β Based on directly observable properties const relationships = extractForeignKeys(sqliteMaster) // β Based on inferred behavior const relationships = inferFromQueryPatterns(logs)
See SEMANTIC_ANCHORING_GOVERNANCE.md for complete governance rules.
π§ͺ Testing
Status: β Comprehensive test suite with 398 tests passing
Test Coverage
β Domain Layer: 212 tests (entities, services, validation)
β Infrastructure Layer: 64 tests (D1 adapter, API client, config)
β Application Layer: 35 tests (use cases, orchestration)
β Presentation Layer: 13 tests (MCP server, tool routing)
β Integration: 15 tests (end-to-end flows)
β Value Objects: 59 tests (Environment, immutability)
Total: 398 tests (all passing β )
Running Tests
Test Framework
Vitest: Fast unit testing framework
@vitest/coverage-v8: Code coverage reports
Mock Strategy: Mock Cloudflare D1 API responses via interface implementations
π Learning from This Implementation
This codebase serves as a reference implementation for semantic intent patterns in database tooling.
Key Files to Study
Hexagonal Architecture Implementation:
src/index.ts - Composition root with dependency injection
src/domain/entities/ - Domain entities with semantic validation
src/domain/services/ - Pure business logic services
src/application/use-cases/ - Orchestration layer
src/infrastructure/adapters/ - External adapters
src/presentation/mcp/ - MCP protocol layer
Reference Documentation:
D1_MCP_REFACTORING_PLAN.md - Complete refactoring plan
SEMANTIC_ANCHORING_GOVERNANCE.md - Governance rules
ARCHITECTURE.md - Architecture details
Related Projects
semantic-context-mcp - Sibling reference implementation for context management
π€ Contributing
We welcome contributions! This is a reference implementation, so contributions should maintain semantic intent principles.
How to Contribute
Read the guidelines: CONTRIBUTING.md
Check refactoring plan: D1_MCP_REFACTORING_PLAN.md
Follow the architecture: Maintain layer boundaries and semantic anchoring
Add tests: All changes need comprehensive test coverage
Document intent: Explain WHY, not just WHAT
Contribution Standards
β Follow semantic intent patterns
β Maintain hexagonal architecture (post-refactoring)
β Add comprehensive tests (90%+ coverage target)
β Include semantic documentation
β Pass all CI checks
Quick Links:
Contributing Guide - Detailed guidelines
Code of Conduct - Community standards
Architecture Guide - Design principles
Security Policy - Report vulnerabilities
Community
π¬ Discussions - Ask questions
π Issues - Report bugs
π Security - Report vulnerabilities privately
π Security
Security is a top priority. Please review our Security Policy for:
API token management best practices
What to commit / what to exclude
Reporting security vulnerabilities
Security checklist for deployment
Found a vulnerability? Email: security@semanticintent.dev
π¬ Research Foundation
This implementation is based on the research paper "Semantic Intent as Single Source of Truth: Immutable Governance for AI-Assisted Development".
Core Principles Applied
Semantic Over Structural - Schema analysis based on meaning, not metrics
Intent Preservation - Environment semantics maintained through transformations
Observable Anchoring - Decisions based on directly observable schema properties
Immutable Governance - Protect semantic integrity at runtime
Related Resources
Research Paper (coming soon)
semanticintent.dev (coming soon)
π Project Roadmap
β Phase 0: Initial Implementation (Complete)
Monolithic MCP server with 6 tools
D1 REST API integration
Basic schema analysis
β Phase 1: Domain Layer (Complete)
10 domain entities with semantic validation
3 domain services (SchemaAnalyzer, RelationshipAnalyzer, OptimizationService)
212 passing tests
β Phase 2: Infrastructure Layer (Complete)
CloudflareD1Repository adapter
CloudflareAPIClient HTTP client
InMemoryCacheProvider
64 passing tests
β Phase 3: Application Layer (Complete)
4 use cases (AnalyzeSchema, GetRelationships, ValidateSchema, SuggestOptimizations)
Port interfaces (ICloudflareD1Repository, ICacheProvider)
35 passing tests
β Phase 4: Presentation Layer (Complete)
D1DatabaseMCPServer with 4 MCP tools
Request/response DTOs
13 passing tests
β Phase 5: Integration & Composition Root (Complete)
Dependency injection in index.ts
Environment configuration
15 integration tests
β Phase 6: CI/CD & Documentation (Complete)
TypeScript build verification
README updated
398 total tests passing
π― Phase 7: Production Readiness (Planned)
GitHub Actions CI/CD workflow
Dependabot automation
Security scanning
GitHub repository setup
See D1_MCP_REFACTORING_PLAN.md for detailed roadmap.
π License
This project is licensed under the MIT License - see the LICENSE file for details.
π Acknowledgments
Built on Model Context Protocol by Anthropic
Inspired by Hexagonal Architecture (Alistair Cockburn)
Based on Domain-Driven Design principles (Eric Evans)
Part of the Semantic Intent research initiative
This is a reference implementation demonstrating semantic intent patterns for database introspection. Study the code, learn the patterns, and apply them to your own projects. ποΈ
remote-capable server
The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.
Tools
Enables AI-assisted analysis and optimization of Cloudflare D1 databases through comprehensive schema introspection, relationship mapping, validation, and optimization recommendations. Demonstrates semantic intent patterns with hexagonal architecture for maintainable database development workflows.
- π Table of Contents
- π― What Makes This Different
- π Quick Start
- π οΈ MCP Tools
- π Connect to Claude Desktop
- ποΈ Architecture
- π§ͺ Testing
- π Learning from This Implementation
- π€ Contributing
- π Security
- π¬ Research Foundation
- π Project Roadmap
- β Phase 0: Initial Implementation (Complete)
- β Phase 1: Domain Layer (Complete)
- β Phase 2: Infrastructure Layer (Complete)
- β Phase 3: Application Layer (Complete)
- β Phase 4: Presentation Layer (Complete)
- β Phase 5: Integration & Composition Root (Complete)
- β Phase 6: CI/CD & Documentation (Complete)
- π― Phase 7: Production Readiness (Planned)
- π License
- π Acknowledgments