Semantic D1 MCP
OfficialSemantic 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
.envwith 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:ReadCopy the token to your
.envfile
Get D1 Database IDs
# List all your D1 databases
wrangler d1 list
# Get specific database info
wrangler d1 info <database-name>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:
{
"name": "analyze_database_schema",
"arguments": {
"environment": "development",
"includeSamples": true,
"maxSampleRows": 5
}
}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:
{
"name": "get_table_relationships",
"arguments": {
"environment": "production",
"tableName": "users"
}
}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:
{
"name": "validate_database_schema",
"arguments": {
"environment": "production"
}
}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:
{
"name": "suggest_database_optimizations",
"arguments": {
"environment": "production"
}
}π 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:
{
"mcpServers": {
"semantic-d1": {
"command": "node",
"args": [
"/absolute/path/to/semantic-d1-mcp/dist/index.js"
],
"env": {
"CLOUDFLARE_ACCOUNT_ID": "your_account_id",
"CLOUDFLARE_API_TOKEN": "your_api_token",
"D1_DEV_DATABASE_ID": "your_dev_db_id",
"D1_DEV_DATABASE_NAME": "your_dev_db_name",
"D1_STAGING_DATABASE_ID": "your_staging_db_id",
"D1_STAGING_DATABASE_NAME": "your_staging_db_name",
"D1_PROD_DATABASE_ID": "your_prod_db_id",
"D1_PROD_DATABASE_NAME": "your_prod_db_name"
}
}
}
}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:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Presentation Layer β
β (MCP Server - Protocol Handling) β
ββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββ
β
ββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββ
β Application Layer β
β (Use Cases - Schema Analysis Orchestration) β
ββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββ
β
ββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββ
β Domain Layer β
β (Schema Entities, Relationship Logic, Services) β
β Pure Business Logic β
ββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββ
β
ββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββ
β Infrastructure Layer β
β (Cloudflare D1 REST API, HTTP Client) β
β Technical Adapters β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββImplementation Status
Status: β Hexagonal architecture refactoring complete
Current Structure:
src/
βββ domain/ # Business logic (entities, services)
β βββ entities/ # DatabaseSchema, TableInfo, Column, etc.
β βββ services/ # SchemaAnalyzer, RelationshipAnalyzer, etc.
β βββ repositories/ # Port interfaces
β βββ value-objects/ # Environment enum
βββ application/ # Use cases and orchestration
β βββ use-cases/ # AnalyzeSchema, GetRelationships, etc.
β βββ ports/ # Cache provider interface
βββ infrastructure/ # External adapters
β βββ adapters/ # CloudflareD1Repository, Cache
β βββ config/ # CloudflareConfig, DatabaseConfig
β βββ http/ # CloudflareAPIClient
βββ presentation/ # MCP protocol layer
β βββ mcp/ # D1DatabaseMCPServer
βββ index.ts # Composition root (DI)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
# Run all tests
npm test
# Watch mode
npm run test:watch
# With UI
npm run test:ui
# Coverage report
npm run test:coverageTest 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. ποΈ
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/semanticintent/semantic-d1-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server