Universal MCP Server
Um servidor MCP universal com arquitetura modular de plugins.
Documentação
Universal MCP Server
Servidor MCP universal com arquitetura modular de plugins. Permite adicionar facilmente novas ferramentas sem alterar o código principal.
⚙️ Instalação e configuração
1. Instalação de dependências
npm install
2. Configuração das variáveis de ambiente
Crie o arquivo .env na raiz do projeto com base no .env.example:
cp .env.example .env
Preencha as variáveis necessárias:
# 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
🏠 Desenvolvimento local
Para desenvolvimento local, use o Docker Compose com redirecionamento de porta:
# Запуск для разработки (с портом 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
O servidor estará disponível em http://localhost:8080 com endpoint SSE em /sse.
Alternativamente via npm (para desenvolvimento com hot reload):
npm run dev
🚀 Deploy em produção
No servidor, use o Docker Compose padrão:
# На сервере - деплой в продакшн
docker-compose up --build -d
# Остановка
docker-compose down
# Обновление (пересборка)
docker-compose down
docker-compose up --build -d
🚀 Recursos
- Arquitetura modular: adicione novas ferramentas simplesmente criando arquivos na pasta
src/tools/ - Carregamento automático: o sistema detecta e registra automaticamente todas as ferramentas
- TypeScript: tipagem completa para segurança e conveniência no desenvolvimento
- Suporte a Docker: configurações prontas de Docker e Docker Compose
- Ferramentas prontas: 4 ferramentas integradas para diversas tarefas
Obtendo o token do bot do Telegram:
- Encontre o bot @BotFather no Telegram
- Envie o comando
/newbot - Siga as instruções para criar o bot
- Copie o token obtido
Obtendo o Chat ID:
- Inicie o seu bot
- Envie qualquer mensagem para ele
- Acesse o link:
https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getUpdates - Encontre o valor de
chat.idna resposta
Importante:
docker-compose.local.yml- para desenvolvimento local (porta 8080 exposta)docker-compose.yml- para produção (sem redirecionamento de portas, com labels do Coolify)
🔧 Configuração do Claude Desktop
Edite o arquivo de configuração do Claude Desktop:
Windows: %APPDATA%\Claude\claude_desktop_config.json
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Adicione a seguinte configuração:
{
"mcpServers": {
"Universal MCP Server": {
"url": "http://localhost:8080/sse"
}
}
}
Após alterar a configuração, reinicie o Claude Desktop.
🛠️ Criando novas ferramentas
Para adicionar uma nova ferramenta, crie um arquivo na pasta src/tools/ com o seguinte 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: 'Результат работы инструмента',
}
},
}
O sistema detectará e registrará automaticamente a nova ferramenta na próxima inicialização do servidor.
📁 Estrutura do projeto
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 # Эта документация
📚 Ferramentas disponíveis
📱 sendTelegramMessage
Envio de mensagens para o Telegram
// Параметры:
{
text: string // Текст сообщения
}
🌐 httpRequest
Execução de requisições HTTP para 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
Gerenciamento universal de blocos - funcionalidade 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
Criar uma nova tarefa (todo)
// Параметры:
{
title: string, // Название задачи (обязательно)
description?: string, // Описание задачи
priority?: "high" | "medium" | "low", // Приоритет задачи
dueDate?: string, // Срок выполнения (ISO строка)
tags?: string[], // Теги задачи
projectId?: string // ID проекта
}
📖 readTodos
Ler tarefas (todos) - por ID, posição, busca ou listar todas
// Параметры:
{
todoId?: string, // Точный ID задачи (если известен)
position?: number, // Номер задачи в списке (1, 2, 3...)
titleSearch?: string // Поиск по части названия задачи
}
✏️ updateTodo
Atualizar uma tarefa 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
Excluir uma tarefa (todo) - exclusão suave
// Параметры:
{
todoId?: string, // Точный ID задачи (если известен)
position?: number, // Номер задачи в списке (1, 2, 3...)
titleSearch?: string // Поиск по части названия задачи
}
🤖 manageUnits
Gerenciamento universal de agentes (assistentes de IA) - funcionalidade 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 // Поиск по части имени агента
}
🔧 Detalhes técnicos
- ES Modules: sistema moderno de módulos JavaScript
- TypeScript: tipagem completa com compilação para ES2020
- Express.js: servidor HTTP para o protocolo MCP
- Server-Sent Events (SSE): para comunicação MCP
- Zod: validação de esquemas para segurança de tipos
- Carregamento automático: variáveis de ambiente via dotenv
🐳 Docker
O projeto inclui configurações Docker prontas:
Dockerfile- imagem para build da aplicaçãodocker-compose.yml- para deploy em produção (sem redirecionamento de portas)docker-compose.local.yml- para desenvolvimento local (com porta 8080 exposta)
Desenvolvimento local:
docker-compose -f docker-compose.local.yml up --build -d
Deploy em produção:
docker-compose up --build -d
🤝 Contribuindo com o projeto
- Faça um fork do repositório
- Crie uma branch para a nova funcionalidade
- Adicione suas ferramentas em
src/tools/ - Teste as alterações
- Crie um Pull Request
📄 Licença
Licença MIT. Consulte o arquivo LICENSE para detalhes.
Criado com ❤️ para simplificar o trabalho com ferramentas MCP