idiradocs-mcp

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.

Category
访问服务器

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

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 desde docs.cyberark.com en 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.json en 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.com son 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 llevan class="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-Agent no parece un navegador (mitigación anti-bot); por eso tanto el crawler como el fetch de páginas envían un User-Agent de 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_page valida que la URL sea https://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_docs es 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.com y 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

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选