MCP server for structured feature development through Requirements → Design → Tasks workflow
Project description
spec-server
An MCP (Model Context Protocol) server that provides structured feature development capabilities through a systematic three-phase workflow: Requirements → Design → Implementation Tasks.
Overview
spec-server helps AI assistants and developers transform rough feature ideas into executable implementation plans through a structured approach:
- Requirements Phase: Define user stories and acceptance criteria in EARS format
- Design Phase: Create comprehensive technical design documents
- Tasks Phase: Generate actionable implementation tasks with test-driven development focus
Features
- Systematic Workflow: Enforced progression through Requirements → Design → Tasks phases
- MCP Integration: Works with any MCP-compatible AI assistant
- File References: Support for
#[[file:path]]syntax to include external specifications - Task Management: Hierarchical task tracking with status updates
- Multiple Transports: Support for both stdio and SSE (Server-Sent Events) transport methods
- Validation: Built-in validation for document formats and workflow transitions
Installation
From PyPI (Coming Soon)
pip install spec-server
From Source
git clone https://github.com/teknologika/spec-server.git
cd spec-server
pip install -e .
Usage
As MCP Server
Add to your MCP client configuration:
{
"mcpServers": {
"spec-server": {
"command": "spec-server",
"args": ["stdio"],
"disabled": false
}
}
}
Command Line
# Run with stdio transport (default)
spec-server
# Run with SSE transport on port 8000
spec-server sse 8000
# Run with SSE transport on custom port
spec-server sse 3000
MCP Tools
The server exposes the following MCP tools:
create_spec
Create a new feature specification with initial requirements document.
Parameters:
feature_name(string): Kebab-case feature identifierinitial_idea(string): User's rough feature description
update_spec_document
Update requirements, design, or tasks documents with workflow validation.
Parameters:
feature_name(string): Target spec identifierdocument_type(enum): "requirements" | "design" | "tasks"content(string): Updated document contentphase_approval(boolean): Whether user approves current phase
list_specs
List all existing specifications with their current status and progress.
read_spec_document
Retrieve content of spec documents with file reference resolution.
Parameters:
feature_name(string): Target spec identifierdocument_type(enum): "requirements" | "design" | "tasks"
execute_task
Execute a specific implementation task from the tasks document.
Parameters:
feature_name(string): Target spec identifiertask_identifier(string): Task number/identifier
delete_spec
Remove a specification entirely including all documents.
Parameters:
feature_name(string): Target spec identifier
Workflow
1. Requirements Phase
- Create user stories in "As a [role], I want [feature], so that [benefit]" format
- Define acceptance criteria using EARS (Easy Approach to Requirements Syntax)
- Must receive explicit approval before advancing to design phase
2. Design Phase
- Generate comprehensive technical design based on approved requirements
- Include sections: Overview, Architecture, Components, Data Models, Error Handling, Testing
- Conduct research and incorporate findings into design decisions
- Must receive explicit approval before advancing to tasks phase
3. Tasks Phase
- Create actionable implementation tasks focused on code development
- Format as numbered checkboxes with hierarchical structure
- Reference specific requirements and ensure test-driven development
- Tasks ready for execution by coding agents
File Structure
specs/
├── feature-name-1/
│ ├── requirements.md
│ ├── design.md
│ └── tasks.md
├── feature-name-2/
│ ├── requirements.md
│ └── design.md
└── .spec-metadata.json
File References
Spec documents support file references using the syntax #[[file:relative/path/to/file.md]]. These references are automatically resolved and their content is included when documents are read.
Example:
# API Design
The API follows the OpenAPI specification defined in:
#[[file:api/openapi.yaml]]
Development
Setup Development Environment
git clone https://github.com/teknologika/spec-server.git
cd spec-server
pip install -e ".[dev]"
Run Tests
pytest
Code Quality
# Format code
black src tests
# Sort imports
isort src tests
# Lint code
flake8 src tests
# Type checking
mypy src
Configuration
Environment Variables
SPECS_BASE_PATH: Base directory for specs (default: "specs")SPECS_SERVER_PORT: Default SSE server port (default: 8000)SPECS_LOG_LEVEL: Logging level (default: "INFO")
Configuration File
Optional specs/config.json:
{
"document_templates": {
"requirements": {...},
"design": {...},
"tasks": {...}
},
"validation_rules": {...},
"file_reference_patterns": [...]
}
Contributing
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
License
This project is licensed under the MIT License - see the LICENSE file for details.
Support
- GitHub Issues: https://github.com/teknologika/spec-server/issues
- Documentation: [Coming Soon]
Roadmap
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file spec_server-0.1.0.tar.gz.
File metadata
- Download URL: spec_server-0.1.0.tar.gz
- Upload date:
- Size: 9.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1fe4f6ad12244c0919095f4890141162904f7f9c0a8698d06609004f55294b28
|
|
| MD5 |
ca54b67448d88ae84b83a5f66747c149
|
|
| BLAKE2b-256 |
38ab923b67a2dc8c49847d702cce99ba99a871cd276fe4c34bb5f8e91f673d24
|
File details
Details for the file spec_server-0.1.0-py3-none-any.whl.
File metadata
- Download URL: spec_server-0.1.0-py3-none-any.whl
- Upload date:
- Size: 10.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6265d810bd875f4dcc588133f98689e458aab51060de6fb98cf7f0c52959a4b2
|
|
| MD5 |
28db11c23130f3bce792cdccee8c812b
|
|
| BLAKE2b-256 |
2e1b2f6c75115bfad26da1c6543c3d47054c9d720ea2285e70c896126a5a9703
|