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
π€ ΒΏ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
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
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