DevDocs MCP Server
Enables searching and retrieving official Angular documentation from DevDocs.io, providing code examples and structured technical content.
Provides tools to search and access comprehensive C++ language documentation via DevDocs.io.
Allows for indexed searching and retrieval of Deno documentation, including APIs and examples from DevDocs.io.
Enables browsing and searching the official Django framework documentation through DevDocs.io.
Provides access to Docker documentation, allowing users to search indexes and retrieve page content via DevDocs.io.
Enables searching and retrieving official documentation for the Express web framework from DevDocs.io.
Provides tools to search and access official Git documentation and command references via DevDocs.io.
Enables searching and retrieval of core JavaScript language documentation and references through DevDocs.io.
Provides access to Kubernetes documentation, including the ability to search indices and extract code examples via DevDocs.io.
Enables searching and retrieving official Node.js API documentation and examples from DevDocs.io.
Provides comprehensive access to official Python documentation, including library references and language specifications via DevDocs.io.
Enables browsing and searching official React documentation and component references through DevDocs.io.
Provides tools to search and access official Rust documentation and standard library references via DevDocs.io.
Enables searching and retrieving official Spring Boot framework documentation from DevDocs.io.
Allows for indexed searching and retrieval of official TypeScript language documentation and references from DevDocs.io.
Provides access to search and browse official Webpack documentation and configuration references through DevDocs.io.
Click on "Install 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., "@DevDocs MCP Serversearch for the useEffect hook in the React documentation"
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.
π DevDocs MCP Server
Model Context Protocol (MCP) Server para acceder a la documentaciΓ³n de DevDocs.io desde Claude Desktop, GitHub Copilot y otros clientes MCP.
π Tabla de Contenidos
Related MCP server: DocsetMCP
π€ ΒΏQuΓ© es MCP?
Model Context Protocol (MCP) es un protocolo abierto creado por Anthropic que permite a los modelos de IA (como Claude o Copilot) interactuar con herramientas externas de forma segura y estructurada.
Arquitectura MCP
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Cliente MCP β
β (Claude Desktop, GitHub Copilot, etc.) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
β JSON-RPC 2.0 (stdio)
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Servidor MCP β
β (devdocs-mcp-server) β
β β
β βββββββββββββββ βββββββββββββββ βββββββββββββββ β
β β Tools β β Resources β β Prompts β β
β β (funciones) β β (datos) β β (plantillas)β β
β βββββββββββββββ βββββββββββββββ βββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
β HTTP/HTTPS
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β DevDocs.io API β
β (documents.devdocs.io) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββComunicaciΓ³n stdio
MCP utiliza stdio (Standard Input/Output) para la comunicaciΓ³n:
ββββββββββββ stdin (JSON) ββββββββββββ
β Cliente β βββββββββββββββββββββΆ β Servidor β
β MCP β β MCP β
β β βββββββββββββββββββββ β β
ββββββββββββ stdout (JSON) ββββββββββββstdin: El cliente envΓa peticiones JSON-RPC al servidor
stdout: El servidor responde con resultados JSON-RPC
Sin puertos HTTP: La comunicaciΓ³n es directa entre procesos
π ΒΏQuΓ© es DevDocs MCP?
DevDocs MCP es un servidor MCP que proporciona acceso a la documentaciΓ³n de mΓ‘s de 600 tecnologΓas disponibles en DevDocs.io, incluyendo:
Lenguajes: Python, JavaScript, TypeScript, Rust, Go, Java, C++, etc.
Frameworks: React, Vue, Angular, Django, Spring Boot, Express, etc.
Herramientas: Docker, Kubernetes, Git, Webpack, etc.
APIs: Web APIs, Node.js, Deno, etc.
ΒΏPor quΓ© usar DevDocs MCP?
Sin DevDocs MCP | Con DevDocs MCP |
β Copiar/pegar de documentaciΓ³n | β IA accede directamente |
β Cambiar entre ventanas | β Todo en el mismo chat |
β Buscar manualmente | β BΓΊsqueda integrada |
β InformaciΓ³n desactualizada | β DocumentaciΓ³n oficial |
β Limitado al conocimiento del modelo | β Acceso a docs actualizadas |
β¨ CaracterΓsticas
π§ 12 Herramientas Disponibles
Herramienta | DescripciΓ³n |
| Lista todas las ~600 documentaciones disponibles |
| Busca en el Γndice de una tecnologΓa especΓfica |
| Obtiene el contenido de una pΓ‘gina de documentaciΓ³n |
| Obtiene el Γndice completo de una tecnologΓa |
| Muestra estadΓsticas del cachΓ© local |
| Limpia el cachΓ© (todo o por tecnologΓa) |
| Obtiene varias pΓ‘ginas en una sola llamada |
| Busca en mΓΊltiples documentaciones a la vez |
| Filtra entradas por tipo (class, function, etc.) |
| Extrae solo los bloques de cΓ³digo de una pΓ‘gina |
| Exporta documentaciΓ³n completa a archivos locales |
| Muestra quΓ© documentaciones estΓ‘n disponibles offline |
πΎ Sistema de CachΓ© Inteligente
CachΓ© persistente: No re-descarga documentaciΓ³n ya obtenida
Sin TTL: Las docs de DevDocs son versionadas, no cambian
Modo offline: Funciona sin internet para docs cacheadas
Volumen Docker: Persiste entre reinicios del contenedor
π³ Docker Ready
Imagen ligera (~233MB)
Volumen para persistir cachΓ©
ConfiguraciΓ³n simple
Compatible con Claude Desktop y GitHub Copilot
π Arquitectura
Estructura del Proyecto
devdocs-mcp/
βββ src/
β βββ devdocs_mcp/
β βββ __init__.py # Package initialization
β βββ server.py # MCP server (12 tools)
β βββ api.py # DevDocs API client
β βββ cache.py # Disk-based cache system
β βββ utils.py # HTML to Markdown converter
βββ docker/
β βββ Dockerfile # Docker image definition
β βββ docker-compose.yml # Docker Compose config
βββ scripts/
β βββ docker-build.bat # Build script (Windows)
β βββ docker-build.sh # Build script (Linux/Mac)
βββ config/
β βββ claude_config_example.json # MCP config examples
βββ tests/
β βββ test_mcp.py # MCP server tests
β βββ test_mcp_protocol.py # Protocol tests
βββ pyproject.toml # Python project config
βββ LICENSE
βββ README.mdFlujo de Datos
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Copilot / Claude β
β β
β "ΒΏCΓ³mo uso asyncio.gather en Python?" β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
β 1. Llama tool: search_documentation
β {tech: "python~3.10", query: "gather"}
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β DevDocs MCP Server β
β β
β server.py βββΆ api.py βββΆ cache.py β
β β β β β
β β β ββββΆ ΒΏEn cachΓ©? βββΆ SΓ βββΆ Retorna β
β β β β β
β β β ββββΆ No βββΆ Descarga βββΆ Guarda β
β β β β
β β ββββΆ utils.py (HTML β Markdown) β
β β β
β ββββΆ Retorna resultado formateado β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
β 2. Llama tool: get_page_content
β {tech: "python~3.10", path: "library/asyncio-task"}
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β DevDocs.io API β
β β
β documents.devdocs.io/python~3.10/library/asyncio-task.html β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββπ¦ InstalaciΓ³n
OpciΓ³n 1: Docker (Recomendado)
Requisitos
Docker Desktop instalado y corriendo
Pasos
# 1. Clonar o navegar al directorio
cd devdocs-mcp
# 2. Construir la imagen
docker build -t devdocs-mcp:latest -f docker/Dockerfile .
# 3. Verificar que se creΓ³
docker images devdocs-mcpVerificar funcionamiento
# Probar que el servidor responde
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | docker run -i --rm devdocs-mcp:latestOpciΓ³n 2: InstalaciΓ³n Local
Requisitos
Python 3.10 o superior
pip
Pasos
# 1. Navegar al directorio
cd devdocs-mcp
# 2. Instalar en modo desarrollo
pip install -e .
# 3. Verificar instalaciΓ³n
python -c "from devdocs_mcp.server import main; print('OK')"βοΈ ConfiguraciΓ³n
GitHub Copilot (VS Code)
Abre VS Code
Presiona
Ctrl+Shift+Pβ "Preferences: Open User Settings (JSON)"Busca la secciΓ³n de MCP servers o crΓ©ala
AΓ±ade la configuraciΓ³n:
Con Docker (Recomendado)
{
"mcp": {
"servers": {
"devdocs": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-v", "devdocs-cache:/root/.cache/devdocs-mcp",
"devdocs-mcp:latest"
]
}
}
}
}Sin Docker (Local)
{
"mcp": {
"servers": {
"devdocs": {
"command": "python",
"args": ["-m", "devdocs_mcp.server"],
"cwd": "E:/DevDocs/devdocs-mcp/src"
}
}
}
}Reinicia VS Code
Claude Desktop
Abre el archivo de configuraciΓ³n:
Windows:
%APPDATA%\Claude\claude_desktop_config.jsonmacOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonLinux:
~/.config/claude/claude_desktop_config.json
AΓ±ade la configuraciΓ³n:
{
"mcpServers": {
"devdocs": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-v", "devdocs-cache:/root/.cache/devdocs-mcp",
"devdocs-mcp:latest"
]
}
}
}Reinicia Claude Desktop
π§ Herramientas Disponibles
1. list_documentations
Lista todas las documentaciones disponibles en DevDocs (~600).
ParΓ‘metros:
Nombre | Tipo | Requerido | DescripciΓ³n |
| string | No | Filtrar por nombre |
Ejemplo de uso:
"Lista las documentaciones disponibles que contengan 'python'"
Respuesta:
## Documentaciones Disponibles (15 encontradas)
- **Python 3.10** (`python~3.10`) - v3.10
- **Python 3.11** (`python~3.11`) - v3.11
- **Python 3.12** (`python~3.12`) - v3.12
...2. search_documentation
Busca en el Γndice de una tecnologΓa especΓfica.
ParΓ‘metros:
Nombre | Tipo | Requerido | DescripciΓ³n |
| string | SΓ | Slug de la tecnologΓa (ej: |
| string | SΓ | TΓ©rmino de bΓΊsqueda |
| integer | No | MΓ‘ximo de resultados (default: 20) |
Ejemplo de uso:
"Busca 'asyncio' en la documentaciΓ³n de Python 3.10"
Respuesta:
## Resultados para "asyncio" en python~3.10
Encontrados: 15 resultados
1. **asyncio** [Concurrent Execution]
Path: `library/asyncio`
2. **asyncio.gather()** [Concurrent Execution]
Path: `library/asyncio-task`
...3. get_page_content
Obtiene el contenido completo de una pΓ‘gina de documentaciΓ³n.
ParΓ‘metros:
Nombre | Tipo | Requerido | DescripciΓ³n |
| string | SΓ | Slug de la tecnologΓa |
| string | SΓ | Path de la pΓ‘gina |
Ejemplo de uso:
"Dame el contenido de la pΓ‘gina asyncio-task de Python 3.10"
Respuesta:
# asyncio β Asynchronous I/O
asyncio is a library to write concurrent code using the async/await syntax.
## Running an asyncio Program
import asyncio
async def main():
print('Hello')
await asyncio.sleep(1)
print('World')
asyncio.run(main())
...4. get_documentation_index
Obtiene el Γndice completo de una documentaciΓ³n.
ParΓ‘metros:
Nombre | Tipo | Requerido | DescripciΓ³n |
| string | SΓ | Slug de la tecnologΓa |
Ejemplo de uso:
"Dame el Γndice de Spring Boot"
5. get_cache_stats
Muestra estadΓsticas del cachΓ© local.
ParΓ‘metros: Ninguno
Ejemplo de uso:
"ΒΏCuΓ‘nto ocupa el cachΓ© de devdocs?"
Respuesta:
## EstadΓsticas del CachΓ©
- **Directorio:** `/root/.cache/devdocs-mcp`
- **Archivos totales:** 156
- **TamaΓ±o total:** 12.45 MB
### Documentaciones cacheadas:
- **python~3.10**: 45 archivos (3.2 MB)
- **spring_boot**: 89 archivos (8.1 MB)
- **react**: 22 archivos (1.15 MB)6. clear_cache
Limpia el cachΓ© local.
ParΓ‘metros:
Nombre | Tipo | Requerido | DescripciΓ³n |
| string | No | TecnologΓa especΓfica (vacΓo = todo) |
Ejemplo de uso:
"Limpia el cachΓ© de Python 3.10"
7. get_multiple_pages
Obtiene mΓΊltiples pΓ‘ginas en una sola llamada.
ParΓ‘metros:
Nombre | Tipo | Requerido | DescripciΓ³n |
| string | SΓ | Slug de la tecnologΓa |
| array | SΓ | Lista de paths |
Ejemplo de uso:
"Dame las pΓ‘ginas de asyncio, asyncio-task y asyncio-stream de Python"
8. search_across_docs
Busca en mΓΊltiples documentaciones a la vez.
ParΓ‘metros:
Nombre | Tipo | Requerido | DescripciΓ³n |
| string | SΓ | TΓ©rmino de bΓΊsqueda |
| array | No | Lista de tecnologΓas (default: populares) |
| integer | No | MΓ‘ximo por tecnologΓa (default: 5) |
Ejemplo de uso:
"Busca 'websocket' en Python, JavaScript y Node.js"
Respuesta:
## BΓΊsqueda: 'websocket'
TecnologΓas buscadas: 3 | Total resultados: 12
### π python~3.10 (4 resultados)
- **websockets** β `library/websockets`
...
### π javascript (5 resultados)
- **WebSocket** β `global_objects/websocket`
...
### π node (3 resultados)
- **WebSocket** β `ws`
...9. get_type_entries
Filtra entradas por tipo (class, function, method, etc.).
ParΓ‘metros:
Nombre | Tipo | Requerido | DescripciΓ³n |
| string | SΓ | Slug de la tecnologΓa |
| string | SΓ | Tipo a filtrar |
| integer | No | MΓ‘ximo de resultados (default: 50) |
Ejemplo de uso:
"Lista todas las funciones built-in de Python 3.10"
10. get_examples
Extrae solo los bloques de cΓ³digo de una pΓ‘gina.
ParΓ‘metros:
Nombre | Tipo | Requerido | DescripciΓ³n |
| string | SΓ | Slug de la tecnologΓa |
| string | SΓ | Path de la pΓ‘gina |
Ejemplo de uso:
"Dame solo los ejemplos de cΓ³digo de asyncio.gather"
11. export_documentation
Exporta documentaciΓ³n completa a archivos locales.
ParΓ‘metros:
Nombre | Tipo | Requerido | DescripciΓ³n |
| string | SΓ | Slug de la tecnologΓa |
| string | SΓ | Directorio de salida |
| integer | No | LΓmite de pΓ‘ginas |
Ejemplo de uso:
"Exporta toda la documentaciΓ³n de React a ./react_docs"
β οΈ Advertencia: Puede tomar varios minutos para documentaciones grandes.
12. offline_mode_status
Muestra quΓ© documentaciones estΓ‘n disponibles offline.
ParΓ‘metros: Ninguno
Ejemplo de uso:
"ΒΏQuΓ© documentaciones tengo disponibles offline?"
Respuesta:
## Estado Offline
- **Directorio cachΓ©:** `/root/.cache/devdocs-mcp`
- **TecnologΓas disponibles offline:** 3
- **TamaΓ±o total:** 12.45 MB
### Documentaciones en cachΓ©:
- **python~3.10**: 45 pΓ‘ginas (3.2 MB) | Γndice: β
- **spring_boot**: 89 pΓ‘ginas (8.1 MB) | Γndice: β
- **react**: 22 pΓ‘ginas (1.15 MB) | Γndice: β
π‘ Ejemplos de Uso
Caso 1: Aprender una nueva biblioteca
Usuario: "Necesito aprender a usar asyncio en Python.
ΒΏPuedes buscar la documentaciΓ³n y explicarme los conceptos bΓ‘sicos?"
Copilot: [Usa search_documentation para buscar asyncio]
[Usa get_page_content para obtener la documentaciΓ³n]
"SegΓΊn la documentaciΓ³n oficial de Python 3.10..."Caso 2: Comparar implementaciones
Usuario: "ΒΏCΓ³mo se manejan las promesas en JavaScript vs Python?"
Copilot: [Usa search_across_docs con query="promise" en javascript y python]
[Usa get_page_content para obtener detalles de cada uno]
"Comparando ambas documentaciones..."Caso 3: Buscar ejemplos especΓficos
Usuario: "Dame ejemplos de cΓ³digo de cΓ³mo usar fetch en JavaScript"
Copilot: [Usa get_examples con tech="javascript" path="global_objects/fetch"]
"AquΓ tienes los ejemplos de la documentaciΓ³n oficial..."Caso 4: Trabajo offline
Usuario: "Voy a estar sin internet. ΒΏPuedes cachear la documentaciΓ³n de React?"
Copilot: [Usa get_documentation_index para cachear el Γndice]
[Usa get_multiple_pages para cachear pΓ‘ginas principales]
"Listo, la documentaciΓ³n de React estΓ‘ disponible offline."πΎ Sistema de CachΓ©
Estructura del CachΓ©
~/.cache/devdocs-mcp/
βββ docs_list.json # Lista de todas las documentaciones
βββ python~3.10/
β βββ index.json # Γndice de Python 3.10
β βββ pages/
β βββ library_asyncio.json
β βββ library_asyncio-task.json
β βββ ...
βββ spring_boot/
β βββ index.json
β βββ pages/
β βββ ...
βββ react/
βββ ...PolΓtica de CachΓ©
Aspecto | Comportamiento |
TTL | Sin expiraciΓ³n (las docs son versionadas) |
Persistencia | Permanente hasta limpieza manual |
UbicaciΓ³n |
|
Formato | JSON para Γndices, Markdown para contenido |
Comandos ΓΊtiles para el cachΓ©
# Ver contenido del cachΓ© (Docker)
docker run --rm -v devdocs-cache:/cache alpine ls -laR /cache
# Ver tamaΓ±o del volumen
docker system df -v | grep devdocs
# Limpiar volumen completamente
docker volume rm devdocs-cacheπ API de DevDocs
DevDocs MCP se conecta a la API pΓΊblica de DevDocs:
Endpoints
Endpoint | DescripciΓ³n |
| Lista todas las documentaciones |
| Γndice de una tecnologΓa |
| Contenido HTML de una pΓ‘gina |
Estructura de docs.json
[
{
"name": "Python",
"slug": "python~3.10",
"type": "python",
"version": "3.10",
"release": "3.10.0",
"mtime": 1634567890,
"db_size": 12345678
}
]Estructura de index.json
{
"entries": [
{
"name": "asyncio",
"path": "library/asyncio",
"type": "Concurrent Execution"
},
{
"name": "asyncio.gather()",
"path": "library/asyncio-task#asyncio.gather",
"type": "Concurrent Execution"
}
],
"types": [
{"name": "Built-in Functions", "count": 69},
{"name": "Concurrent Execution", "count": 45}
]
}π Desarrollo
Ejecutar en modo desarrollo
cd devdocs-mcp
# Instalar dependencias
pip install -e .
# Ejecutar tests
python test_mcp.py
# Probar herramientas manualmente
python -c "
from devdocs_mcp.api import DevDocsAPI
api = DevDocsAPI()
results = api.search_in_index('python~3.10', 'asyncio', limit=5)
print(results)
"Estructura de archivos
Archivo | Responsabilidad |
| Servidor MCP, definiciΓ³n de tools, handlers |
| Cliente HTTP para DevDocs API |
| Sistema de cachΓ© en disco |
| ConversiΓ³n HTML β Markdown |
Agregar una nueva herramienta
Agregar mΓ©todo en
api.py:
def mi_nueva_funcion(self, param: str) -> dict:
"""DescripciΓ³n de la funciΓ³n"""
# ImplementaciΓ³n
return resultadoAgregar Tool en
server.py:
Tool(
name="mi_nueva_tool",
description="DescripciΓ³n para el modelo",
inputSchema={
"type": "object",
"properties": {
"param": {"type": "string", "description": "..."}
},
"required": ["param"]
}
)Agregar handler en
server.py:
elif name == "mi_nueva_tool":
result = await handle_mi_nueva_tool(arguments)
async def handle_mi_nueva_tool(args: dict) -> str:
param = args.get('param', '')
loop = asyncio.get_event_loop()
result = await loop.run_in_executor(None, api.mi_nueva_funcion, param)
return formatear_resultado(result)π§ SoluciΓ³n de Problemas
El servidor no inicia
# Verificar que Docker estΓ‘ corriendo
docker info
# Verificar que la imagen existe
docker images devdocs-mcp
# Reconstruir la imagen
docker build -t devdocs-mcp:latest -f docker/Dockerfile .No aparecen las herramientas en Copilot
Verificar configuraciΓ³n MCP en VS Code settings
Reiniciar VS Code completamente
Verificar logs:
View > Output > GitHub Copilot
Error de conexiΓ³n a DevDocs
# Verificar conectividad
curl https://devdocs.io/docs.json
# Verificar desde Docker
docker run --rm devdocs-mcp:latest python -c "
import httpx
r = httpx.get('https://devdocs.io/docs.json', follow_redirects=True)
print(f'Status: {r.status_code}')
"CachΓ© corrupto
# Limpiar cachΓ© (Docker)
docker volume rm devdocs-cache
# Limpiar cachΓ© (Local)
rm -rf ~/.cache/devdocs-mcpVer logs del servidor
# Ejecutar manualmente para ver errores
docker run -it --rm devdocs-mcp:latest
# Con mΓ‘s detalle
docker run -it --rm devdocs-mcp:latest python -c "
import logging
logging.basicConfig(level=logging.DEBUG)
from devdocs_mcp.server import main
main()
"π Rendimiento
Tiempos tΓpicos
OperaciΓ³n | Primera vez | Con cachΓ© |
| ~500ms | ~10ms |
| ~300ms | ~5ms |
| ~200ms | ~5ms |
| ~2s | ~50ms |
TamaΓ±o de cachΓ© por tecnologΓa
TecnologΓa | PΓ‘ginas | TamaΓ±o aprox. |
Python 3.10 | ~450 | ~15 MB |
React | ~80 | ~3 MB |
JavaScript | ~200 | ~8 MB |
Spring Boot | ~150 | ~12 MB |
π Licencia
Este proyecto estΓ‘ bajo la licencia MIT. Ver LICENSE para mΓ‘s detalles.
π Agradecimientos
DevDocs.io por proporcionar la API de documentaciΓ³n
Anthropic por el protocolo MCP
Model Context Protocol por la especificaciΓ³n
π¨βπ» Autor
Javier Garcia Β· @JavierDevCol
Hecho con β€οΈ para la comunidad de desarrolladores
Available Tools
12 toolsclear_cacheA
Limpia el cachΓ© local. Puedes limpiar todo o solo una tecnologΓa especΓfica.
Ejemplos:
Sin parΓ‘metros: limpia TODO el cachΓ©
tech="python~3.10": limpia solo cachΓ© de Python 3.10
| Name | Required | Description | Default |
|---|---|---|---|
| tech | No | TecnologΓa especΓfica a limpiar (opcional, si no se especifica limpia todo) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly indicates this is a destructive operation ('limpia' implies removal/deletion) and explains the scope of destruction (all cache vs specific technology). However, it doesn't mention potential side effects like temporary performance impact or whether the operation requires specific permissions.
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 perfectly structured and concise. The first sentence states the core purpose, the second explains the two usage modes, and the examples provide immediate clarity without redundancy. Every sentence earns its place, and the information is front-loaded with the most important details first.
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 destructive operation with no annotations and no output schema, the description does an excellent job covering the essential context. It explains what the tool does, how to use it, and provides examples. The only minor gap is the lack of information about what happens after execution (success indicators, potential errors, or system state changes).
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?
The schema has 100% description coverage, so the baseline is 3. The description adds significant value by providing concrete examples of parameter usage ('tech="python~3.10"') and explaining the semantic difference between providing vs not providing the parameter. This goes beyond the schema's technical documentation to show practical application.
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 clearly states the tool's purpose with a specific verb ('limpia' - cleans) and resource ('cachΓ© local' - local cache). It distinguishes itself from sibling tools like get_cache_stats (which reads cache) by performing a destructive operation. The description explicitly covers both full and partial cache clearing scenarios.
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 provides explicit guidance on when to use different parameter configurations: 'Sin parΓ‘metros: limpia TODO el cachΓ©' (without parameters: cleans ALL cache) versus 'tech="python~3.10": limpia solo cachΓ© de Python 3.10' (cleans only Python 3.10 cache). This gives clear alternatives within the same tool based on the user's needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_documentationA
Exporta toda la documentaciΓ³n de una tecnologΓa a archivos locales. Los archivos se guardan como Markdown en el directorio especificado.
ADVERTENCIA: Puede tomar varios minutos para documentaciones grandes. Usa max_pages para limitar la cantidad de pΓ‘ginas a exportar.
Ejemplos:
tech="spring_boot", output_dir="./spring_docs" β exporta todo Spring Boot
tech="python~3.10", output_dir="./python_docs", max_pages=50 β exporta 50 pΓ‘ginas
| Name | Required | Description | Default |
|---|---|---|---|
| tech | Yes | Slug de la tecnologΓa | |
| output_dir | Yes | Directorio donde guardar los archivos | |
| max_pages | No | MΓ‘ximo de pΓ‘ginas a exportar (opcional, None = todas) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It adds useful context about potential long execution times ('Puede tomar varios minutos') and the optional max_pages parameter for limiting output, but does not cover other aspects like error handling, file overwriting behavior, or required permissions. It compensates partially but not fully for the lack of annotations.
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 appropriately sized and front-loaded, starting with the core purpose, followed by key details (format, warning, parameter usage), and ending with concrete examples. Every sentence earns its place by providing essential information without redundancy.
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?
Given the tool's complexity (export operation with potential long runtime) and lack of annotations or output schema, the description is reasonably complete. It covers the main purpose, key behavioral traits, and parameter usage through examples, but could improve by addressing error cases or output structure more explicitly.
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 100%, so the schema already documents all three parameters thoroughly. The description adds minimal value beyond the schema by mentioning max_pages in the warning and examples, but does not provide additional syntax or format details. Baseline 3 is appropriate as the schema does the heavy lifting.
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 clearly states the specific action ('Exporta toda la documentaciΓ³n') and resource ('de una tecnologΓa'), distinguishing it from sibling tools like get_documentation_index or get_page_content which retrieve rather than export. It specifies the output format (Markdown files) and destination (local directory), making the purpose unambiguous.
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 provides clear context for when to use this tool (exporting entire documentation sets to local files) and includes a warning about time for large documentations, but does not explicitly state when not to use it or name alternatives among siblings. It implies usage for bulk exports versus single-page retrieval tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cache_statsB
Muestra estadΓsticas del cachΓ© local. Incluye: directorio, archivos totales, tamaΓ±o, documentaciones cacheadas.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 states the tool shows statistics, implying a read-only operation, but doesn't clarify if it requires specific permissions, has side effects, or details the output format (e.g., structured data or plain text). For a tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.
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 concise and well-structured, using two sentences: one states the purpose, and the other lists included statistics. Each sentence adds value without redundancy. However, it could be slightly more front-loaded by integrating the list into the first sentence for better flow.
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?
Given the tool's low complexity (0 parameters, no output schema), the description is minimally adequate. It covers the purpose and what statistics are shown, but lacks details on behavioral aspects like permissions or output format. Without annotations or an output schema, the description should do more to explain the tool's operation and results, leaving room for improvement.
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?
The tool has 0 parameters, and schema description coverage is 100%, so no parameter documentation is needed. The description adds value by listing what statistics are included (directory, total files, size, cached documentations), which provides context beyond the empty schema. This compensates adequately for the lack of parameters.
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 clearly states the tool's purpose: 'Muestra estadΓsticas del cachΓ© local' (Shows local cache statistics). It specifies the verb 'muestra' (shows) and resource 'estadΓsticas del cachΓ© local' (local cache statistics), making the function unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'clear_cache' or 'offline_mode_status', which also relate to cache operations.
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 provides no guidance on when to use this tool versus alternatives. It lists what the tool includes (directory, total files, size, cached documentations) but doesn't indicate scenarios for use, prerequisites, or comparisons to siblings like 'clear_cache' or 'offline_mode_status'. Without such context, the agent must infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_documentation_indexB
Obtiene informaciΓ³n del Γndice de una documentaciΓ³n. Muestra estadΓsticas: total de entradas, pΓ‘ginas ΓΊnicas, tipos de contenido.
Γtil para entender la estructura de una documentaciΓ³n antes de buscar.
| Name | Required | Description | Default |
|---|---|---|---|
| tech | Yes | Slug de la tecnologΓa |
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 mentions what the tool returns ('Muestra estadΓsticas: total de entradas, pΓ‘ginas ΓΊnicas, tipos de contenido'), which is helpful, but doesn't cover other important aspects like whether it's a read-only operation, potential rate limits, authentication needs, or error conditions. For a tool with no annotations, this leaves significant behavioral gaps.
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 appropriately concise with three sentences that each serve a purpose: stating the tool's function, listing what it returns, and providing usage context. It's front-loaded with the core purpose. While efficient, the second sentence could be slightly more structured (e.g., using bullet points for the statistics), but overall it's well-organized with minimal waste.
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?
Given the tool's moderate complexity (single parameter, no output schema, no annotations), the description is adequate but has gaps. It explains the purpose and usage context well, but without annotations or output schema, it should ideally provide more behavioral details (e.g., read-only nature, return format). The description covers the basics but doesn't fully compensate for the lack of structured metadata.
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?
The input schema has 100% description coverage, with the single parameter 'tech' documented as 'Slug de la tecnologΓa'. The description doesn't add any parameter-specific information beyond what the schema provides. According to the rules, when schema_description_coverage is high (>80%), the baseline score is 3 even with no param info in the description, which applies here.
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 clearly states the tool's purpose: 'Obtiene informaciΓ³n del Γndice de una documentaciΓ³n' (Gets information from a documentation index). It specifies the verb 'obtiene' (gets) and resource 'Γndice de documentaciΓ³n' (documentation index), and distinguishes it from siblings like get_page_content or search_documentation by focusing on index statistics rather than content retrieval. However, it doesn't explicitly differentiate from get_type_entries or list_documentations, which might also relate to documentation structure.
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 provides clear context for when to use this tool: 'Γtil para entender la estructura de una documentaciΓ³n antes de buscar' (Useful for understanding the structure of documentation before searching). This implicitly suggests using it as a preliminary step before content-focused tools like search_documentation or get_page_content. However, it doesn't explicitly state when not to use it or name specific alternatives among the siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_examplesA
Extrae solo los bloques de cΓ³digo/ejemplos de una pΓ‘gina de documentaciΓ³n. Γtil cuando solo necesitas ver ejemplos de uso, no toda la documentaciΓ³n.
Ejemplos:
tech="python~3.10", path="library/asyncio" β ejemplos de asyncio
tech="javascript", path="global_objects/promise" β ejemplos de Promise
| Name | Required | Description | Default |
|---|---|---|---|
| tech | Yes | Slug de la tecnologΓa | |
| path | Yes | Path de la pΓ‘gina |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It describes what the tool does (extracts code/example blocks) and includes usage examples, but lacks details on behavioral traits like rate limits, error handling, or output format. It's adequate but has gaps in transparency.
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 with the core purpose, followed by a usage guideline and examples. Every sentence earns its place, with no wasted words, making it highly efficient and well-structured for quick understanding.
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?
Given no annotations and no output schema, the description is moderately complete: it covers purpose, usage, and parameter examples, but lacks details on output format, error cases, or system behavior. For a tool with 2 parameters and 100% schema coverage, it's adequate but could be more comprehensive.
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 100%, so the schema already documents both parameters. The description adds value by providing concrete examples (e.g., tech='python~3.10', path='library/asyncio') that illustrate parameter usage, but doesn't add new semantic details beyond what the schema provides. Baseline 3 is appropriate.
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 clearly states the specific action ('Extrae solo los bloques de cΓ³digo/ejemplos') and resource ('de una pΓ‘gina de documentaciΓ³n'), distinguishing it from siblings like get_page_content or get_documentation_index that retrieve full content. The purpose is precise and differentiated.
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?
It explicitly states when to use this tool ('Γtil cuando solo necesitas ver ejemplos de uso, no toda la documentaciΓ³n') and provides examples that clarify its scope versus alternatives like get_page_content for full documentation. This gives clear context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_multiple_pagesB
Obtiene mΓΊltiples pΓ‘ginas de documentaciΓ³n a la vez. Γtil para obtener documentaciΓ³n relacionada en una sola llamada.
Ejemplos:
tech="python~3.10", paths=["library/asyncio", "library/asyncio-task", "library/asyncio-stream"]
tech="react", paths=["hooks-intro", "hooks-state", "hooks-effect"]
| Name | Required | Description | Default |
|---|---|---|---|
| tech | Yes | Slug de la tecnologΓa | |
| paths | Yes | Lista de paths de pΓ‘ginas a obtener |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states what the tool does but doesn't describe important behavioral aspects: whether this is a read-only operation, if it has rate limits, what authentication is required, what happens if some paths don't exist, or what the return format looks like. The examples show parameter usage but don't explain behavior.
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 appropriately sized and front-loaded: the first sentence states the core purpose, the second provides usage context, and examples follow. The Spanish examples are relevant but could be more concise. Overall, most sentences earn their place, though the structure could be slightly tighter.
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?
Given no annotations, no output schema, and a tool that fetches multiple resources, the description is incomplete. It doesn't explain what format the results come in, whether it's paginated, what happens with invalid paths, or any error conditions. For a tool with 2 required parameters and no structured output documentation, more behavioral context is needed.
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?
The schema has 100% description coverage with clear parameter documentation, so the baseline is 3. The description adds minimal value beyond the schema: the examples illustrate how parameters work together (tech with paths array), showing that 'tech' is a technology slug and 'paths' are documentation page paths. However, it doesn't add significant semantic context beyond what the schema already provides.
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 clearly states the tool's purpose: 'Obtiene mΓΊltiples pΓ‘ginas de documentaciΓ³n a la vez' (gets multiple documentation pages at once). It specifies the verb ('obtiene') and resource ('pΓ‘ginas de documentaciΓ³n'), but doesn't explicitly differentiate from siblings like 'get_page_content' beyond the 'mΓΊltiples' aspect. The examples help illustrate the scope but don't provide explicit sibling comparison.
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 provides some usage context: 'Γtil para obtener documentaciΓ³n relacionada en una sola llamada' (useful for getting related documentation in a single call). This implies when to use it (for related pages) but doesn't explicitly state when NOT to use it or mention alternatives like 'get_page_content' for single pages. The guidance is helpful but not comprehensive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_page_contentA
Obtiene el contenido completo de una pΓ‘gina de documentaciΓ³n. Devuelve el contenido en formato Markdown.
IMPORTANTE: Necesitas el path exacto de la pΓ‘gina. Usa search_documentation para encontrarlo.
Ejemplos:
tech="python~3.10", path="library/asyncio" β documentaciΓ³n de asyncio
tech="spring_boot", path="actuator" β documentaciΓ³n de actuator
tech="javascript", path="global_objects/promise" β documentaciΓ³n de Promise
| Name | Required | Description | Default |
|---|---|---|---|
| tech | Yes | Slug de la tecnologΓa | |
| path | Yes | Path de la pΓ‘gina (obtenido de search_documentation) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses key behavioral traits: it returns complete content in Markdown format, requires exact paths, and has a dependency on search_documentation. However, it doesn't mention potential limitations like rate limits, authentication needs, or error conditions.
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 efficiently structured: purpose statement first, critical requirement second, dependency guidance third, and illustrative examples last. Every sentence adds value with zero redundancy. The Spanish language doesn't affect conciseness scoring.
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 read-only tool with 2 well-documented parameters and no output schema, the description is mostly complete. It explains what the tool does, when to use it, and provides examples. The main gap is lack of output format details beyond 'Markdown' (structure, size limits, error responses).
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 100%, so the baseline is 3. The description adds minimal value beyond the schema: it reinforces that 'path' must be exact and obtained from search_documentation, and provides concrete examples showing how tech and path parameters combine. However, it doesn't explain parameter formats or constraints beyond what the schema already states.
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 clearly states the specific action ('obtiene el contenido completo'), target resource ('una pΓ‘gina de documentaciΓ³n'), and output format ('formato Markdown'). It distinguishes this tool from siblings like search_documentation (which finds paths) and get_multiple_pages (which handles multiple pages).
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 explicitly states when to use this tool ('Necesitas el path exacto') and when to use an alternative ('Usa search_documentation para encontrarlo'). It provides clear prerequisites and distinguishes this from search tools in the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_type_entriesA
Obtiene entradas filtradas por tipo (class, function, method, module, etc.). Primero usa get_documentation_index para ver los tipos disponibles.
Ejemplos:
tech="python~3.10", entry_type="class" β lista todas las clases
tech="javascript", entry_type="method" β lista todos los mΓ©todos
tech="react", entry_type="hook" β lista todos los hooks
| Name | Required | Description | Default |
|---|---|---|---|
| tech | Yes | Slug de la tecnologΓa | |
| entry_type | Yes | Tipo a filtrar (class, function, method, module, etc.) | |
| limit | No | MΓ‘ximo de resultados (default: 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explains the filtering behavior and provides usage examples, which adds context. However, it doesn't mention important behavioral aspects like pagination (though limit parameter exists), error conditions, or what happens when no matches are found.
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 perfectly structured and concise. It starts with the core purpose, provides a usage prerequisite, then gives concrete examples - each sentence earns its place. No wasted words, and the information is front-loaded appropriately.
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 read-only filtering tool with no output schema and no annotations, the description provides good context about purpose, prerequisites, and usage examples. However, it doesn't describe the return format or structure of results, which would be helpful given the absence of output schema. The examples partially compensate for this gap.
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 100%, so the schema already documents all three parameters thoroughly. The description adds value by providing concrete examples of parameter usage (e.g., 'tech="python~3.10", entry_type="class"'), but doesn't add semantic meaning beyond what the schema provides. Baseline 3 is appropriate when schema does the heavy lifting.
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 clearly states the tool's purpose with a specific verb ('obtiene'/'gets') and resource ('entradas filtradas por tipo'/'entries filtered by type'), and distinguishes it from sibling tools by mentioning the specific filtering capability. It provides concrete examples that illustrate the exact functionality.
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 explicitly states when to use this tool ('para ver los tipos disponibles'/'to see available types') and provides a clear prerequisite: 'Primero usa get_documentation_index' ('First use get_documentation_index'). This gives specific guidance on the proper sequence of operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_documentationsA
Lista todas las documentaciones disponibles en DevDocs. Puedes filtrar por nombre de tecnologΓa.
Ejemplos de uso:
Sin filtro: lista todas las ~600 documentaciones
Con filtro "python": lista Python 2.7, 3.8, 3.9, 3.10, 3.11, 3.12
Con filtro "react": lista React, React Native, React Router, etc.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Filtro opcional por nombre (ej: 'python', 'javascript', 'spring') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It describes the tool's function and provides examples of output (e.g., listing Python versions), but it doesn't mention potential limitations like pagination, rate limits, authentication needs, or what happens when no filter is applied beyond stating it lists '~600 documentaciones'. The examples add some behavioral context but leave gaps.
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 appropriately sized and front-loaded: the first sentence states the core purpose, followed by a brief explanation of filtering, and then three concise usage examples that efficiently demonstrate key scenarios. Every sentence adds clear value without redundancy.
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?
Given the tool's low complexity (1 optional parameter, no output schema, no annotations), the description is somewhat complete but has gaps. It explains what the tool does and provides examples, but lacks details on output format, error handling, or behavioral traits like performance or limitations. For a simple list tool, this is adequate but not comprehensive.
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?
The input schema has 100% description coverage, so the baseline is 3. The description adds value by providing concrete examples of filter usage ('python', 'react') and illustrating the output differences, which enhances understanding beyond the schema's generic description. However, it doesn't explain parameter constraints or edge cases in detail.
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 clearly states the specific action ('Lista todas las documentaciones') and resource ('en DevDocs'), distinguishing it from siblings like search_documentation or get_documentation_index by focusing on listing all available documentations rather than searching or retrieving specific content. The Spanish phrasing is precise and unambiguous.
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 provides clear context for when to use this tool (to list all documentations with optional filtering by technology name) and includes usage examples, but it doesn't explicitly state when not to use it or mention specific alternatives like search_documentation for more complex searches. The examples help illustrate the filtering behavior effectively.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
offline_mode_statusA
Muestra quΓ© documentaciones estΓ‘n disponibles offline (en cachΓ©). Indica quΓ© tecnologΓas tienen el Γndice cacheado y cuΓ‘ntas pΓ‘ginas.
Γtil para saber quΓ© documentaciΓ³n puedes consultar sin conexiΓ³n a internet.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It describes what the tool returns (which technologies have cached indexes and page counts) but doesn't disclose behavioral aspects like whether it requires authentication, has rate limits, or how current the cache status information is. The description adds basic context but lacks operational details.
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 perfectly concise with three sentences that each earn their place: first states the core function, second specifies what information is returned, third provides usage context. No wasted words and front-loaded with the main purpose.
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 zero-parameter tool with no output schema, the description provides good completeness: it explains what the tool does, what information it returns, and when to use it. However, without annotations or output schema, it could benefit from more detail about the return format (e.g., structured data vs plain text) to reach full completeness.
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?
The tool has zero parameters with 100% schema description coverage, so the baseline is 4. The description appropriately doesn't discuss parameters since none exist, and it focuses on what the tool returns instead.
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 clearly states the tool's purpose with specific verbs ('Muestra quΓ© documentaciones estΓ‘n disponibles offline') and resources ('documentaciones', 'tecnologΓas', 'pΓ‘ginas'). It distinguishes from siblings by focusing on cached/offline status rather than searching, listing, or manipulating documentation content.
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 explicitly states when to use this tool: 'Γtil para saber quΓ© documentaciΓ³n puedes consultar sin conexiΓ³n a internet.' This provides clear context about using it to determine offline availability, distinguishing it from siblings that perform operations like clearing cache, exporting, or searching documentation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_across_docsA
Busca un tΓ©rmino en MΓLTIPLES documentaciones a la vez. Γtil cuando no sabes en quΓ© tecnologΓa buscar.
Si no especificas techs, busca en las mΓ‘s populares: JavaScript, Python, React, Node, TypeScript, HTML, CSS, Vue, Angular.
Ejemplos:
query="websocket" β busca en todas las populares
query="async", techs=["python~3.10", "javascript", "rust"] β busca en especΓficas
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | TΓ©rmino de bΓΊsqueda | |
| techs | No | Lista de tecnologΓas donde buscar (opcional) | |
| limit_per_tech | No | MΓ‘ximo de resultados por tecnologΓa (default: 5) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It describes the default behavior (searching popular techs when none specified) and provides examples, which adds useful context. However, it doesn't disclose important behavioral traits like rate limits, authentication needs, response format, or pagination behavior. For a search tool with no annotations, this leaves significant gaps in understanding how the tool behaves.
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 perfectly structured and concise. It starts with the core purpose, immediately provides usage guidance, explains default behavior, and gives practical examples. Every sentence earns its place with no wasted words. The information is front-loaded with the most important details first.
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?
Given the tool's moderate complexity (cross-documentation search), no annotations, and no output schema, the description is incomplete. While it covers purpose and usage well, it lacks information about the response format, result structure, error conditions, or performance characteristics. For a tool that searches across multiple documentations, the agent needs more context about what to expect in return.
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?
The schema description coverage is 100%, so the baseline is 3. The description adds significant value beyond the schema by explaining the default behavior when techs aren't specified (searches popular technologies) and providing concrete examples showing parameter usage. It clarifies that 'techs' is optional and shows the syntax for specific tech versions ('python~3.10'). This elevates the score above the baseline.
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 clearly states the tool's purpose: searching for a term across multiple documentations simultaneously. It specifies the verb 'busca' (search) and the resource 'MΓLTIPLES documentaciones', distinguishing it from sibling tools like 'search_documentation' which likely searches within a single documentation. The description explicitly mentions this is useful when you don't know which technology to search in.
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 provides explicit guidance on when to use this tool: when you don't know which technology to search in. It also specifies what happens when you don't provide techs (searches in popular technologies) and gives concrete examples showing both default and specific usage scenarios. This clearly differentiates it from alternatives like 'search_documentation'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_documentationA
Busca dentro del Γndice de una documentaciΓ³n especΓfica. Γtil para encontrar clases, funciones, mΓ©todos, mΓ³dulos, etc.
IMPORTANTE: Primero debes saber el slug exacto de la documentaciΓ³n. Usa list_documentations para encontrarlo.
Ejemplos:
tech="python~3.10", query="asyncio" β encuentra mΓ³dulo asyncio
tech="spring_boot", query="actuator" β encuentra docs de actuator
tech="javascript", query="Promise" β encuentra Promise API
| Name | Required | Description | Default |
|---|---|---|---|
| tech | Yes | Slug de la tecnologΓa (ej: 'python~3.10', 'spring_boot', 'javascript') | |
| query | Yes | TΓ©rmino de bΓΊsqueda | |
| limit | No | MΓ‘ximo de resultados (default: 20) |
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 mentions the tool is 'Γtil para encontrar' items, implying it's a read-only search operation, but doesn't explicitly state it's non-destructive or safe. It doesn't disclose behavioral traits like rate limits, authentication needs, or what happens with invalid inputs. The description adds some context about requiring exact slugs but lacks comprehensive behavioral disclosure.
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 appropriately sized and front-loaded with the core purpose. The IMPORTANTE section efficiently handles prerequisites, and examples are relevant. However, the Spanish language might add slight cognitive load for non-Spanish agents, and the structure could be slightly tighter (e.g., combining the first two lines).
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?
Given no annotations and no output schema, the description is moderately complete. It covers purpose, prerequisites, and examples but lacks details about return format, error handling, or pagination (implied by 'limit' parameter). For a search tool with 3 parameters and no structured output documentation, it should provide more about what results look like or how they're structured.
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 100%, providing good documentation for all three parameters. The description adds minimal value beyond the schema: it reinforces that 'tech' requires an exact slug (implied in schema's examples) and provides example queries, but doesn't explain parameter interactions or search semantics (e.g., how 'query' matches text). Baseline 3 is appropriate since the schema does most of the work.
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 clearly states the tool searches within a specific documentation index and provides examples of what it finds (classes, functions, methods, modules). It distinguishes from siblings like 'search_across_docs' by specifying it searches within a single documentation index rather than across multiple. However, it doesn't explicitly contrast with 'get_documentation_index' which might retrieve the index itself rather than search within it.
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 explicitly states when to use this tool: 'Primero debes saber el slug exacto de la documentaciΓ³n. Usa list_documentations para encontrarlo.' It provides a clear prerequisite and directs to a specific alternative tool (list_documentations) for obtaining required information. The examples also illustrate appropriate use cases.
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. Dates show when Glama detected each change.
12 tool updates
- First observed
clear_cache - First observed
export_documentation - First observed
get_cache_stats - First observed
get_documentation_index - First observed
get_examples - First observed
get_multiple_pages - First observed
get_page_content - First observed
get_type_entries - First observed
list_documentations - First observed
offline_mode_status - First observed
search_across_docs - First observed
search_documentation
TDQS
Most tools have distinct purposes, but some overlap exists: get_page_content and get_multiple_pages both retrieve documentation content, and search_documentation and search_across_docs both handle searching, though with different scopes. The descriptions clarify the differences, but an agent might occasionally misselect between these pairs.
All tool names follow a consistent snake_case pattern with clear verb_noun structures (e.g., clear_cache, get_page_content, search_documentation). The naming is predictable and uniform throughout the set, making it easy for agents to understand and use.
With 12 tools, the server is well-scoped for managing DevDocs documentation. The count is reasonable, covering key operations like listing, searching, retrieving, exporting, and caching without being overwhelming or insufficient for the domain.
The tool set provides comprehensive coverage for documentation access, including listing, searching, retrieving, exporting, and caching. A minor gap is the lack of tools for updating or deleting cached documentation, but core workflows are fully supported, and agents can work around this with existing tools like clear_cache.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Provide your AI coding tools with token-efficient access to up-to-date technical documentation forβ¦
The documentation, as a tool your agent can call: 950+ AI-dev guides. Search + fetch tools.
Versioned documentation registry and semantic search for AI tools and coding assistants.
DevDocs.io keyless docs index + entry search + content (Angular, MDN, Rust, etc.).
Related MCP Servers
- FlicenseAqualityDmaintenanceProvides access to 600+ documentation libraries from DevDocs.io including Python, JavaScript, React, Django, and more. Enables searching, browsing, and retrieving documentation content directly through Claude Desktop.55-
- AlicenseNot gradedqualityCmaintenanceProvides AI assistants with instant access to local Dash documentation docsets and cheatsheets, enabling offline documentation searches across 165+ programming languages, frameworks, and developer tools directly within conversations.9MIT
- FlicenseNot gradedqualityDmaintenanceProvides real-time retrieval of official documentation for LangChain, LlamaIndex, and OpenAI. It enables context-aware coding by fetching the latest API references and guides directly into Claude via the Model Context Protocol.-
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants like Claude to search and retrieve technical documentation from a local DevDocs instance for hundreds of programming languages and frameworks.1MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/JavierDevCol/devdocs-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server