SpecDriver.ai
Inject Specs into Context your AI code editor using MCP

Upload once.
Transform for every AI tool.

Upload any spec. SpecDriver.ai converts it to _sd.spec, syncs to GitHub, and serves live transforms for Claude, Kiro, and Cursor via a remote MCP server at mcp.specdriver.ai.

Live Demo

Your spec, everywhere — automatically

A social meetup app spec — from raw document to AI-ready context.

📄
Upload
Convert
Sync
🔀
Transform
🧠
MCP Serve
📤

Uploading specification...

PRD, RFC, OpenAPI, or any spec format

📄 meetlocal-prd.md 12.4 KB
Social meetup app — Events, RSVP, chat, AWS
meetlocal-prd.md
# MeetLocal — PRD ## Overview Social meetup app connecting people with local events and interest-based groups. ## Tech Requirements - React Native mobile app - AWS serverless backend - Social login (Google, Apple) - Real-time for 10K users - Push notifications
SD.SPEC
_sd.spec/infra.yml
# generated by SpecDriver.ai
provider: aws
compute:
type: serverless
runtime: nodejs-20
functions:
- event-discovery
- rsvp-handler
data:
primary: dynamodb
cache: elasticache-redis
realtime: appsync
auth: cognito
notifications: sns
📁
_sd.spec/
GitHub
user/meetlocal / _sd.spec
✓ feat: initial spec conversion — 7 files added
Versioned, branched, diffable. Every change tracked.
CLAUDE.md
.kiro requirements.md
CLAUDE.md
# MeetLocal Social meetup app. React Native frontend, AWS serverless backend. ## Tech Stack - Mobile: React Native (Expo), TS - Backend: Lambda Node.js 20 - Data: DynamoDB, Aurora PG, Redis - Auth: Cognito (Google, Apple) - Realtime: AppSync subscriptions - IaC: AWS CDK v2 ## Commands cd mobile && npx expo start cd services && npm test cd infra && npx cdk deploy --all ## Conventions - Handlers: [entity]-[action].handler.ts - Responses: { data, error, metadata } - DynamoDB single-table design - Zod schemas colocated w/ handlers - No any types. Strict TypeScript. ## Architecture - Redis GEOSEARCH for proximity - AppSync subs for live attendees - SQS + Lambda for push via SNS
.kiro/specs/event-discovery/requirements.md
# Requirements: Event Discovery ## Req 1: Browse nearby events User Story: As a user, I want to browse events near my location, so I can find activities nearby. Acceptance Criteria (EARS): 1. WHEN user opens Discover tab THEN system SHALL display events within 25km sorted by proximity 2. WHEN location unavailable THEN system SHALL prompt manual entry 3. WHILE events load the system SHALL display skeleton cards ## Req 2: RSVP to an event User Story: As a user, I want to RSVP so organizers know I'll attend. Acceptance Criteria (EARS): 1. WHEN user taps "Join" THEN system SHALL record RSVP and update attendee count in real time 2. IF event at capacity THEN system SHALL add to waitlist 3. WHEN user RSVPs THEN system SHALL schedule push 24h before
SpecDriver.ai
REMOTE MCP ENDPOINTS
🟣
Claude Code
mcp.specdriver.ai
/claude/user
→ CLAUDE.md
🟡
Kiro
mcp.specdriver.ai
/kiro/user
→ .kiro/ specs
🔵
Cursor
mcp.specdriver.ai
/cursor/user
→ .cursor/ rules
🟢
Windsurf
mcp.specdriver.ai
/windsurf/user
→ windsurf rules
⚡ Tools (each endpoint)
get_spec — full or scoped
get_context — native format
refresh — pull latest from GH
📄 Resources (each endpoint)
sd://spec/{domain}
sd://context — native output
sd://manifest — spec metadata
Spec Format

The _sd.spec structure

One universal spec folder synced to GitHub. Organized by domain. Transforms are served live via MCP — never stored in your repo.

Synced to GitHub
📁 _sd.spec/
├── 📄 infra.yml
├── 📄 api.yml
├── 📄 ui.yml
├── 📄 storage.yml
├── 📄 auth.yml
├── 📄 events.yml
└── 📄 sd.manifest.json
MCP Endpoints (per AI tool)
// claude_desktop_config.json
{
"mcpServers": {
"specdriver": {
"type": "streamableHttp",
"url": "https://mcp.specdriver.ai
/claude/username"

}
}
}

// Each tool gets its own endpoint:
Claude /claude/user
Kiro /kiro/user
Cursor /cursor/user
Windsurf /windsurf/user