anylogic-docs
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@anylogic-docswhat properties does the Seize block have in AnyLogic 8.9?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
anylogic-docs-mcp
Servidor MCP que le da a un agente de IA (opencode, Claude Code, Cursor, Codex…) la documentación real de AnyLogic 8.9 para que consulte en vez de inventar: bloques, propiedades, firmas de la API Java, tutoriales y ejemplos.
Todo se consulta en local: el servidor sólo abre un índice SQLite y unos ficheros Markdown. No hay red en tiempo de consulta.
Solo Unix. Este proyecto está pensado para Linux y macOS. En Windows requiere WSL2 con entorno gráfico (el crawler abre una ventana de navegador). No está probado de forma nativa en Windows.
El problema que resuelve
Sin documentación a mano, un agente improvisa:
— "Para cambiar la prioridad de un
Seize, usaseize.setPriority(5)." ❌ Ese método no existe.
Con este MCP, busca primero y cita:
— "
Seizetiene el campopriorityde tipodouble; se define conpublic double priority(T agent)y cuanto mayor, antes se atiende la tarea. Fuente: https://anylogic.help/api/com/anylogic/libraries/processmodeling/Seize.html"
Eso es todo lo que hace: convierte "creo que la API es así" en "la API es así, aquí está".
Related MCP server: context
Cómo funciona
anylogic.help ──crawl──┐
(964 páginas) │
├──► corpus/*.md ──► index.db ──► servidor MCP ──► agente
javadoc de AnyLogic ────┘ (Markdown) (SQLite FTS5) (stdio)
(1.066 clases)API — se lee del javadoc que ya viene instalado con AnyLogic (sin red).
Guía — se descarga una vez de
anylogic.help(necesita red, ver aviso abajo).Conversión — todo se normaliza a Markdown limpio: tablas, código, listas de propiedades de cada bloque, imágenes.
Índice — se construye
index.dbcon búsqueda de texto (BM25 de SQLite FTS5, sin embeddings ni modelos).Servidor —
server/main.pyexpone 7 herramientas MCP sobre ese índice.
Requisitos previos
Esto no es un paquete que se instala y listo: genera tu propia copia local de la documentación. Antes de empezar, comprueba que tienes todo esto.
Requisito | Versión | Cómo comprobarlo | Para qué | Si falta |
Sistema operativo | Linux o macOS |
| todo el proyecto | en Windows usa WSL2 con entorno gráfico |
Python | 3.12 o superior |
| servidor MCP y conversores | no arranca nada |
uv | última |
| crear el entorno e instalar dependencias | el instalador usa |
Node.js | 20 o superior |
| crawler ( | no se puede descargar la guía (queda solo la API) |
Chrome / Chromium | 120 o superior |
| abrir la web real y superar Cloudflare | el crawl falla |
AnyLogic | 8.9.x instalado | debe existir | de ahí salen los javadoc de la API | tendrías guía pero sin referencia de API |
Conexión a internet | — | — | descargar | solo funciona la parte de API, que es offline |
Espacio en disco | ~1 GB libre |
| venv (60 MB) + HTML (215 MB) + imágenes (76 MB) + índice (40 MB) | el proceso se corta a medias |
Entorno gráfico | X11, Wayland o macOS | — | Chromium necesita ventana visible para el challenge | el crawl no pasa Cloudflare |
Tiempo total de la primera instalación: 10–15 minutos (API ~1 min, descarga de la guía ~10 min, índice ~1 min).
Navegadores válidos: Chrome, Chromium, Brave o Edge (cualquier binario basado en
Chromium). Si no está en el PATH, se indica con ANYLOGIC_CHROME.
Instalación
git clone https://github.com/goya02-ops/anylogic-docs-mcp.git
cd anylogic-docs-mcp
./install.shEso es todo. El script crea el entorno, genera el corpus y el índice, y termina con una verificación automática.
Opciones
Comando | Qué hace | Cuándo usarlo |
| API + descarga de la guía + índice | instalación normal |
| solo API, sin red | ya tienes la guía, o no quieres descargar nada |
| reutiliza lo ya descargado en | reinstalar sin volver a bajar |
| descarga la guía sin imágenes | ahorra ~4 minutos y 76 MB |
| solo guía | no tienes AnyLogic instalado |
| registra el MCP en los clientes que detecte | tras instalar |
| imprime la config con rutas reales | para copiar a mano o a otra máquina |
| variante para agente en Windows y repo en WSL | Windows |
Qué hace exactamente
Comprueba sistema operativo, Python 3.12+, Node 20+ y el navegador.
Crea
.venve instalamcp[cli],beautifulsoup4ylxml.scripts/convert_api.py→ lee el javadoc de tu AnyLogic y generacorpus/api/.scripts/crawl.mjs --images→ descarga la guía deanylogic.helpenraw/html/.scripts/convert_guide.py→ HTML a Markdown encorpus/guide/.scripts/build_index.py→ construyeindex.db(~37.000 fragmentos).scripts/selftest.py→ comprobaciones de búsqueda, API y configuración de clientes.
Si no encuentra AnyLogic, aborta y te dice cómo indicar la ruta, porque sin la API
el MCP pierde la mitad de su valor. Si sólo quieres la guía, usa --skip-api.
Aviso: la instalación descarga la documentación
La primera ejecución de ./install.sh descarga 964 páginas y unas 3.000 imágenes de
anylogic.help (~300 MB). Es una descarga única: después todo se consulta en
local, sin internet.
Abre una ventana de Chromium. No es un error. Cloudflare bloquea la descarga automática normal, así que el crawler usa un navegador real. Si aparece un challenge ("Just a moment…" / "Un momento…"), complétalo a mano en esa ventana: el script continúa solo.
Es reanudable. Si se corta, vuelve a ejecutarlo: salta lo que ya está descargado.
Respeta
robots.txty va a ~2 páginas por segundo.Solo una vez por versión de AnyLogic. Cuando actualices AnyLogic, repite
./install.sh.Este repositorio no incluye la documentación. Es de The AnyLogic Company; cada uno genera su copia para uso personal. No la subas ni la redistribuyas.
Registro en el cliente MCP
El servidor habla stdio: todos los clientes hacen lo mismo, lanzar
<repo>/.venv/bin/python <repo>/server/main.py. Solo cambia el formato del fichero.
No hace falta escribir rutas a mano: el instalador las conoce.
./install.sh --print-config all # la config de todos los clientes, con rutas reales
./install.sh --print-config cursor # solo uno
./install.sh --register # registra en los clientes que detecte--register usa la CLI oficial cuando existe (opencode, claude, codex) y, en los
demás, fusiona la entrada en su JSON haciendo copia de seguridad (.bak) sin
tocar el resto de servidores.
Cliente | Dónde vive | Cómo |
opencode |
|
|
Claude Code |
|
|
Codex CLI |
|
|
Cursor |
| JSON ( |
VS Code (Copilot) |
| JSON ( |
Antigravity |
| JSON ( |
otros | el que sea | JSON |
opencode
opencode mcp add anylogic-docs --global -- \
/ruta/a/anylogic-docs-mcp/.venv/bin/python \
/ruta/a/anylogic-docs-mcp/server/main.pyComprobar: opencode mcp list → ✓ anylogic-docs connected.
Claude Code
claude mcp add anylogic-docs -s user -- \
/ruta/a/anylogic-docs-mcp/.venv/bin/python \
/ruta/a/anylogic-docs-mcp/server/main.py-s user lo deja disponible en todos los proyectos (-s project lo guarda en
.mcp.json del repo). Comprobar: claude mcp list.
Codex CLI
codex mcp add anylogic-docs -- \
/ruta/a/anylogic-docs-mcp/.venv/bin/python \
/ruta/a/anylogic-docs-mcp/server/main.pyO a mano en ~/.codex/config.toml:
[mcp_servers.anylogic-docs]
command = "/ruta/a/anylogic-docs-mcp/.venv/bin/python"
args = ["/ruta/a/anylogic-docs-mcp/server/main.py"]Cursor
~/.cursor/mcp.json (o .cursor/mcp.json dentro de un proyecto):
{
"mcpServers": {
"anylogic-docs": {
"command": "/ruta/a/anylogic-docs-mcp/.venv/bin/python",
"args": ["/ruta/a/anylogic-docs-mcp/server/main.py"]
}
}
}Luego, en Cursor: Settings → MCP y activa anylogic-docs (a veces hay que pulsar
el refresco).
VS Code (Copilot Chat)
~/.config/Code/User/mcp.json (Linux), ~/Library/Application Support/Code/User/mcp.json
(macOS) o .vscode/mcp.json en el proyecto:
{
"servers": {
"anylogic-docs": {
"type": "stdio",
"command": "/ruta/a/anylogic-docs-mcp/.venv/bin/python",
"args": ["/ruta/a/anylogic-docs-mcp/server/main.py"]
}
}
}Ojo: VS Code usa servers y exige "type": "stdio". Después: Ctrl+Shift+P →
MCP: List Servers → arrancar.
Google Antigravity
~/.gemini/config/mcp_config.json (global, compartido por el IDE y la CLI) o
<proyecto>/.agents/mcp_config.json (solo ese workspace):
{
"mcpServers": {
"anylogic-docs": {
"command": "/ruta/a/anylogic-docs-mcp/.venv/bin/python",
"args": ["/ruta/a/anylogic-docs-mcp/server/main.py"]
}
}
}No añadas "type" en este fichero: Antigravity rechaza el campo.
Cualquier otro cliente
Pide el JSON genérico y pégalo donde tu cliente guarde los servidores:
./install.sh --print-config genericWindows: agente en Windows y repo en WSL
Si el agente corre nativo en Windows pero el repo está dentro de WSL, el comando no
es el python de Linux sino wsl.exe:
./install.sh --wsl --print-config cursor # o claude, codex, vscode...
./install.sh --wsl --distro Ubuntu --registerGenera esto:
{
"mcpServers": {
"anylogic-docs": {
"command": "wsl.exe",
"args": [
"-d", "Ubuntu", "--",
"/home/tu-usuario/anylogic-docs-mcp/.venv/bin/python",
"/home/tu-usuario/anylogic-docs-mcp/server/main.py"
]
}
}
}Funciona, pero stdio a través de wsl.exe es más frágil (arranques lentos, cierres
raros). Recomendado: instalar el agente también dentro de WSL y registrarlo ahí sin
--wsl.
Si AnyLogic está instalado en Windows, el javadoc se lee desde WSL por /mnt/c:
.venv/bin/python scripts/convert_api.py --anylogic "/mnt/c/Program Files/AnyLogic 8.9.9"Comprobar que funciona
Reinicia el cliente (no basta con recargar la ventana en algunos).
Pídele: "usa anylogic_version y dime qué tienes indexado".
Debe responder con la versión, el número de páginas y de clases. Si dice que no existe la herramienta, el servidor no arrancó: revisa la ruta del
.venv/bin/pythony queindex.dbexista (./install.sh).
Opcional: que el agente sepa cuándo consultar
El MCP da las herramientas, pero no obliga a usarlas. Copia
examples/AGENTS.md a tu AGENTS.md (opencode, Codex),
CLAUDE.md (Claude Code) o GEMINI.md (Antigravity), o añade el bloque a mano:
## AnyLogic
Antes de afirmar cómo funciona un bloque, una propiedad o una firma de la API:
1. `anylogic_search("términos en inglés")` → `anylogic_read(path, heading)`.
2. Para código: `anylogic_api("Clase.miembro")`. Si no existe, no lo inventes.
3. La documentación está en inglés; responde en español y cita la URL.
4. Este entorno es AnyLogic PLE 8.9.9: hay funciones (export a Java, librerías
propias, tamaño de modelo) que no están disponibles.Herramientas
Herramienta | Para qué | Cuándo usarla |
| búsqueda BM25 en guía + API | siempre, es el punto de entrada |
| lee una página o una sección | tras una búsqueda, para no tragarse la página entera |
| ficha exacta de clase/método/campo con firma Java | antes de escribir código |
| búsqueda acotada a la API | cuando sólo quieres firmas |
| ejemplos en tutoriales y modelado avanzado | para ver código real de un patrón |
| mapa de secciones y paquetes | cuando no sabes dónde vive un tema |
| versión y tamaño del corpus | para comprobar que el índice está generado |
scope acepta "guide" (guía de usuario) o "api" (referencia Java).
Ejemplo de uso real
anylogic_search("seize priority")
→ Seize › Task priority (guía) + Seize.priority (API)
anylogic_read("guide/library-reference-guides/process-modeling-library/seize.md",
heading="Number of units")
→ sección concreta: tipo, valor por defecto, variables locales
anylogic_api("Seize.priority")
→ public double priority ( T agent)
"The priority of the task for the incoming agent (the larger the higher)."Cómo busca
BM25 de SQLite FTS5, sin embeddings. Ajustes que importan en la práctica:
Nombre de bloque primero. Si la consulta coincide con el título de una página (
Seize,ResourcePool,Conveyor), esa página va arriba aunque su texto no repita la palabra.AND y luego OR. Primero exige todos los términos; si no hay nada, relaja.
Cobertura. Entre los resultados sube el fragmento que contiene más términos distintos de la consulta, y más si están en el título.
Stemmer mínimo.
recurringencuentrarecurrence,capacitiesencuentracapacity(FTS5 no trae stemming).Sesgo de guía (×1.25). La guía explica el bloque; la API da la firma.
Máximo 2 fragmentos por página, para no repetir la misma fuente.
La documentación está en inglés: busca en inglés (seize capacity, no
capacidad de seize).
Mantenimiento
Actualizar a una versión nueva de AnyLogic
./install.sh # re-descarga lo que falte y regenera todo
./update.sh # equivalente (alias)Si sólo cambió AnyLogic y quieres refrescar la API (offline, rápido):
.venv/bin/python scripts/convert_api.py
.venv/bin/python scripts/build_index.pyReconstruir sólo el índice
.venv/bin/python scripts/build_index.pyComprobar que todo sigue bien
.venv/bin/python scripts/selftest.pyVariables de entorno útiles
Variable | Para qué | Por defecto |
| ruta de la instalación de AnyLogic | autodetectada |
| binario de Chrome/Chromium | autodetectado |
| puerto de depuración del crawler |
|
| perfil del navegador |
|
| otra copia del corpus/índice | la del repo |
Problemas típicos
Síntoma | Causa | Solución |
| no hay navegador en el | instálalo ( |
| challenge no resuelto | complétalo en la ventana abierta; si insiste, |
| perfil bloqueado o puerto ocupado |
|
| ruta no estándar |
|
| falta generar el corpus |
|
El cliente no ve la herramienta | servidor mal registrado o sin reiniciar |
|
| agente en Windows sin WSL en el PATH | instala el agente dentro de WSL, o usa |
| otra sesión tiene el índice abierto | cierra el agente y reintenta; el índice se reemplaza de forma atómica |
Búsquedas en español devuelven poco | la documentación está en inglés | busca en inglés ( |
Faltan imágenes | enlaces roscos en la propia web de AnyLogic | se registran en |
El crawl va lento | ~2 páginas/s es lo normal | es una descarga única; se puede reanudar |
Estructura del repositorio
anylogic-docs-mcp/
├── server/main.py # servidor MCP (stdio), 7 herramientas
├── scripts/
│ ├── crawl.mjs # descarga anylogic.help con Chromium por CDP
│ ├── convert_api.py # javadoc de AnyLogic → Markdown + símbolos
│ ├── convert_guide.py # HTML → Markdown
│ ├── build_index.py # corpus → index.db (FTS5)
│ ├── mcp_config.py # config MCP de cada cliente (imprimir / registrar)
│ └── selftest.py # comprobaciones de búsqueda, API y config
├── install.sh # instalación completa (idempotente)
├── examples/AGENTS.md # bloque para que el agente consulte antes de afirmar
├── NOTICE.md # aviso: la licencia MIT no cubre la documentación
├── update.sh # alias de install.sh para actualizar
├── requirements.txt
└── pyproject.tomlGenerado en local, no versionado (ver .gitignore):
corpus/ # Markdown de la guía y de la API
raw/ # HTML e imágenes descargados (caché reanudable)
index.db # índice de búsqueda
.venv/ # entorno Python
logs/ # fallos de crawl e imágenes
.chrome-profile/ # perfil del navegador usado por el crawlerAviso legal y licencia
Código: MIT (ver LICENSE).
Documentación: la guía, el javadoc y las imágenes son propiedad de The AnyLogic Company y están sujetos a sus términos de uso. Este repositorio no los distribuye: los scripts los generan en tu máquina a partir de tu propia instalación de AnyLogic y del sitio público
anylogic.help, para uso personal. Detalle en NOTICE.md.No redistribuyas
corpus/,raw/niindex.db.El crawler respeta
robots.txty va deliberadamente despacio.
Available Tools
7 toolsanylogic_apiB
Devuelve la ficha exacta de una clase, método o campo de la API Java.
Args: symbol: nombre simple ("Seize"), cualificado ("com.anylogic.libraries.processmodeling.Seize") o miembro ("Seize.take", "Agent.getEngine").
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | ||
| max_chars | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It states that it returns the exact API record, but does not disclose what happens for unknown or ambiguous symbols, or that max_chars may truncate the response.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded and efficient: one sentence states the operation, followed by a compact args section that explains the accepted symbol formats. There is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema covers return values, and the symbol parameter is well explained. However, the lack of annotations, undocumented max_chars behavior, and absence of error/ambiguity handling leave meaningful gaps for an agent to infer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does a good job explaining accepted symbol formats (simple, qualified, member), but it entirely omits the optional max_chars parameter and its truncation behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: it returns the exact record for a Java API class, method, or field. This is clear enough to distinguish the operation from generic library browsing, though it does not explicitly contrast itself with the sibling anylogic_api_search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the requirement to supply a symbol name, and the examples make clear this is for known API symbols. However, there is no explicit guidance on when to use this versus anylogic_api_search or anylogic_search, nor are exclusions or alternatives stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anylogic_api_searchA
Busca clases y métodos en la API Java (firmas, parámetros, tipos).
Args: query: nombre o concepto, p.ej. "seize capacity", "getEngine", "queue". limit: número máximo de resultados.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the burden; it discloses that results are API signatures with parameters and types, which is real behavioral context. It says nothing about ranking, result truncation, whether limit narrows a broader match set, or any auth/rate considerations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded one-line purpose followed by a compact Args block, with no filler. Only mild redundancy between the parenthetical field list and the per-parameter notes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Having an output schema means return values need not be explained, and both params are covered. The remaining gap is sibling disambiguation: with anylogic_api and anylogic_search adjacent, the definition should clarify which surface answers which question.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, and the description fully compensates for the query param with a definition plus three concrete example strings that reveal conceptual search rather than exact-name lookup. The limit param is described as the maximum number of results, though the default of 10 from the schema is not restated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Busca clases y métodos en la API Java") plus the shape of what comes back (firmas, parámetros, tipos). It is clearly narrower than anylogic_search, but never names anylogic_api or anylogic_search to draw the contrast explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The example queries ("seize capacity", "getEngine", "queue") imply that this is free-text conceptual lookup over the Java API, which helps the agent calibrate a query. However, there is no statement of when to prefer this over anylogic_api, anylogic_search or anylogic_examples, which matters against six siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anylogic_examplesB
Busca ejemplos y fragmentos de código en tutoriales y modelado avanzado.
Args: query: concepto o API, p.ej. "resource pool animation", "statechart transition". limit: número máximo de resultados.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It implies a search/read operation through the verb "Busca" and explains the limit parameter, but says nothing about matching semantics, result ordering, coverage of tutorials, or safety/rate-limit behavior beyond what the schema already provides.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded: the purpose is stated first, followed by clear argument notes. There is little waste, though the Args section could be slightly more formal in structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and both parameters are covered. However, for a search tool in a family of sibling search tools, the description lacks crucial routing context: exactly what content corpus it searches and how that differs from anylogic_search or anylogic_api_search.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does reasonably well: query is explained as a concept or API with concrete examples like "resource pool animation" and "statechart transition," and limit is described as the maximum number of results. It adds meaningful semantics beyond the bare parameter names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ("Busca") and resource ("ejemplos y fragmentos de código en tutoriales y modelado avanzado"), making the tool's domain clear. It is distinguishable from generic sibling searches by its emphasis on examples and snippets, though it does not explicitly name the sibling tools it differs from.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the mention of tutorials and advanced modeling, suggesting it is for finding illustrative examples rather than general documentation. However, there is no explicit guidance on when to use this instead of anylogic_search, anylogic_api_search, or anylogic_toc, and no exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anylogic_readA
Lee una página o una sección concreta del corpus.
Args: path: ruta relativa devuelta por anylogic_search, p.ej. "guide/anylogic/3d/3d-object.md" o "api/com/anylogic/engine/Agent.md". heading: si se indica, devuelve sólo esa sección (coincidencia parcial). max_chars: recorte máximo del resultado.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| heading | No | ||
| max_chars | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. 'Lee' conveys a read-only operation, and it usefully discloses heading partial-matching and max_chars truncation behavior. It does not mention what happens on an unknown path (error vs empty) or result pagination, which for an unannotated tool is a gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One-sentence purpose is front-loaded, followed by a compact per-argument list. No filler. The Args block is standard and each line earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is unnecessary, and all three parameters are documented in prose. For a simple read tool this is nearly complete; only edge-case behavior (missing path, heading not found) is left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it does document all three parameters with meaning beyond the schema: path format with concrete examples, heading as a partial-match section filter, and max_chars as an output truncation cap. It omits the max_chars default (12000) and valid ranges, keeping it from a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Lee una página o una sección concreta del corpus.' Clear what it does and that it operates on a path within the corpus. It distinguishes itself implicitly from anylogic_search by referencing the paths that search returns, but never names siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'path: ruta relativa devuelta por anylogic_search' implies the workflow (search first, then read). However, there is no explicit 'use this when' guidance and no differentiation from anylogic_api, anylogic_examples, or anylogic_toc for similar content retrieval.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anylogic_searchA
Busca en la documentación de AnyLogic (guía y API).
Args: query: términos de búsqueda; los identificadores exactos funcionan mejor (p.ej. "Seize", "take()", "ResourcePool", "agent.enter"). scope: "guide" (guía de usuario) o "api" (referencia Java). Vacío = todo. section: prefijo de ruta para acotar, p.ej. "guide/anylogic/process-modeling-library". limit: número máximo de resultados (1-25).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| scope | No | ||
| section | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose reasonable behavioral detail — best results from exact identifiers, scope/section narrowing, and a 1–25 result cap — but says nothing about how results are ranked, whether snippets are returned, or cost/latency characteristics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose line is front-loaded and the Args block is compact, one line per parameter. Slight redundancy in restating parameter names, but nothing wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
As a read-only search tool with an output schema, the description covers what an agent needs to construct a call. The notable gap is disambiguation across five sibling tools (anylogic_api_search, anylogic_examples, anylogic_toc, anylogic_read), none of which is referenced.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it largely does: it gives query examples ('Seize', 'take()', 'ResourcePool'), enumerates scope values with meaning, shows a section path prefix, and bounds limit to 1–25 (the schema only supplies a default of 8). Only the default value for limit is left unstated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: search the AnyLogic documentation (user guide and Java API). Clear what it does, but with siblings named anylogic_api_search and anylogic_examples the description never says how this differs from them, so an agent must guess which search surface to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied through the scope/section parameters ('guide' vs 'api', empty = everything). There is no explicit statement of when to use this versus anylogic_api_search or anylogic_toc, nor any exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anylogic_tocA
Mapa de la documentación: secciones, paquetes y páginas disponibles.
Args: scope: "guide" o "api". Vacío = resumen de ambos. section: para la guía, prefijo de sección a detallar (p.ej. "anylogic/process-modeling-library"). Para la API, un paquete.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | ||
| section | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses useful behavior — an empty scope returns a combined summary of guide and API — and implies a read-only enumeration, but says nothing about output size, whether the API map is paginated, or how deep the tree goes, which matters for a documentation index that can be large.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A one-line purpose sentence followed by tight per-parameter notes; the most important framing (what the tool returns) is front-loaded and every line earns its place. The Args block leans on an indented list rather than prose, which is efficient but slightly less scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is unnecessary, and both of the two parameters are documented semantically. For a low-complexity, zero-required-parameter index tool with an output schema, this is essentially complete; only the section/scope interaction is left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate and largely does: it gives the allowed values for scope ('guide' or 'api'), explains the empty default, and clarifies that section is a section prefix for the guide but a package name for the API — a distinction the schema does not carry at all. Minor gap: it does not say whether section is ignored or errors when scope is empty.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource: an index of the documentation containing sections, packages and available pages — an agent immediately understands this is a table-of-contents enumeration rather than content retrieval. It does not explicitly name the sibling tools it replaces (anylogic_read, anylogic_search), so the distinction is inferable but not stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the tool is a map, so an agent infers it should be called first to discover structure before reading. There is no explicit 'use this instead of anylogic_search when...' statement, nor any prerequisite or coverage caveats beyond the default-behavior note that an empty scope returns a summary of both.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anylogic_versionA
Versión del corpus, número de documentos y fecha de construcción.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. It discloses the returned metadata fields, implying a safe read-only operation, but it does not explicitly state side effects, auth needs, or freshness guarantees. The output schema covers return shape, which lowers the bar.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact sentence with no filler. It front-loads the key returned values and is appropriately sized for a zero-parameter metadata tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple zero-parameter metadata tool with an output schema, the description is nearly complete because it identifies the returned metadata. The only small gap is the lack of explicit usage context relative to sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
This tool has zero parameters, so there are no parameter semantics to explain. The baseline for a 0-parameter tool is 4, and the description adds no parameter-related confusion.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names three specific metadata outputs: corpus version, document count, and build date. The resource is clear, though it does not explicitly distinguish itself from sibling tools such as anylogic_search or anylogic_toc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description only lists returned fields and gives no guidance on when to use this tool versus alternatives. An agent must infer that this is a corpus metadata lookup rather than a content retrieval or search operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
7 tool updates
v1.0.0- First observed
anylogic_api - First observed
anylogic_api_search - First observed
anylogic_examples - First observed
anylogic_read - First observed
anylogic_search - First observed
anylogic_toc - First observed
anylogic_version
TDQS
Scored across 7 tools
Each tool has a mostly distinct role: read, search, exact API lookup, API search, examples search, TOC, and version. The main possible confusion is between anylogic_search with scope=api and anylogic_api_search, but the descriptions clarify that the latter targets Java class/method signatures.
All names use the same anylogic_ prefix and lowercase snake_case, which is predictable. However, the suffixes mix verbs (read, search) with nouns (api, examples, toc, version), so the set does not follow a consistent verb_noun convention.
Seven tools is well scoped for a documentation/API search server. Each tool covers a distinct retrieval mode: search, read, API lookup, example search, TOC, and corpus metadata.
The surface covers the full documentation workflow: discovering structure via TOC, searching guides/API/examples, reading pages or sections, and retrieving exact Java symbols. Version metadata is also present, leaving no obvious dead ends for the stated purpose.
Maintenance
Related MCP Connectors
Search and query nTop's knowledge base and engineering guides from AI applications.
Versioned documentation registry and semantic search for AI tools and coding assistants.
Provide your AI coding tools with token-efficient access to up-to-date technical documentation for…
Structured knowledge base for AI agent solutions. Search, explore, and retrieve build logs.
Related MCP Servers
- MIT
- AlicenseNot gradedqualityCmaintenanceProvides up-to-date documentation for AI agents by locally querying a community-driven registry of pre-built docs packages.Apache 2.0
- FlicenseAqualityDmaintenanceEnables AI coding agents to search and retrieve official CryoSPARC documentation with version awareness, using a local prebuilt index for safe and fast access.3-
- AlicenseNot gradedqualityDmaintenanceProvides local technical documentation with hybrid search (semantic + BM25) for AI agents, ensuring access to up-to-date framework docs.MIT