Language Server Protocol implementation for MAID methodology validation
Project description
MAID LSP
Language Server Protocol implementation for MAID (Manifest-driven AI Development) methodology validation.
Status: v0.1.2 - Core implementation complete. All LSP capabilities functional.
Overview
MAID LSP provides real-time validation of MAID manifests in code editors and IDEs, including:
- VS Code (via extension)
- JetBrains IDEs (via plugin)
- Claude Code (native LSP support)
- Any LSP-compatible editor
Features
- Real-time Diagnostics: Instant validation feedback as you edit manifests
- Code Actions: Quick fixes for common validation errors (add missing fields, create referenced files)
- Hover Information: Detailed artifact information on hover (functions, classes, attributes)
- Push Diagnostics: Server pushes validation results on document changes with 100ms debouncing
Installation
Prerequisites
- Python 3.10+
- maid-runner >= 0.8.0
- uv (package manager)
From Source
# Clone the repository
git clone https://github.com/mamertofabian/maid-lsp.git
cd maid-lsp
# Install dependencies
uv sync --all-extras
# Run the server
uv run maid-lsp --stdio
Usage
Running the Server
# Start in stdio mode (default)
maid-lsp --stdio
# Or via make
make run
# Check version
maid-lsp --version
Editor Integration
The server communicates via stdio and validates files matching *.manifest.json.
VS Code / Cursor: Install the vscode-maid extension from the marketplace.
Architecture
See the docs/ directory for detailed architecture documentation:
- Architecture - System design and components
- Capabilities - LSP features and diagnostic codes
- Integration - maid-runner CLI integration
- Performance - Performance specifications
Three-Layer Design
┌─────────────────────────────────────────────────────────┐
│ Protocol Layer │
│ (maid_lsp/server.py) │
│ pygls + LSP handlers │
└─────────────────────────────────────────────────────────┘
│
┌─────────────────────────────────────────────────────────┐
│ Capabilities Layer │
│ (maid_lsp/capabilities/) │
│ diagnostics.py │ code_actions.py │ hover.py │
└─────────────────────────────────────────────────────────┘
│
┌─────────────────────────────────────────────────────────┐
│ Validation Layer │
│ (maid_lsp/validation/) │
│ runner.py │ parser.py │ models.py │
└─────────────────────────────────────────────────────────┘
Key design decision: The server wraps maid-runner CLI via subprocess rather than importing modules directly. This keeps validation logic separate and uses CLI output as a stable API contract.
Project Structure
maid-lsp/
├── maid_lsp/
│ ├── __init__.py # Package init with version
│ ├── __main__.py # CLI entry point
│ ├── server.py # Main LSP server
│ ├── capabilities/ # LSP capability handlers
│ │ ├── diagnostics.py # Diagnostic publishing
│ │ ├── code_actions.py # Quick fix actions
│ │ └── hover.py # Hover information
│ ├── validation/ # maid-runner integration
│ │ ├── models.py # Data models
│ │ ├── runner.py # CLI wrapper
│ │ └── parser.py # Result to diagnostic conversion
│ └── utils/
│ └── debounce.py # Async debouncer
├── tests/ # Behavioral tests
├── docs/ # Architecture documentation
└── manifests/ # MAID manifests (dogfooding)
Diagnostic Codes
| Code | Severity | Description |
|---|---|---|
MAID-001 |
Error | Schema validation errors |
MAID-002 |
Error | Missing required fields |
MAID-003 |
Error | File reference errors |
MAID-004 |
Error | Artifact validation errors |
MAID-005 |
Error | Behavioral validation errors |
MAID-006 |
Error | Implementation validation errors |
MAID-007 |
Error | Manifest chain errors |
MAID-008 |
Warning | Coherence validation warnings |
Development
Commands
# Install dependencies
uv sync --all-extras
# Run all quality checks (lint + type-check + test)
make all
# Individual commands
make lint # Run ruff linter
make lint-fix # Auto-fix linting issues
make type-check # Run mypy type checker
make test # Run pytest
make test-cov # Run tests with coverage report
make format # Format code with black
make format-check # Check formatting without changes
# Run a single test
uv run pytest tests/test_task_002_debounce.py -v
MAID Methodology
This project uses the MAID methodology for all implementation. Each feature was developed following the MAID workflow with manifests in the manifests/ directory.
| Task | Component | Status |
|---|---|---|
| task-001 | Package initialization | Complete |
| task-002 | Async debouncer | Complete |
| task-003 | Validation models | Complete |
| task-004 | MaidRunner CLI wrapper | Complete |
| task-005 | Validation parser | Complete |
| task-006 | Diagnostics handler | Complete |
| task-007 | Code actions handler | Complete |
| task-008 | Hover handler | Complete |
| task-009 | Main server | Complete |
| task-010 | CLI entry point | Complete |
Related Projects
- maid-runner - MAID CLI validation tool
- vscode-maid - VS Code extension
License
MIT License - see LICENSE for details.
Acknowledgments
- pygls - Python LSP framework
- lsprotocol - LSP type definitions
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 maid_lsp-0.1.7.tar.gz.
File metadata
- Download URL: maid_lsp-0.1.7.tar.gz
- Upload date:
- Size: 52.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3cde60f80070e14690cfaadf79fa5daa7b0c6899c5e4547e96661bb4ad686548
|
|
| MD5 |
da89a59d019cf4838a509cdda1078485
|
|
| BLAKE2b-256 |
e9345787bf710207a099ce5d1b92bb7c20addbfe46c477db17a474d82830eb53
|
Provenance
The following attestation bundles were made for maid_lsp-0.1.7.tar.gz:
Publisher:
publish.yml on mamertofabian/maid-lsp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
maid_lsp-0.1.7.tar.gz -
Subject digest:
3cde60f80070e14690cfaadf79fa5daa7b0c6899c5e4547e96661bb4ad686548 - Sigstore transparency entry: 811990758
- Sigstore integration time:
-
Permalink:
mamertofabian/maid-lsp@295a3ddee27c85028998ed9bfe69db1b5e357e22 -
Branch / Tag:
refs/tags/v0.1.7 - Owner: https://github.com/mamertofabian
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@295a3ddee27c85028998ed9bfe69db1b5e357e22 -
Trigger Event:
push
-
Statement type:
File details
Details for the file maid_lsp-0.1.7-py3-none-any.whl.
File metadata
- Download URL: maid_lsp-0.1.7-py3-none-any.whl
- Upload date:
- Size: 18.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1e5ab2666eb11c082e555324aef01c0f670d6730ac66d6eb878c5a786d89783c
|
|
| MD5 |
56b2867b09239e73b000cdf56eb576db
|
|
| BLAKE2b-256 |
106ce5998dc296e52ef6f4ac404a44af4f23d82e7c3905b739d9a806a2a8ba89
|
Provenance
The following attestation bundles were made for maid_lsp-0.1.7-py3-none-any.whl:
Publisher:
publish.yml on mamertofabian/maid-lsp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
maid_lsp-0.1.7-py3-none-any.whl -
Subject digest:
1e5ab2666eb11c082e555324aef01c0f670d6730ac66d6eb878c5a786d89783c - Sigstore transparency entry: 811990767
- Sigstore integration time:
-
Permalink:
mamertofabian/maid-lsp@295a3ddee27c85028998ed9bfe69db1b5e357e22 -
Branch / Tag:
refs/tags/v0.1.7 - Owner: https://github.com/mamertofabian
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@295a3ddee27c85028998ed9bfe69db1b5e357e22 -
Trigger Event:
push
-
Statement type: