idiradocs-mcp
MCP server that gives Claude access to CyberArk/Idira official docs, enabling keyword search and live page retrieval as clean Markdown with citations, reducing hallucination.
README
idiradocs-mcp
Servidor MCP que le da a Claude acceso a la documentación oficial de CyberArk / Idira (docs.cyberark.com), para que pueda responder preguntas citando contenido real de la doc en lugar de inventar o alucinar información.
Sin bases de datos vectoriales, sin pipelines de embeddings y sin ninguna API de pago: la búsqueda corre sobre un índice local generado por un crawler propio, y la lectura de páginas se hace en vivo contra el sitio real.
Índice
- Por qué existe esto
- Cómo funciona
- Instalación
- Generar el índice de búsqueda
- Conectarlo a Claude
- Herramientas expuestas
- Configuración
- Detalles de implementación
- Limitaciones conocidas
- Scripts disponibles
Por qué existe esto
Preguntarle a un LLM sobre productos específicos de CyberArk (PAM, CPM, PSM, etc.) sin darle acceso a la documentación real tiene un riesgo alto de respuestas plausibles pero incorrectas. Este servidor MCP resuelve eso dándole a Claude dos herramientas concretas: buscar en la doc y leer una página puntual, siempre citando la fuente.
Cómo funciona
┌──────────────────────┐
│ npm run crawl │ (una vez, o para refrescar el índice cuando sea necesario)
└──────────┬───────────┘
│ recorre docs.cyberark.com
▼
┌──────────────────────┐
│ data/docs-index.json │ índice local (una entrada por sección de cada página)
└──────────┬───────────┘
│ MiniSearch
▼
Claude ──▶ search_cyberark_docs ──▶ lista de secciones candidatas (título, URL#anchor, snippet)
│
▼
Claude ──▶ get_cyberark_doc_page ──▶ fetch en vivo + Markdown limpio de esa URL
search_cyberark_docs: busca por palabras clave en el índice local generado por el crawler. Rápido, sin llamadas externas.get_cyberark_doc_page: trae la página real desdedocs.cyberark.comen el momento de la consulta, limpia el HTML de navegación y la devuelve en Markdown con los links resueltos a URLs absolutas. Siempre refleja el contenido actual del sitio, aunque el índice esté desactualizado.
El índice no guarda la página completa como un solo bloque: la divide por encabezado (cada <h1>-<h6> con id, que en el sitio coincide con el anchor de navegación) y guarda cada sección por separado. Esto hace que un resultado de búsqueda apunte directo a .../pagina.htm#SeccionEspecifica en lugar de a la página entera, y que el snippet devuelto sea del fragmento relevante y no de un promedio de toda la página.
El flujo esperado es que el modelo primero busque, elija la página más relevante, y después la lea completa antes de responder.
Instalación
Requiere Node.js 18 o superior.
git clone https://github.com/AlexPerez7/idiradocs-mcp.git
cd idiradocs-mcp
npm install
npm run build
Generar el índice de búsqueda
search_cyberark_docs necesita un índice previo — sin este paso no tiene nada para buscar:
npm run crawl
Por defecto arranca desde la página de inicio de la doc y se detiene a las 150 páginas, para que la primera corrida sea rápida. Para un índice más completo, se puede ajustar el alcance con variables de entorno:
# Ejemplo: indexar 2000 páginas de PAM - Self-Hosted en particular
CRAWL_SEEDS=https://docs.cyberark.com/pam-self-hosted/latest/en/content/resources/_topnav/cc_home.htm CRAWL_MAX_PAGES=2000 npm run crawl
Es necesario volver a ejecutar npm run crawl para refrescar el índice — la documentación cambia con el tiempo y el índice no se actualiza solo.
Conectarlo a Claude
Claude Desktop
Agregar el servidor en claude_desktop_config.json:
En instalaciones desde Microsoft Store, este archivo suele estar en
%LOCALAPPDATA%\Packages\Claude_<id>\LocalCache\Roaming\Claude\claude_desktop_config.jsonen vez del%APPDATA%\Claude\habitual.
{
"mcpServers": {
"idiradocs": {
"command": "node",
"args": ["/ruta/absoluta/a/idiradocs-mcp/dist/index.js"]
}
}
}
Es necesario reiniciar Claude Desktop por completo (no alcanza con minimizar) para que tome el nuevo servidor.
Claude Code
Se puede registrar como servidor MCP de usuario o de proyecto:
claude mcp add idiradocs -- node /ruta/absoluta/a/idiradocs-mcp/dist/index.js
Herramientas expuestas
search_cyberark_docs
Busca en el índice local.
| Parámetro | Tipo | Descripción |
|---|---|---|
query |
string |
Términos de búsqueda, en español o inglés |
count |
number (opcional, default 5) |
Cantidad máxima de resultados (1-10) |
Devuelve título (página — sección), URL (con anchor a la sección específica cuando existe) y un fragmento de texto por cada resultado.
get_cyberark_doc_page
Trae y limpia el contenido de una página puntual.
| Parámetro | Tipo | Descripción |
|---|---|---|
url |
string |
URL completa, debe pertenecer a https://docs.cyberark.com/ |
Devuelve el contenido en Markdown, con título y URL fuente al inicio. Rechaza cualquier URL fuera de ese dominio.
Configuración
No hay ninguna variable obligatoria. Estas solo afectan a npm run crawl:
| Variable | Default | Descripción |
|---|---|---|
CRAWL_SEEDS |
página de inicio de la doc | URLs separadas por coma desde donde arrancar el crawl |
CRAWL_MAX_PAGES |
150 |
Tope de páginas a visitar |
CRAWL_CONCURRENCY |
3 |
Requests en paralelo |
CRAWL_DELAY_MS |
150 |
Pausa entre lotes de requests, para no sobrecargar el sitio |
Estas variables pueden definirse en un archivo .env (ver .env.example) o pasarse inline al comando.
Detalles de implementación
- Las páginas de
docs.cyberark.comson HTML estático generado por MadCap Flare. El contenido real de cada página vive en<div id="mc-main-content">, y los elementos de navegación/chrome llevanclass="nocontent"— esa es la convención que se usa tanto para indexar como para leer una página. - El sitio devuelve una página 404 personalizada a requests cuyo
User-Agentno parece un navegador (mitigación anti-bot); por eso tanto el crawler como el fetch de páginas envían unUser-Agentde Chrome. - La búsqueda usa MiniSearch con boost en el título de página y de sección, y coincidencia difusa (fuzzy) y por prefijo — no es una búsqueda semántica, es coincidencia de palabras con tolerancia a errores de tipeo. Se evaluó agregar una capa de embeddings locales, pero se descartó: la librería estándar para eso en Node (transformers.js) trae dependencias transitivas (
sharp/libvips,adm-zip) con vulnerabilidades altas sin parche disponible. get_cyberark_doc_pagevalida que la URL seahttps://docs.cyberark.com/*antes de hacer el fetch, para que el servidor no pueda usarse como proxy hacia otros dominios.
Limitaciones conocidas
- El índice de búsqueda es una foto del momento del crawl — no se actualiza solo. Si la doc cambia, hay que volver a correr
npm run crawl. - La relevancia de
search_cyberark_docses por palabras clave, no semántica: sinónimos o paráfrasis pueden no encontrar la página correcta aunque exista. - El crawler solo sigue links dentro de
docs.cyberark.comy con extensión.htm/.html; no cubre PDFs, videos embebidos ni contenido cargado dinámicamente con JavaScript.
Scripts disponibles
| Comando | Qué hace |
|---|---|
npm run build |
Compila TypeScript a dist/ |
npm start |
Corre el servidor MCP (dist/index.js) sobre stdio |
npm run dev |
Compila en watch mode |
npm run crawl |
Compila y corre el crawler, genera/actualiza data/docs-index.json |
推荐服务器
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 模型以安全和受控的方式获取实时的网络信息。