Universal MCP Server
Un servidor MCP universal con una arquitectura de plugins modular.
Documentación
Universal MCP Server
Servidor MCP universal con arquitectura modular de plugins. Permite añadir fácilmente nuevas herramientas sin modificar el código principal.
⚙️ Instalación y configuración
1. Instalación de dependencias
npm install
2. Configuración de variables de entorno
Cree el archivo .env en la raíz del proyecto basado en .env.example:
cp .env.example .env
Complete las variables necesarias:
# Telegram Bot Configuration
TELEGRAM_BOT_TOKEN=your_bot_token_here
TELEGRAM_CHAT_ID=your_chat_id_here
# Server Configuration
PORT=8080
# Database Configuration
DATABASE_URL=postgresql://username:password@localhost:5432/timelix
# Example for local development:
# DATABASE_URL=postgresql://postgres:password@localhost:5432/timelix
# Example for production with SSL:
# DATABASE_URL=postgresql://username:password@host:5432/database?sslmode=require
🏠 Desarrollo local
Para el desarrollo local, use Docker Compose con reenvío de puertos:
# Запуск для разработки (с портом 8080 наружу)
docker-compose -f docker-compose.local.yml up --build
# Запуск в фоне
docker-compose -f docker-compose.local.yml up --build -d
# Остановка
docker-compose -f docker-compose.local.yml down
El servidor estará disponible en http://localhost:8080 con endpoint SSE en /sse.
Alternativamente mediante npm (para desarrollo con recarga en caliente):
npm run dev
🚀 Despliegue en producción
En el servidor, use Docker Compose normal:
# На сервере - деплой в продакшн
docker-compose up --build -d
# Остановка
docker-compose down
# Обновление (пересборка)
docker-compose down
docker-compose up --build -d
🚀 Características
- Arquitectura modular: añada nuevas herramientas simplemente creando archivos en la carpeta
src/tools/ - Carga automática: el sistema detecta y registra automáticamente todas las herramientas
- TypeScript: tipado completo para seguridad y comodidad de desarrollo
- Soporte Docker: configuraciones listas de Docker y Docker Compose
- Herramientas listas: 4 herramientas integradas para diversas tareas
Obtención del token del bot de Telegram:
- Busque el bot @BotFather en Telegram
- Envíe el comando
/newbot - Siga las instrucciones para crear el bot
- Copie el token obtenido
Obtención del Chat ID:
- Inicie su bot
- Envíele cualquier mensaje
- Vaya al enlace:
https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getUpdates - Encuentre el valor de
chat.iden la respuesta
Importante:
docker-compose.local.yml- para desarrollo local (puerto 8080 hacia afuera)docker-compose.yml- para producción (sin reenvío de puertos, con etiquetas de Coolify)
🔧 Configuración de Claude Desktop
Edite el archivo de configuración de Claude Desktop:
Windows: %APPDATA%\Claude\claude_desktop_config.json
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Añada la siguiente configuración:
{
"mcpServers": {
"Universal MCP Server": {
"url": "http://localhost:8080/sse"
}
}
}
Después de cambiar la configuración, reinicie Claude Desktop.
🛠️ Creación de nuevas herramientas
Para añadir una nueva herramienta, cree un archivo en la carpeta src/tools/ con el siguiente formato:
import { z } from 'zod'
import type { ToolDefinition } from '../types/tool.js'
export const toolDefinition: ToolDefinition = {
name: 'myNewTool',
description: 'Описание нового инструмента',
inputSchema: z.object({
parameter1: z.string().describe('Описание параметра'),
parameter2: z.number().optional().describe('Опциональный параметр'),
}),
handler: async (args) => {
// Логика инструмента
return {
success: true,
result: 'Результат работы инструмента',
}
},
}
El sistema detectará y registrará automáticamente la nueva herramienta en el próximo inicio del servidor.
📁 Estructura del proyecto
Universal-MCP-Server/
├── src/
│ ├── tools/ # 🔧 Папка с инструментами
│ │ ├── README.md # Документация для разработчиков
│ │ ├── messages.ts # Telegram сообщения
│ │ ├── http-requests.ts # HTTP запросы
│ │ ├── file-operations.ts # Файловые операции
│ │ └── database-tool.ts # SQL запросы
│ ├── types/
│ │ └── tool.ts # TypeScript интерфейсы
│ ├── utils/
│ │ └── tool-loader.ts # Автозагрузчик инструментов
│ └── main.ts # Главный файл сервера
├── dist/ # Скомпилированные файлы
├── docker-compose.yml # Docker Compose для продакшена
├── docker-compose.local.yml # Docker Compose для локальной разработки
├── Dockerfile # Docker образ
├── .env # Переменные окружения
├── .env.example # Пример переменных окружения
└── README.md # Эта документация
📚 Herramientas disponibles
📱 sendTelegramMessage
Envío de mensajes a Telegram
// Параметры:
{
text: string // Текст сообщения
}
🌐 httpRequest
Realización de solicitudes HTTP a APIs externas
// Параметры:
{
url: string, // URL для запроса
method?: "GET" | "POST" | "PUT" | "DELETE", // HTTP метод (по умолчанию GET)
headers?: object, // HTTP заголовки
body?: string // Тело запроса (для POST/PUT)
}
🧮 calculator
Cálculos matemáticos
// Параметры:
{
expression: string // Математическое выражение
}
🗂️ manageBlocks
Gestión universal de bloques - funcionalidad CRUD completa
// Параметры:
{
operation: "list" | "create" | "update" | "delete" | "get", // Тип операции
userId: string, // ID пользователя
blockId?: string, // ID блока (для get, update, delete)
parentId?: string, // ID родительского блока
type?: "text" | "todo" | "media" | "link" | "container" | "unit_ref" | "calendar" | "database", // Тип блока
title?: string, // Заголовок блока
content?: object, // Содержимое блока (JSON)
style?: object, // Стили блока (JSON)
position?: object, // Позиция блока (JSON)
order?: number, // Порядок блока
archived?: boolean, // Архивирован ли блок
tags?: any[] // Теги блока
}
✅ createTodo
Crear una nueva tarea (todo)
// Параметры:
{
title: string, // Название задачи (обязательно)
description?: string, // Описание задачи
priority?: "high" | "medium" | "low", // Приоритет задачи
dueDate?: string, // Срок выполнения (ISO строка)
tags?: string[], // Теги задачи
projectId?: string // ID проекта
}
📖 readTodos
Leer tareas (todos) - por ID, posición, búsqueda o lista de todas
// Параметры:
{
todoId?: string, // Точный ID задачи (если известен)
position?: number, // Номер задачи в списке (1, 2, 3...)
titleSearch?: string // Поиск по части названия задачи
}
✏️ updateTodo
Actualizar una tarea existente (todo)
// Параметры:
{
// Поиск задачи для обновления (один из параметров):
todoId?: string, // Точный ID задачи
position?: number, // Номер задачи в списке
titleSearch?: string, // Поиск по части названия
// Поля для обновления:
title?: string, // Новое название задачи
description?: string, // Новое описание задачи
completed?: boolean, // Новый статус выполнения
priority?: "high" | "medium" | "low", // Новый приоритет
dueDate?: string, // Новый срок выполнения
tags?: string[], // Новые теги задачи
projectId?: string // Новый ID проекта
}
🗑️ deleteTodo
Eliminar una tarea (todo) - eliminación suave
// Параметры:
{
todoId?: string, // Точный ID задачи (если известен)
position?: number, // Номер задачи в списке (1, 2, 3...)
titleSearch?: string // Поиск по части названия задачи
}
🤖 manageUnits
Gestión universal de agentes (asistentes de IA) - funcionalidad CRUD completa
// Параметры:
{
operation: "list" | "create" | "update" | "delete" | "get", // Тип операции
userId: string, // ID пользователя
unitId?: string, // ID агента (для get, update, delete)
name?: string, // Имя агента
description?: string, // Описание агента
avatar?: string, // Аватар агента
model?: string, // Модель ИИ (например, gpt-4, claude-3)
systemPrompt?: string, // Системный промпт агента
tools?: any[], // Инструменты агента
isDefault?: boolean, // Агент по умолчанию
avatarUrl?: string, // URL аватара агента
unitType?: "assistant" | "human" | "timelix" | "system", // Тип агента
nameSearch?: string // Поиск по части имени агента
}
🔧 Características técnicas
- ES Modules: sistema modular moderno de JavaScript
- TypeScript: tipado completo con compilación a ES2020
- Express.js: servidor HTTP para el protocolo MCP
- Server-Sent Events (SSE): para la comunicación MCP
- Zod: validación de esquemas para seguridad de tipos
- Carga automática: variables de entorno mediante dotenv
🐳 Docker
El proyecto incluye configuraciones Docker listas:
Dockerfile- imagen para compilar la aplicacióndocker-compose.yml- para despliegue en producción (sin reenvío de puertos)docker-compose.local.yml- para desarrollo local (con puerto 8080 hacia afuera)
Desarrollo local:
docker-compose -f docker-compose.local.yml up --build -d
Despliegue en producción:
docker-compose up --build -d
🤝 Contribución al proyecto
- Haga un fork del repositorio
- Cree una rama para la nueva funcionalidad
- Añada sus herramientas en
src/tools/ - Pruebe los cambios
- Cree un Pull Request
📄 Licencia
Licencia MIT. Consulte el archivo LICENSE para más detalles.
Creado con ❤️ para simplificar el trabajo con herramientas MCP