mcp-sever

yailPeralta/mcp-sever

3.2

If you are the rightful owner of mcp-sever and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.

The MCP Server is a backend application built with NestJS, designed to facilitate interaction with external systems like MongoDB and Trello through the Model Context Protocol (MCP).

Tools
2
Resources
0
Prompts
0

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:

  1. Una cuenta de Trello
  2. Una API Key y Token de Trello
  3. 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

  1. Copia el archivo .env.example a .env
  2. 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 disponibles
  • GET /mcp-server/resources/{uri} - Acceso a recursos específicos
  • POST /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

  1. Fork el proyecto
  2. Crea una rama para tu feature (git checkout -b feature/AmazingFeature)
  3. Commit tus cambios (git commit -m 'Add some AmazingFeature')
  4. Push a la rama (git push origin feature/AmazingFeature)
  5. Abre un Pull Request

Licencia

Este proyecto está bajo la Licencia MIT.