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).
Características
Soporte multilingüe :
Paquetes Go a través de
go docBibliotecas 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-docsInstalació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 claudeUso
Como servidor MCP
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
}
}
}
}La funcionalidad LSP incluye configuraciones predeterminadas para servidores de lenguaje comunes:
TypeScript/JavaScript:
typescript-language-server --stdioHTML:
vscode-html-language-server --stdioCSS:
vscode-css-language-server --stdioJSON:
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\"]}"
}
}
}
}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 typescriptHTML/CSS/JSON:
npm install -g vscode-langservers-extracted
Desarrollo
# Install dependencies
npm i
# Build
npm run build
# Watch mode
npm run watchContribuyendo
Bifurcar el repositorio
Crea tu rama de funciones (
git checkout -b feature/amazing-feature)Confirme sus cambios (
git commit -m 'Add some amazing feature')Empujar a la rama (
git push origin feature/amazing-feature)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.