Sever
El MCP Server es un servidor implementado con NestJS que actúa como un servidor MCP (Model Context Protocol). Proporciona recursos y herramientas para interactuar con sistemas externos como MongoDB y Trello, permitiendo a los clientes MCP acceder a datos de problemas conocidos y gestionar tickets en
Installation
npx mcp-severAsk AI about Sever
Powered by Claude · Grounded in docs
I know everything about Sever. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
MCP Server
Descripción
El MCP Server es un servidor implementado con NestJS que actúa como un servidor MCP (Model Context Protocol). Proporciona recursos y herramientas para interactuar con sistemas externos como MongoDB y Trello, permitiendo a los clientes MCP acceder a datos de problemas conocidos y gestionar tickets en Trello.
Arquitectura
TecnologÃas Principales
- NestJS: Framework de Node.js para aplicaciones backend escalables
- MongoDB: Base de datos NoSQL para almacenar problemas conocidos y soluciones
- Mongoose: ODM para MongoDB
- Trello API: Integración con Trello para gestión de tickets
- @rekog/mcp-nest: LibrerÃa para implementar el protocolo MCP en NestJS
Estructura del Proyecto
mcp_server/
├── src/
│ ├── app.module.ts # Módulo principal de la aplicación
│ ├── main.ts # Punto de entrada de la aplicación
│ ├── database/ # Configuración de base de datos
│ │ ├── mongodb/ # Módulo MongoDB
│ │ ├── schemas/ # Esquemas de Mongoose
│ │ └── seed.ts # Script para poblar la base de datos
│ ├── resources/ # Recursos MCP
│ │ ├── known_problems.resource.ts # Recurso de problemas conocidos
│ │ └── trello.resource.ts # Recurso de listas de Trello
│ ├── tools/ # Herramientas MCP
│ │ └── trello.tool.ts # Herramientas para gestión de Trello
│ └── common/config/ # Configuración de la aplicación
Componentes Principales
1. Recursos MCP
Los recursos proporcionan acceso de solo lectura a datos externos:
- Known Problems Resource (
mcp://known-problems): Lista de problemas conocidos que han sido resueltos o cerrados, junto con sus soluciones implementadas o evaluadas. - Trello Lists Resource (
mcp://trello/lists): Lista de listas disponibles en el tablero de Trello configurado. - Trello List Cards Resource (
mcp://trello/list/{listId}/cards): Lista de tarjetas en una lista especÃfica de Trello.
2. Herramientas MCP
Las herramientas permiten realizar acciones en sistemas externos:
- Trello Create Ticket Tool: Crea un nuevo ticket en una lista especÃfica de Trello.
- Trello Move Ticket Tool: Mueve un ticket existente a una lista diferente en Trello.
3. Base de Datos
- Problemas: Almacena información sobre problemas conocidos con campos como tÃtulo, descripción, criticidad, frecuencia, etc.
- Soluciones: Almacena soluciones asociadas a problemas, incluyendo acciones a realizar y nivel de satisfacción.
Configuración
Variables de Entorno Requeridas
PORT=3000
TRELLO_API_KEY=your_trello_api_key
TRELLO_TOKEN=your_trello_token
TRELLO_BOARD_ID=your_trello_board_id
MONGO_USER=your_mongo_user
MONGO_PASSWORD=your_mongo_password
MONGO_HOST=your_mongo_host
MONGO_PORT=27017
MONGO_COLLECTION=your_database_name
MONGO_CONNECTION=mongodb
MONGO_TLS_VALIDATE=0
MONGO_TLS_CERTIFICATE_KEY_FILE=path_to_cert
Configuración de Trello
Para usar las funcionalidades de Trello, necesitas:
- Una cuenta de Trello
- Una API Key y Token de Trello
- Un tablero de Trello con listas configuradas
Configuración de MongoDB
El servidor soporta conexiones MongoDB con o sin TLS. La configuración incluye:
- Conexión directa o a través de cluster
- Autenticación con usuario y contraseña
- Configuración de TLS opcional
Instalación y Ejecución
Prerrequisitos
- Node.js (versión 18 o superior)
- MongoDB (local o remoto)
- Cuenta de Trello con API access
Instalación
cd mcp_server
pnpm install
Configuración
- Copia el archivo
.env.examplea.env - Completa todas las variables de entorno requeridas
Poblar Base de Datos
pnpm run seed
Ejecución
# Desarrollo
pnpm run start:dev
# Producción
pnpm run start:prod
API Endpoints
El servidor expone endpoints MCP en /mcp-server/*. Los clientes MCP pueden conectarse usando el protocolo MCP para acceder a recursos y herramientas.
Recursos Disponibles
GET /mcp-server/mcp- Lista de recursos y herramientas disponiblesGET /mcp-server/resources/{uri}- Acceso a recursos especÃficosPOST /mcp-server/tools/{toolName}- Ejecución de herramientas
Uso con Clientes MCP
Conexión Básica
Los clientes MCP pueden conectarse al servidor usando el transporte HTTP Streamable:
import { Client } from '@modelcontextprotocol/sdk/client';
import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp';
const transport = new StreamableHTTPClientTransport(new URL('http://localhost:3000/mcp-server'));
const client = new Client({
name: 'example-client',
version: '1.0.0'
}, {
capabilities: {}
});
await client.connect(transport);
Acceso a Recursos
// Obtener problemas conocidos
const problems = await client.readResource({
uri: 'mcp://known-problems'
});
// Obtener listas de Trello
const lists = await client.readResource({
uri: 'mcp://trello/lists'
});
Uso de Herramientas
// Crear un ticket en Trello
const result = await client.callTool({
name: 'trello-create-ticket-tool',
arguments: {
listId: 'list_id_here',
name: 'Ticket Title',
description: 'Ticket Description'
}
});
Desarrollo
Scripts Disponibles
pnpm run build # Compilar el proyecto
pnpm run format # Formatear código con Prettier
pnpm run lint # Ejecutar ESLint
pnpm run test # Ejecutar tests unitarios
pnpm run test:e2e # Ejecutar tests end-to-end
pnpm run test:cov # Ejecutar tests con cobertura
Estructura de Datos
Esquema de Problema
interface IProblem {
id: string;
titulo: string;
descripcion: string;
contexto: string;
rolesAfectados: string[];
criticidad: 'Baja' | 'Media' | 'Alta' | 'CrÃtica';
frecuencia: 'Rara' | 'Ocasional' | 'Frecuente' | 'Constante';
categoria: string;
tags: string[];
estado: 'Abierto' | 'En Progreso' | 'Resuelto' | 'Cerrado';
prioridad: 'Baja' | 'Media' | 'Alta';
}
Esquema de Solución
interface ISolution {
id: string;
problemId: string;
descripcion: string;
nivelSatisfaccion: number; // 1-5
acciones: Array<{
type: string;
descripcion: string;
completada: boolean;
}>;
estado: 'Pendiente' | 'En Progreso' | 'Implementada' | 'Evaluada';
}
Contribución
- Fork el proyecto
- Crea una rama para tu feature (
git checkout -b feature/AmazingFeature) - Commit tus cambios (
git commit -m 'Add some AmazingFeature') - Push a la rama (
git push origin feature/AmazingFeature) - Abre un Pull Request
Licencia
Este proyecto está bajo la Licencia MIT.
