A modern Svelte/TypeScript web application for interacting with the Lifecycle MCP Server. This UI provides comprehensive management of software requirements, tasks, and architecture decisions through an intuitive web interface.
Before running the Lifecycle Viewer, you need to have the Lifecycle MCP server running:
# Clone and set up the MCP server
git clone https://github.com/heffrey78/lifecycle-mcp.git
cd lifecycle-mcp
# Install with uv (recommended)
uv sync
uv run server.py
# OR install with pip
pip install -e .
lifecycle-mcp
The MCP server should be running on ws://localhost:3000/mcp
(or configure the URL in the client).
Clone this repository
git clone https://github.com/heffrey78/lifecycle-viewer.git
cd lifecycle-viewer
Install dependencies
npm install
Configure MCP Connection (optional)
Edit src/lib/services/mcp-client.ts
to modify the server URL:
constructor(private serverUrl: string = 'ws://localhost:3000/mcp')
Start the MCP bridge server (in a separate terminal)
npm run mcp-bridge
This starts the WebSocket bridge that connects the web UI to the MCP server.
Start the development server (in another terminal)
npm run dev
Open the application Navigate to http://localhost:5173/
The application currently shows mock/dummy data when the MCP server is not connected. This is intentional to allow development and demonstration without requiring a running MCP server.
To see real project data:
Ensure MCP Server is Running
cd /path/to/lifecycle-mcp
uv run server.py # or lifecycle-mcp
Start the MCP Bridge (in the lifecycle-viewer directory)
npm run mcp-bridge
This bridge is required - it converts WebSocket connections from the browser into stdio communication with the MCP server.
Verify Connection
Create Real Data Use the MCP server tools through Claude Code or directly via MCP protocol:
# Add the server to Claude Code
claude mcp add lifecycle lifecycle-mcp -e LIFECYCLE_DB=./lifecycle.db
Interact Through Claude Once connected to Claude, you can use MCP tools to create real data:
create_requirement
- Add project requirementscreate_task
- Add implementation taskscreate_architecture_decision
- Document architecture choiceslifecycle-viewer/
āāā src/
ā āāā lib/
ā ā āāā types/lifecycle.ts # TypeScript definitions
ā ā āāā services/mcp-client.ts # MCP communication
ā āāā routes/
ā ā āāā +layout.svelte # Main layout with navigation
ā ā āāā +page.svelte # Dashboard
ā ā āāā requirements/+page.svelte # Requirements management
ā ā āāā tasks/+page.svelte # Task management
ā āāā app.html # Base HTML template
āāā static/ # Static assets
āāā tailwind.config.js # Styling configuration
src/lib/services/mcp-client.ts
)src/lib/types/lifecycle.ts
)The application uses Tailwind CSS with custom color definitions for lifecycle states:
Edit configuration in:
tailwind.config.js
- Styling and colorssrc/lib/services/mcp-client.ts
- Server connection settingsnpm run dev # Start development server
npm run build # Build for production
npm run preview # Preview production build
npm run test:unit # Run unit tests
npm run lint # Run ESLint
npm run format # Format code with Prettier
uv run server.py
npm run mcp-bridge
npm run dev
npm run build
for productionsrc/lib/types/lifecycle.ts
src/lib/services/mcp-client.ts
src/routes/
query_requirements
- Get requirements listget_requirement_details
- Get single requirementquery_tasks
- Get tasks listget_task_details
- Get single taskget_project_status
- Get dashboard metricscreate_requirement
- Add new requirementscreate_task
- Add new tasksupdate_requirement_status
- Update lifecycle statesnpm run build
Set environment variables for production:
MCP_SERVER_URL
- URL of your MCP serverPUBLIC_APP_NAME
- Application name/titlegit checkout -b feature/new-feature
[Add your license information here]
To get the most out of Lifecycle Viewer:
The current mock data is just a preview - the real power comes from connecting to your actual project lifecycle data!