Semantic D1 MCP
Official[](https://mseep.ai/app/semanticintent-semantic-d1-mcp)
# Semantic D1 MCP
[](https://opensource.org/licenses/MIT)
[](https://github.com/semanticintent/semantic-d1-mcp/actions/workflows/ci.yml)
[](https://www.typescriptlang.org/)
[](https://nodejs.org/)
[](https://github.com/semanticintent/semantic-d1-mcp)
[](https://github.com/semanticintent)
[](ARCHITECTURE.md)
[](CONTRIBUTING.md)
> **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](#-what-makes-this-different)
- [Quick Start](#-quick-start)
- [MCP Tools](#-mcp-tools)
- [Architecture](#-architecture)
- [Testing](#-testing)
- [Contributing](#-contributing)
- [Security](#-security)
- [License](#license)
## π― 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](https://github.com/semanticintent), 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
1. **Clone the repository**
```bash
git clone https://github.com/semanticintent/semantic-d1-mcp.git
cd semantic-d1-mcp
```
2. **Install dependencies**
```bash
npm install
```
3. **Configure environment**
Copy the example configuration:
```bash
cp .env.example .env
```
Update `.env` with your Cloudflare credentials:
```bash
# 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_name
```
**Note**: At least one database environment must be configured.
4. **Build the server**
```bash
npm run build
```
5. **Start the MCP server**
```bash
npm start
```
Or use the provided shell script:
```bash
./start-d1-mcp.sh
```
### Get Cloudflare API Token
1. Go to [Cloudflare Dashboard](https://dash.cloudflare.com/)
2. Navigate to **My Profile** β **API Tokens**
3. Click **Create Token**
4. Use the **Edit Cloudflare Workers** template
5. Add **D1** permissions: `D1:Read`
6. Copy the token to your `.env` file
### Get D1 Database IDs
```bash
# 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 tables
- `maxSampleRows` (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:**
```json
{
"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 environment
- `tableName` (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:**
```json
{
"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:**
```json
{
"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:**
```json
{
"name": "suggest_database_optimizations",
"arguments": {
"environment": "production"
}
}
```
---
## π Connect to Claude Desktop
Connect this MCP server to Claude Desktop for AI-assisted database development.
### Configuration
1. **Edit Claude Desktop config** - Go to Settings β Developer β Edit Config
2. **Add MCP server configuration**:
```json
{
"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"
}
}
}
}
```
3. **Restart Claude Desktop**
4. **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](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:
1. **Semantic Over Structural**
```typescript
// β
SEMANTIC: Based on observable schema properties
const needsIndex = table.hasForeignKey() && !table.hasIndexOnForeignKey()
// β STRUCTURAL: Based on technical metrics
const needsIndex = table.rowCount > 10000 && table.queryCount > 100
```
2. **Intent Preservation**
```typescript
// β
Environment semantics preserved through transformations
const schema = await fetchSchema(Environment.PRODUCTION)
// Schema analysis preserves "production" intent - no overrides
```
3. **Observable Anchoring**
```typescript
// β
Based on directly observable properties
const relationships = extractForeignKeys(sqliteMaster)
// β Based on inferred behavior
const relationships = inferFromQueryPatterns(logs)
```
See [SEMANTIC_ANCHORING_GOVERNANCE.md](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
```bash
# Run all tests
npm test
# Watch mode
npm run test:watch
# With UI
npm run test:ui
# Coverage report
npm run test:coverage
```
### 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](src/index.ts) - Composition root with dependency injection
- [src/domain/entities/](src/domain/entities/) - Domain entities with semantic validation
- [src/domain/services/](src/domain/services/) - Pure business logic services
- [src/application/use-cases/](src/application/use-cases/) - Orchestration layer
- [src/infrastructure/adapters/](src/infrastructure/adapters/) - External adapters
- [src/presentation/mcp/](src/presentation/mcp/) - MCP protocol layer
**Reference Documentation**:
- [D1_MCP_REFACTORING_PLAN.md](D1_MCP_REFACTORING_PLAN.md) - Complete refactoring plan
- [SEMANTIC_ANCHORING_GOVERNANCE.md](SEMANTIC_ANCHORING_GOVERNANCE.md) - Governance rules
- [ARCHITECTURE.md](ARCHITECTURE.md) - Architecture details
### Related Projects
- [semantic-context-mcp](https://github.com/semanticintent/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
1. **Read the guidelines**: [CONTRIBUTING.md](CONTRIBUTING.md)
2. **Check refactoring plan**: [D1_MCP_REFACTORING_PLAN.md](D1_MCP_REFACTORING_PLAN.md)
3. **Follow the architecture**: Maintain layer boundaries and semantic anchoring
4. **Add tests**: All changes need comprehensive test coverage
5. **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](CONTRIBUTING.md) - Detailed guidelines
- [Code of Conduct](CODE_OF_CONDUCT.md) - Community standards
- [Architecture Guide](ARCHITECTURE.md) - Design principles
- [Security Policy](SECURITY.md) - Report vulnerabilities
### Community
- π¬ [Discussions](https://github.com/semanticintent/semantic-d1-mcp/discussions) - Ask questions
- π [Issues](https://github.com/semanticintent/semantic-d1-mcp/issues) - Report bugs
- π [Security](SECURITY.md) - Report vulnerabilities privately
---
## π Security
Security is a top priority. Please review our [Security Policy](SECURITY.md) 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
1. **Semantic Over Structural** - Schema analysis based on meaning, not metrics
2. **Intent Preservation** - Environment semantics maintained through transformations
3. **Observable Anchoring** - Decisions based on directly observable schema properties
4. **Immutable Governance** - Protect semantic integrity at runtime
### Related Resources
- [Research Paper](https://github.com/semanticintent) (coming soon)
- [Semantic Anchoring Governance](SEMANTIC_ANCHORING_GOVERNANCE.md)
- [semanticintent.dev](https://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](D1_MCP_REFACTORING_PLAN.md) for detailed roadmap.
---
## π License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
---
## π Acknowledgments
- Built on [Model Context Protocol](https://modelcontextprotocol.io) by Anthropic
- Inspired by [Hexagonal Architecture](https://alistair.cockburn.us/hexagonal-architecture/) (Alistair Cockburn)
- Based on [Domain-Driven Design](https://www.domainlanguage.com/ddd/) principles (Eric Evans)
- Part of the [Semantic Intent](https://github.com/semanticintent) 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.** ποΈ
TDQS
Scored across 4 tools
Each tool has a clearly distinct purpose: schema analysis, relationship extraction, optimization suggestions, and validation. There is no overlap in functionality, making it easy for an agent to select the right tool without confusion.
All tool names follow a consistent verb_noun pattern (e.g., analyze_database_schema, get_table_relationships). The naming is uniform and predictable, enhancing readability and usability.
With 4 tools, the server is well-scoped for database schema analysis. Each tool serves a specific, essential function without redundancy, making the count appropriate for the domain.
The toolset covers key aspects of schema analysis (structure, relationships, optimizations, validation), but lacks tools for executing changes or interacting with data directly. However, the provided tools form a coherent set for analysis purposes.