@boundless-oss/atlas
Version:
Atlas - MCP Server for comprehensive startup project management
100 lines (75 loc) • 3.62 kB
Markdown
# Documentation Module Migration to 12-Factor MCP
## Overview
The documentation module has been migrated from file-based storage to SQLite using the 12-Factor MCP pattern. This migration provides better data consistency, querying capabilities, and follows the standardized architecture patterns.
## Changes Made
### 1. New Files Created
- **`tools.ts`** - Implements all documentation tools using the standardized tool framework
- `generate_readme` - Generate README.md files
- `generate_claude_config` - Generate CLAUDE.md configuration
- `create_documentation` - Create various documentation types
- `list_documents` - List and filter documents
- `update_document` - Update existing documents
- `search_documents` - Search documents by content
- **`index-new.ts`** - New module entry point that exports the tool registration
- **`legacy-wrapper.ts`** - Provides backward compatibility for existing tools
- Maps old tool names to new implementations
- Transforms legacy arguments to new format
- Formats output to match legacy expectations
### 2. Database Schema
Documents are now stored in the `documents` table with the following structure:
```sql
CREATE TABLE IF NOT EXISTS documents (
id TEXT PRIMARY KEY,
project_id TEXT NOT NULL,
title TEXT NOT NULL,
content TEXT NOT NULL,
type TEXT NOT NULL DEFAULT 'markdown',
path TEXT,
tags TEXT DEFAULT '[]',
status TEXT NOT NULL DEFAULT 'draft',
author TEXT,
version INTEGER DEFAULT 1,
created_at INTEGER NOT NULL DEFAULT (unixepoch()),
updated_at INTEGER NOT NULL DEFAULT (unixepoch()),
FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE
);
```
### 3. Server Configuration
The server.ts file has been updated to:
1. Try loading the new SQLite-based module first
2. Fall back to the legacy file-based module if the new one fails
3. Register the legacy wrapper for backward compatibility
### 4. Migration Support
The existing migration.ts already includes support for migrating documentation data from JSON files to SQLite through the `migrateDocumentationData` method.
## Benefits
1. **Structured Data** - Documents are stored with proper metadata and relationships
2. **Better Querying** - SQL-based searching and filtering capabilities
3. **Version Control** - Built-in versioning for document updates
4. **Multi-Project Support** - Documents are properly scoped by project ID
5. **Stateless Operation** - Tools follow the 12-Factor principle of stateless execution
## Backward Compatibility
The legacy wrapper ensures that existing integrations continue to work:
- Old tool names are mapped to new implementations
- Arguments are transformed to match new schemas
- Output is formatted to match legacy expectations
## Testing
A new test file `documentation-tools.test.ts` has been created to verify:
- All tools are properly registered
- Schema validation is in place
- Read-only tools are marked correctly
## Usage
The module can be used in two ways:
1. **New Pattern** (Recommended):
```typescript
const { setupDocumentation } = await import('./modules/documentation/index-new.js');
const registration = await setupDocumentation();
```
2. **Legacy Pattern** (For compatibility):
```typescript
const { setupDocumentationTools } = await import('./modules/documentation/index.js');
const module = await setupDocumentationTools(server, configManager);
```
## Next Steps
1. Monitor for any issues during the transition period
2. Eventually deprecate and remove the legacy file-based implementation
3. Update all consumers to use the new tool names and patterns