Rust Docs Server

Obtiene documentación de crates de Rust desde docs.rs usando la API JSON de rustdoc.

Documentación

Servidor MCP de Docs.rs

License: Apache 2.0

Un servidor de Model Context Protocol (MCP) para obtener documentación de crates de Rust desde docs.rs

Características • Primeros pasos • Herramientas • Contribuciones • Agradecimientos • Licencia

Características

  • Encontrar nuevos crates - Busca crates por nombre exacto, coincidencia parcial o consulta difusa para descubrir bibliotecas relevantes
  • Inspeccionar símbolos de crates - Inspecciona structs, traits, funciones y cualquier otro símbolo dentro de un crate
  • Revisar resúmenes de crates - Obtén una vista general del crate con su estructura y superficie de API pública
  • Leer documentación completa - Lee documentación a nivel de crate

Primeros pasos

Usando ejecutables precompilados

Descarga la última versión para tu plataforma desde la página de Lanzamientos:

Linux

  • x64/AMD64 (GLIBC): mcp-docsrs-linux-x64 - Para Ubuntu, Debian, Fedora, etc.
  • ARM64 (GLIBC): mcp-docsrs-linux-arm64 - Para sistemas ARM64, AWS Graviton
  • x64/AMD64 (MUSL): mcp-docsrs-linux-x64-musl - Para Alpine Linux, contenedores Docker (requiere libstdc++)
  • ARM64 (MUSL): mcp-docsrs-linux-arm64-musl - Para Alpine en ARM64, contenedores mínimos (requiere libstdc++)

macOS

  • Intel: mcp-docsrs-darwin-x64 - Para Macs con procesador Intel
  • Apple Silicon: mcp-docsrs-darwin-arm64 - Para Macs con procesador M-series

Windows

  • x64: mcp-docsrs-windows-x64.exe - Para Windows de 64 bits

Usando Docker

Extrae y ejecuta la imagen multi-arquitectura más reciente (compatible con x64 y ARM64):

# Pull the latest image
docker pull ghcr.io/vexxvakan/mcp-docsrs:latest

# Run the server
docker run --rm -i ghcr.io/vexxvakan/mcp-docsrs:latest

# Run with custom configuration
docker run --rm -i ghcr.io/vexxvakan/mcp-docsrs:latest \
  --cache-ttl 7200000 --max-cache-size 200

Etiquetas disponibles:

  • latest - Última versión estable (multi-arquitectura)
  • v1.0.0 - Versión específica (multi-arquitectura)

Configuración de MCP

ClienteComando
Codexcodex mcp add docsrs -- path/to/mcp-docsrs
Claude Codeclaude mcp add --transport stdio docsrs -- path/to/mcp-docsrs
Gemini CLIgemini mcp add -s user docsrs path/to/mcp-docsrs
OpenCodeEjecuta opencode mcp add, elige un servidor MCP local y luego apúntalo a path/to/mcp-docsrs.
VS CodeAbre la Paleta de Comandos (Cmd/Ctrl+Shift+P) → MCP: Add Server → elige Workspace o User → Command (stdio) → introduce path/to/mcp-docsrs.
CursorAbre Configuración (Cmd/Ctrl+Shift+J) → Tools & Integrations → New MCP Server → elige un servidor local/stdio → introduce path/to/mcp-docsrs.

Después de añadir el servidor, reinicia el cliente si no descubre las herramientas inmediatamente.

Configuración

Configura el servidor usando variables de entorno o argumentos de línea de comandos:

VariableIndicador CLIPredeterminadoDescripción
CACHE_TTL--cache-ttl3600000Tiempo de vida de caché en milisegundos
MAX_CACHE_SIZE--max-cache-size100Número máximo de entradas en caché
REQUEST_TIMEOUT--request-timeout30000Tiempo de espera de solicitudes HTTP en milisegundos
DB_PATH--db-path:memory:Ruta al archivo de base de datos SQLite

Herramientas

El servidor expone cuatro herramientas MCP:

Crate

crate_lookup

Recupera una vista general del crate con su estructura y superficie de API pública desde docs.rs.

ParámetroTipoRequeridoDescripción
crateNamestringSíNombre del crate de Rust a inspeccionar
versionstringNoVersión específica o rango semver, por ejemplo "1.0.0" o "~4"
targetstringNoPlataforma objetivo, por ejemplo "i686-pc-windows-msvc"
formatVersionnumberNoVersión del formato JSON de Rustdoc
{
  "tool": "crate_lookup",
  "arguments": {
    "crateName": "tokio",
    "version": "1.48.0"
  }
}

crate_docs

Recupera la página de documentación a nivel de crate desde docs.rs.

ParámetroTipoRequeridoDescripción
crateNamestringSíNombre del crate de Rust a inspeccionar
versionstringNoVersión específica o rango semver, por ejemplo "1.0.0" o "~4"
targetstringNoPlataforma objetivo, por ejemplo "i686-pc-windows-msvc"
formatVersionnumberNoVersión del formato JSON de Rustdoc
{
  "tool": "crate_docs",
  "arguments": {
    "crateName": "serde"
  }
}

crate_find

Busca en crates.io crates coincidentes y devuelve resultados clasificados usando coincidencia difusa y parcial de nombres.

ParámetroTipoRequeridoDescripción
querystringSíConsulta de búsqueda para nombres de crates
limitnumberNoNúmero máximo de resultados a devolver. Predeterminado a 10
{
  "tool": "crate_find",
  "arguments": {
    "query": "rustdoc json",
    "limit": 5
  }
}

Symbol

symbol_lookup

Recupera metadatos estructurados de símbolo para un símbolo dentro de un crate.

ParámetroTipoRequeridoDescripción
crateNamestringSíNombre del crate de Rust
symbolTypestringSíTipo de símbolo de Rustdoc, por ejemplo "struct", "function" o "trait"
symbolnamestringSíNombre o ruta del símbolo, por ejemplo "runtime::Runtime" o "spawn"
versionstringNoVersión específica o rango semver
targetstringNoPlataforma objetivo
{
  "tool": "symbol_lookup",
  "arguments": {
    "crateName": "tokio",
    "symbolType": "struct",
    "symbolname": "runtime::Runtime"
  }
}

symbol_docs

Recupera el cuerpo completo de documentación para un símbolo dentro de un crate.

ParámetroTipoRequeridoDescripción
crateNamestringSíNombre del crate de Rust
symbolTypestringSíTipo de símbolo de Rustdoc, por ejemplo "struct", "function" o "trait"
symbolnamestringSíNombre o ruta del símbolo, por ejemplo "runtime::Runtime" o "spawn"
versionstringNoVersión específica o rango semver
targetstringNoPlataforma objetivo
{
  "tool": "symbol_docs",
  "arguments": {
    "crateName": "tokio",
    "symbolType": "struct",
    "symbolname": "runtime::Runtime"
  }
}

Contribuciones

Agradecimientos

  • docs.rs por proporcionar la API de documentación de Rust
  • Model Context Protocol por la especificación de MCP
  • La comunidad de Rust por sus excelentes estándares de documentación

Licencia

Este proyecto está licenciado bajo la Licencia Apache 2.0. Consulta LICENSE para el texto de la licencia y NOTICE para detalles de atribución.


Hecho con ❤️ para la comunidad de Rust

Reportar error • Solicitar función