Skip to main content
Glama
sammcj
by sammcj

Documentación del paquete MCP Server

Un servidor MCP (Protocolo de contexto de modelo) que proporciona a los LLM un acceso eficiente a la documentación de paquetes en múltiples lenguajes de programación y capacidades de protocolo de servidor de lenguaje (LSP).

insignia de herrería

Características

  • Soporte multilingüe :

    • Paquetes Go a través de go doc

    • Bibliotecas de Python a través de help()

    • Paquetes NPM a través de documentación de registro (incluidos registros privados)

    • Cajas de Rust a través de crates.io y docs.rs

  • Análisis inteligente de documentación :

    • Salida estructurada con descripción, uso y ejemplos

    • Información enfocada para evitar la sobrecarga de contexto

    • Soporte para búsquedas de símbolos/funciones específicas

    • Capacidades de búsqueda exacta y difusa en toda la documentación

  • Funciones de búsqueda avanzada :

    • Buscar dentro de la documentación del paquete

    • Coincidencia difusa para consultas flexibles

    • Resultados sensibles al contexto con puntuación de relevancia

    • Extracción de símbolos de los resultados de búsqueda

  • Compatibilidad con el Protocolo de servidor de lenguaje (LSP) :

    • Información sobre los símbolos de código al pasar el cursor

    • Finalizaciones de código

    • Diagnósticos (errores y advertencias)

    • Actualmente es compatible con TypeScript/JavaScript

    • Extensible para otros idiomas

  • Rendimiento optimizado :

    • Almacenamiento en caché integrado

    • Análisis eficiente

    • Huella mínima de memoria

Related MCP server: DocsFetcher MCP Server

Instalación

npx -y mcp-package-docs

Instalación mediante herrería

Para instalar automáticamente Package Docs para Claude Desktop a través de Smithery :

npx -y @smithery/cli install mcp-package-docs --client claude

Uso

Como servidor MCP

  1. Añade a tu configuración de MCP:

{
  "mcpServers": {
    "package-docs": {
      "command": "npx",
      "args": ["-y", "mcp-package-docs"],
      "env": {
        "ENABLE_LSP": "true" // Optional: Enable Language Server Protocol support
      }
    }
  }
}
  1. La funcionalidad LSP incluye configuraciones predeterminadas para servidores de lenguaje comunes:

  • TypeScript/JavaScript: typescript-language-server --stdio

  • HTML: vscode-html-language-server --stdio

  • CSS: vscode-css-language-server --stdio

  • JSON: vscode-json-language-server --stdio

Puede anular estos valores predeterminados si es necesario:

{
  "mcpServers": {
    "package-docs": {
      "command": "npx",
      "args": ["-y", "mcp-package-docs"],
      "env": {
        "ENABLE_LSP": "true",
        "TYPESCRIPT_SERVER": "{\"command\":\"/custom/path/typescript-language-server\",\"args\":[\"--stdio\"]}"
      }
    }
  }
}
  1. El servidor proporciona las siguientes herramientas:

buscar_documento_go / describir_paquete_go

Obtiene la documentación del paquete Go

{
  "name": "describe_go_package",
  "arguments": {
    "package": "encoding/json", // required
    "symbol": "Marshal"        // optional
  }
}

buscar_doc_python / describir_paquete_python

Obtiene la documentación del paquete de Python

{
  "name": "describe_python_package",
  "arguments": {
    "package": "requests",    // required
    "symbol": "get"          // optional
  }
}

describe_rust_package

Obtiene la documentación de las cajas de Rust desde crates.io y docs.rs

{
  "name": "describe_rust_package",
  "arguments": {
    "package": "serde",      // required: crate name
    "version": "1.0.219"     // optional: specific version
  }
}

buscar_documentos_del_paquete

Buscar dentro de la documentación del paquete

{
  "name": "search_package_docs",
  "arguments": {
    "package": "requests",    // required: package name
    "query": "authentication", // required: search query
    "language": "python",     // required: "go", "python", "npm", "swift", or "rust"
    "fuzzy": true            // optional: enable fuzzy matching (default: true)
  }
}

buscar_doc_npm / describir_paquete_npm

Obtiene la documentación de paquetes NPM de registros públicos y privados. Utiliza automáticamente el registro apropiado según la configuración de .npmrc.

{
  "name": "describe_npm_package",
  "arguments": {
    "package": "axios",      // required - supports both scoped (@org/pkg) and unscoped packages
    "version": "1.6.0"       // optional
  }
}

La herramienta lee su archivo ~/.npmrc para determinar el registro correcto para cada paquete:

  • Utiliza configuraciones de registro con alcance (por ejemplo, @mycompany:registry=...)

  • Admite registros privados (paquetes de GitHub, GitLab, Nexus, Artifactory, etc.)

  • Vuelve al registro npm predeterminado si no se configura ningún registro personalizado

Ejemplo de configuraciones .npmrc:

registry=https://nexus.mycompany.com/repository/npm-group/
@mycompany:registry=https://nexus.mycompany.com/repository/npm-private/
@mycompany-ct:registry=https://npm.pkg.github.com/

Herramientas del Protocolo de Servidor de Lenguaje (LSP)

Cuando se habilita la compatibilidad con LSP, las siguientes herramientas adicionales están disponibles:

obtener_hover

Obtener información al pasar el cursor sobre una posición en un documento

{
  "name": "get_hover",
  "arguments": {
    "languageId": "typescript", // required: language identifier (e.g., "typescript", "javascript")
    "filePath": "src/index.ts", // required: path to the source file
    "content": "const x = 1;",  // required: content of the file
    "line": 0,                  // required: zero-based line number
    "character": 6,             // required: zero-based character position
    "projectRoot": "/path/to/project" // optional: project root directory
  }
}

obtener_completaciones

Obtener sugerencias para completar una posición en un documento

{
  "name": "get_completions",
  "arguments": {
    "languageId": "typescript", // required: language identifier
    "filePath": "src/index.ts", // required: path to the source file
    "content": "const arr = []; arr.",  // required: content of the file
    "line": 0,                  // required: zero-based line number
    "character": 16,            // required: zero-based character position
    "projectRoot": "/path/to/project" // optional: project root directory
  }
}

obtener_diagnósticos

Obtener información de diagnóstico (errores, advertencias) de un documento

{
  "name": "get_diagnostics",
  "arguments": {
    "languageId": "typescript", // required: language identifier
    "filePath": "src/index.ts", // required: path to the source file
    "content": "const x: string = 1;",  // required: content of the file
    "projectRoot": "/path/to/project" // optional: project root directory
  }
}

Ejemplo de uso en un LLM

Buscando documentación

// Looking up Go documentation
const goDocResult = await use_mcp_tool({
  server_name: "package-docs",
  tool_name: "describe_go_package",
  arguments: {
    package: "encoding/json",
    symbol: "Marshal"
  }
});

// Looking up Python documentation
const pythonDocResult = await use_mcp_tool({
  server_name: "package-docs",
  tool_name: "describe_python_package",
  arguments: {
    package: "requests",
    symbol: "post"
  }
});

// Looking up Rust documentation
const rustDocResult = await use_mcp_tool({
  server_name: "package-docs",
  tool_name: "describe_rust_package",
  arguments: {
    package: "serde"
  }
});

// Searching within documentation
const searchResult = await use_mcp_tool({
  server_name: "package-docs",
  tool_name: "search_package_docs",
  arguments: {
    package: "serde",
    query: "serialize",
    language: "rust",
    fuzzy: true
  }
});

// Using LSP for hover information (when LSP is enabled)
const hoverResult = await use_mcp_tool({
  server_name: "package-docs",
  tool_name: "get_hover",
  arguments: {
    languageId: "typescript",
    filePath: "src/index.ts",
    content: "const axios = require('axios');\naxios.get",
    line: 1,
    character: 7
  }
});

Requisitos

  • Node.js >= 20

  • Go (para la documentación del paquete Go)

  • Python 3 (para la documentación del paquete Python)

  • Conexión a Internet (para la documentación del paquete NPM y la documentación del paquete Rust)

  • Servidores de idioma (para funcionalidad LSP):

    • TypeScript/JavaScript: npm install -g typescript-language-server typescript

    • HTML/CSS/JSON: npm install -g vscode-langservers-extracted

Desarrollo

# Install dependencies
npm i

# Build
npm run build

# Watch mode
npm run watch

Contribuyendo

  1. Bifurcar el repositorio

  2. Crea tu rama de funciones ( git checkout -b feature/amazing-feature )

  3. Confirme sus cambios ( git commit -m 'Add some amazing feature' )

  4. Empujar a la rama ( git push origin feature/amazing-feature )

  5. Abrir una solicitud de extracción

Licencia

Este proyecto está licenciado bajo la licencia MIT: consulte el archivo de LICENCIA para obtener más detalles.

-
security - not tested
A
license - permissive license
-
quality - not tested

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/sammcj/mcp-package-docs'

If you have feedback or need assistance with the MCP directory API, please join our Discord server