MCP-ALBERTO
A server that enables AI to access external services through the Model Context Protocol, specifically integrating with an authentication system to obtain login tickets.
Tools
get_ticket
Obtiene un ticket de autenticación desde el servicio de login
README
MCP-ALBERTO: Servidor de Herramientas Fundamentales para IA
Este proyecto implementa un servidor MCP (Model Context Protocol) diseñado para extender las capacidades de un asistente de IA. Proporciona un conjunto de herramientas fundamentales y atómicas que, si bien pueden tener una utilidad limitada de forma aislada, están diseñadas para ser combinadas y orquestadas por un modelo de IA para ejecutar flujos de trabajo complejos e interactuar con servicios externos específicos (actualmente, un sistema denominado "ALBERTO" relacionado con TotalCheck).
El objetivo no es ofrecer herramientas complejas pre-empaquetadas, sino componentes básicos (primitivas) que la IA puede utilizar dinámicamente para resolver tareas como obtener credenciales, autenticarse y potencialmente interactuar con otros endpoints del servicio subyacente.
Configuración de Ejecución (Ejemplo para integración)
La siguiente configuración (ejemplo) muestra cómo podría integrarse este MCP con una herramienta que lo utilice:
"mcp-alberto": {
"command": "npx",
"args": [
"-y",
"tsx",
"C:\\Users\\alex\\Desktop\\Trabajo\\MCP-ALBERTO\\main.ts" // Asegúrate de que esta ruta sea correcta en tu entorno
]
}
Estructura del Proyecto
main.ts: Punto de entrada de la aplicación. Inicializa el servidor MCP, configura el transporte (actualmenteStdioServerTransport) y registra las herramientas disponibles.userservice/:userservice-api-rest.ts: Contiene la lógica para interactuar con la API REST del servicio de usuarios (ej. obtener ticket de autenticación).userservice-tool.ts: Define y registra las herramientas MCP relacionadas con el servicio de usuarios (ej.get_ticket).
README.md: Este archivo..gitignore: Especifica los archivos y directorios ignorados por Git.package.json/package-lock.json: Gestión de dependencias del proyecto Node.js.tsconfig.json: Configuración del compilador TypeScript.
Herramientas MCP Disponibles
Este servidor expone las siguientes herramientas. Es crucial entender que estas herramientas son bloques de construcción de bajo nivel. Su verdadero potencial se desbloquea cuando una IA las utiliza en secuencia o combinación para lograr un objetivo mayor.
-
get_node_info- Descripción: Obtiene información detallada y completa de un nodo específico del sistema.
- Implementación:
nodeservice/nodeservice-tool.ts - Parámetros:
unique_id(string, requerido),alf_ticket(string). - Uso: Ideal cuando se conoce el
unique_idexacto del nodo y se necesitan todos sus detalles.
-
search_by_type- Descripción: Realiza búsquedas flexibles por Tenant y Tipo en ElasticSearch, permitiendo encontrar nodos basados en diversos criterios.
- Implementación:
searchservice/by_type/tool.ts - Endpoint API:
/searchservice/tenant/{tenant}/type/{type}/... - Parámetros:
tenant_name(string, requerido): El tenant donde buscar.type_name(string, requerido): El índice/tipo específico a consultar (ej.expediente_inscripcion_mt).query_body(string, requerido): Query ElasticSearch en formato JSON string.alf_ticket(string): Ticket de autenticación.from_index(number, opcional): Paginación.page_size(number, opcional): Paginación.sort(string, opcional): Ordenación.
- Uso: Para búsquedas dirigidas a un índice específico (expedientes, usuarios, etc.).
-
search_workflow- Descripción: Realiza búsquedas flexibles en el alias
taskmanagerde Workflow en ElasticSearch. - Implementación:
searchservice/workflow/tool.ts - Endpoint API:
/searchservice/workflow/... - Parámetros:
query_body(string, requerido): Query ElasticSearch en formato JSON string.alf_ticket(string): Ticket de autenticación.from_index(number, opcional): Paginación.page_size(number, opcional): Paginación.
- Uso: Para encontrar tareas o información de workflow, útil como paso intermedio para descubrir
unique_idotype_namede un caso si solo se tienen datos parciales (patente, operación).
- Descripción: Realiza búsquedas flexibles en el alias
-
get_ticket- Descripción: Obtiene un ticket de autenticación desde el servicio de login externo.
- Implementación:
userservice/userservice-tool.ts - Parámetros:
usuario(string): Nombre de usuario para la autenticación.password(string): Contraseña del usuario.
- Retorna: El ticket de autenticación como texto.
-
get_config_credentials- Descripción: Obtiene una lista predefinida de credenciales de configuración (usuario, clave, descripción).
- Implementación:
configuraciones/configuraciones-tool.ts - Parámetros: Ninguno.
- Retorna: Un array de objetos JSON, cada uno con
username,claveydescription. - Nota: Provee a la IA de las identidades disponibles para interactuar con el sistema.
Flujos de Trabajo Comunes
- Obtener Ticket con Credenciales de Configuración:
- Llamar a
get_config_credentialspara obtener el usuario y la contraseña preconfigurados. - Extraer el
usuarioypassworddel resultado JSON. - Llamar a
get_ticketpasando elusuarioypasswordobtenidos en el paso anterior.
- Llamar a
Orquestación por IA (Ejemplo Conceptual)
Un asistente de IA podría recibir una solicitud como "Obtén un ticket para el usuario administrador". La IA, utilizando las herramientas disponibles, ejecutaría los siguientes pasos:
- Llamar a
get_config_credentials: Para obtener la lista de usuarios y sus descripciones. - Identificar Usuario: Procesar la respuesta para encontrar el
usernamecorrespondiente a la descripción "Usuario de Administrador". - Llamar a
get_ticket: Utilizar elusernameidentificado y suclave(implícita o extraída) para solicitar el ticket de autenticación. - Presentar Resultado: Devolver el ticket obtenido al usuario.
Este ejemplo ilustra cómo herramientas simples se combinan bajo la dirección de la IA para satisfacer una necesidad compleja.
Interacción entre Servicios y Elasticsearch
Es fundamental entender cómo search_by_type, search_workflow y get_node_info interactúan y cómo se relacionan con la estructura de datos en Elasticsearch:
- Índices Primarios: Cada tipo principal de entidad (ej.
expediente_inscripcion_mt,expediente_operacion_leasing,user,tenant) reside en su propio índice ElasticSearch.search_by_typepuede consultar estos índices directamente especificando eltype_nameapropiado. - Índices de Workflow (
taskmanager_*): Cuando un nodo entra en un flujo de trabajo, se generan entradas en índices específicos del workflow (ej.taskmanager_expediente_inscripcion_mt). - Alias
taskmanager: Existe un alias llamadotaskmanagerque agrupa todos los índices de workflow. Usarsearch_workflowosearch_by_typepermite buscar en todas las tareas activas. - Flujo Típico:
- Si se conoce el tipo primario, la IA usará
search_by_typedirectamente. - Si se busca información general o se desconoce el tipo exacto, la IA podría usar
search_workflow(consultando el aliastaskmanager) como paso de descubrimiento. - El resultado de
search_workflowosearch_by_typepuede contener la información necesaria o elunique_iddel nodo principal. - Si se obtiene un
unique_idy se necesitan todos los detalles, la IA puede usarget_node_info.
- Si se conoce el tipo primario, la IA usará
Guía para la IA: Condiciones Mínimas de Búsqueda
Para asegurar resultados relevantes y eficientes, al construir el query_body para search_by_type o search_workflow, la IA debe aplicar las siguientes condiciones mínimas por defecto, a menos que la solicitud del usuario indique explícitamente lo contrario:
- Al consultar Índices Primarios (ej.
expediente_*,user,tenant):- Excluir registros borrados. Incluir en la query:
(Combinar con otras cláusulas{ "query": { "bool": { "must_not": [{ "term": { "deleted": true } }] } } }must,filtersegún sea necesario dentro delbool).
- Excluir registros borrados. Incluir en la query:
- Al consultar el Alias
taskmanager:- Incluir solo tareas activas y excluir registros borrados.
- Incluir en la query:
(Ajustar el campo{ "query": { "bool": { "must": [{ "term": { "status": "active" } }], "must_not": [{ "term": { "deleted": true } }] } } }statusy su valoractivesi los nombres reales difieren; combinar con otras cláusulasmust,filter).
Detalles Técnicos Clave
1- Configuración adicional de package.json
- "type": "module": Habilita el uso de módulos ES6 (import/export).
2- Paquetes importantes (dependencies)
- @modelcontextprotocol/sdk: SDK para crear el servidor MCP.
- zod: Para validación de esquemas (usado en la definición de herramientas).
- axios: Cliente HTTP para realizar llamadas a la API REST.
- tsx: Para ejecutar directamente archivos TypeScript.
3- Archivos principales del MCP
- main.ts: Orquestador principal.
- userservice/userservice-api-rest.ts: Lógica de llamadas a la API.
- userservice/userservice-tool.ts: Definición de herramientas MCP.
Comandos para Desarrollo Local
- Instalar dependencias:
npm install - Ejecutar el servidor MCP:
El servidor se iniciará y esperará comunicación a través de stdio.npx tsx main.ts
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.
E2B
Using MCP to run code via e2b.
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Neon Database
MCP server for interacting with Neon Management API and databases