@jankowtf/mcp-package-docs v0.1.19
Package Documentation MCP Server
An MCP (Model Context Protocol) server that provides LLMs with efficient access to package documentation across multiple programming languages.
Features
Multi-Language Support:
- Go packages via
go doc
- Python libraries via built-in
help()
- NPM packages via registry documentation (including private registries)
- Go packages via
Smart Documentation Parsing:
- Structured output with description, usage, and examples
- Focused information to avoid context overload
- Support for specific symbol/function lookups
- Fuzzy and exact search capabilities across documentation
Advanced Search Features:
- Search within package documentation
- Fuzzy matching for flexible queries
- Context-aware results with relevance scoring
- Symbol extraction from search results
Performance Optimised:
- Built-in caching
- Efficient parsing
- Minimal memory footprint
Installation
npx -y mcp-package-docs
Installing via Smithery
To install Package Docs for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install mcp-package-docs --client claude
Usage
As an MCP Server
- Add to your MCP settings configuration:
{
"mcpServers": {
"package-docs": {
"command": "npx",
"args": ["-y", "mcp-package-docs"]
}
}
}
- The server provides the following tools:
lookup_go_doc
Fetches Go package documentation
{
"name": "lookup_go_doc",
"arguments": {
"package": "encoding/json", // required
"symbol": "Marshal" // optional
}
}
lookup_python_doc
Fetches Python package documentation
{
"name": "lookup_python_doc",
"arguments": {
"package": "requests", // required
"symbol": "get" // optional
}
}
search_package_docs
Search within package documentation
{
"name": "search_package_docs",
"arguments": {
"package": "requests", // required: package name
"query": "authentication", // required: search query
"language": "python", // required: "go", "python", or "npm"
"fuzzy": true // optional: enable fuzzy matching (default: true)
}
}
lookup_npm_doc
Fetches NPM package documentation from both public and private registries. Automatically uses the appropriate registry based on your .npmrc configuration.
{
"name": "lookup_npm_doc",
"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:
- Uses scoped registry configurations (e.g., @mycompany:registry=...)
- Supports private registries (GitHub Packages, GitLab, Nexus, Artifactory, etc.)
- Falls back to the default npm registry if no custom registry is configured
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/
Example Usage in an LLM
Looking up Documentation
// Looking up documentation
const docResult = await use_mcp_tool({
server_name: "package-docs",
tool_name: "lookup_python_doc",
arguments: {
package: "requests",
symbol: "post"
}
});
// Searching within documentation
const searchResult = await use_mcp_tool({
server_name: "package-docs",
tool_name: "search_package_docs",
arguments: {
package: "requests",
query: "authentication headers",
language: "python",
fuzzy: true
}
});
Requirements
- Node.js >= 20
- Go (for Go package documentation)
- Python 3 (for Python package documentation)
- Internet connection (for NPM package documentation)
Development
# Install dependencies
npm i
# Build
npm run build
# Watch mode
npm run watch
Contributing
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
License
This project is licensed under the MIT License - see the LICENSE file for details.