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
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。