软件包文档
STDIO为LLM提供多语言包文档访问服务
为LLM提供多语言包文档访问服务
An MCP (Model Context Protocol) server that provides LLMs with efficient access to package documentation across multiple programming languages and language server protocol (LSP) capabilities.
Multi-Language Support:
go doc
help()
Smart Documentation Parsing:
Advanced Search Features:
Language Server Protocol (LSP) Support:
Performance Optimised:
npx -y mcp-package-docs
To install Package Docs for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install mcp-package-docs --client claude
{ "mcpServers": { "package-docs": { "command": "npx", "args": ["-y", "mcp-package-docs"], "env": { "ENABLE_LSP": "true" // Optional: Enable Language Server Protocol support } } } }
typescript-language-server --stdio
vscode-html-language-server --stdio
vscode-css-language-server --stdio
vscode-json-language-server --stdio
You can override these defaults if needed:
{ "mcpServers": { "package-docs": { "command": "npx", "args": ["-y", "mcp-package-docs"], "env": { "ENABLE_LSP": "true", "TYPESCRIPT_SERVER": "{\"command\":\"/custom/path/typescript-language-server\",\"args\":[\"--stdio\"]}" } } } }
Fetches Go package documentation
{ "name": "describe_go_package", "arguments": { "package": "encoding/json", // required "symbol": "Marshal" // optional } }
Fetches Python package documentation
{ "name": "describe_python_package", "arguments": { "package": "requests", // required "symbol": "get" // optional } }
Fetches Rust crate documentation from crates.io and docs.rs
{ "name": "describe_rust_package", "arguments": { "package": "serde", // required: crate name "version": "1.0.219" // optional: specific version } }
Search within package documentation
{ "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) } }
Fetches NPM package documentation from both public and private registries. Automatically uses the appropriate registry based on your .npmrc configuration.
{ "name": "describe_npm_package", "arguments": { "package": "axios", // required - supports both scoped (@org/pkg) and unscoped packages "version": "1.6.0" // optional } }
The tool reads your ~/.npmrc file to determine the correct registry for each package:
Example .npmrc configurations:
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/
When LSP support is enabled, the following additional tools become available:
Get hover information for a position in a document
{ "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 } }
Get completion suggestions for a position in a document
{ "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 } }
Get diagnostic information (errors, warnings) for a document
{ "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 } }
// 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 } });
npm install -g typescript-language-server typescript
npm install -g vscode-langservers-extracted
# Install dependencies npm i # Build npm run build # Watch mode npm run watch
git checkout -b feature/amazing-feature
)git commit -m 'Add some amazing feature'
)git push origin feature/amazing-feature
)This project is licensed under the MIT License - see the LICENSE file for details.