mcp-project-manager
by juan9222
README.md
# Project Manager MCP Server — Lab 01
Servidor MCP en TypeScript que expone tres tools de gestión de tareas con persistencia en SQLite. Soporta transporte **stdio** (local) y **SSE** (deploy remoto en Railway).
## Tools
| Tool | Parámetros | Descripción |
|------|-----------|-------------|
| `create_task` | `title` (req), `description` (opt), `priority` (req: low/medium/high/critical) | Crea una tarea nueva (status inicial `todo`) |
| `list_tasks` | `status` (opt), `priority` (opt) | Lista tareas, más recientes primero, con filtros opcionales |
| `update_task` | `id` (req), `status` (req: todo/in_progress/done) | Actualiza el status de una tarea por id |
## Estructura
```
src/
db.ts # capa SQLite (better-sqlite3): initDb, createTask, listTasks, updateTask
server.ts # createServer(): McpServer con las 3 tools (compartido por ambos transportes)
index.ts # entrypoint stdio (uso local con Claude Code)
sse.ts # entrypoint SSE con Express (deploy remoto)
```
## Uso local (stdio)
```bash
npm install
npm run dev # arranca el servidor stdio (queda esperando input — correcto)
```
`.mcp.json` para Claude Code (variante local):
```json
{
"mcpServers": {
"project-manager": {
"command": "npx",
"args": ["tsx", "src/index.ts"],
"cwd": "/Users/pablo/Desktop/mcp-project-manager"
}
}
}
```
## Uso remoto (SSE en Railway)
```bash
npm start # arranca el servidor SSE en 0.0.0.0:$PORT (default 8000)
```
- `GET /` — health check
- `GET /sse` — stream SSE (conexión MCP)
- `POST /messages?sessionId=...` — mensajes entrantes
`.mcp.json` para Claude Code (variante remota):
```json
{
"mcpServers": {
"project-manager": {
"type": "sse",
"url": "https://mcp-project-manager-production-3dd4.up.railway.app/sse"
}
}
}
```
Deploy: `railway init` → `railway up` → variable `DB_PATH=/app/tasks.db` → `railway domain`.
> Nota: sin un volumen de Railway, la base SQLite es efímera (se pierde en cada redeploy). Para persistencia real, añade un volumen y apunta `DB_PATH` al mount.
## Probar en Claude Code
Reinicia Claude Code en este directorio, aprueba el servidor y prueba:
- "Create a task called 'Set up CI/CD pipeline' with high priority"
- "List all tasks"
- "Update task 1 to in_progress"
- "Show me all high priority tasks that are still todo"
Inspeccionar la BD local: `sqlite3 tasks.db "SELECT * FROM tasks;"`
## Notas de diseño
- Los logs van a **stderr** — stdout transporta el protocolo MCP en modo stdio.
- SSE es el transporte remoto legacy que pide el lab; la modernización a Streamable HTTP queda como extensión.
This server cannot be deployed
Maintenance
ActivitySlowing
ResponsivenessNo issues