Package Docs

Package Docs

sammcj

Provides LLMs with cached access to package documentation across NPM, Go, Python, and Rust ecosystems with smart parsing and search capabilities.

Provides efficient access to NPM/Go/Python package documentation through smart parsing and caching, enabling quick retrieval of up-to-date library information.

803,230 views20Local (stdio)

What it does

  • Query NPM package documentation
  • Access Go package docs via go doc
  • Retrieve Python library help information
  • Search Rust crate documentation
  • Parse code symbols and functions
  • Search within documentation with fuzzy matching

Best for

Developers needing quick package referenceCode review and documentation lookupMulti-language project developmentPackage evaluation and comparison
Built-in caching for performanceMulti-language support (Go, Python, NPM, Rust)Smart parsing avoids context overload

About Package Docs

Package Docs is a community-built MCP server published by sammcj that provides AI assistants with tools and capabilities via the Model Context Protocol. Access up-to-date library info for NPM, Go & Python with Package Docs. Quickly find docs for python requests & npm cmd; It is categorized under developer tools.

How to install

You can install Package Docs in your AI client of choice. Use the install panel on this page to get one-click setup for Cursor, Claude Desktop, VS Code, and other MCP-compatible clients. This server runs locally on your machine via the stdio transport.

License

Package Docs is released under the MIT license. This is a permissive open-source license, meaning you can freely use, modify, and distribute the software.

Package Documentation MCP Server

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.

Note: I am not actively maintaining the codebase at present. While it doesn't provide access to private package documentation - the Context7 MCP server and service meets my needs which are mostly for public package documentation. I personally use Context7 via my mcp-devtools MCP server which is actively maintained.

Features

  • Multi-Language Support:

    • Go packages via go doc
    • Python libraries via built-in help()
    • NPM packages via registry documentation (including private registries)
    • Rust crates via crates.io and docs.rs
  • 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
  • Language Server Protocol (LSP) Support:

    • Hover information for code symbols
    • Code completions
    • Diagnostics (errors and warnings)
    • Currently supports TypeScript/JavaScript
    • Extensible for other languages
  • Performance Optimised:

    • Built-in caching
    • Efficient parsing
    • Minimal memory footprint

Installation

Note: I do not recommend using npx -y to run your MCP servers in production as you're esentially trusting whatever package you're downloading off the internet at that moment in time. I highly recommend cloning the repository locally or building into a container image.

npx -y mcp-package-docs

Usage

As an MCP Server

  1. Add to your MCP settings configuration:
{
  "mcpServers": {
    "package-docs": {
      "command": "npx",
      "args": ["-y", "mcp-package-docs"],
      "env": {
        "ENABLE_LSP": "true" // Optional: Enable Language Server Protocol support
      }
    }
  }
}
  1. The LSP functionality includes default configurations for common language servers:
  • TypeScript/JavaScript: typescript-language-server --stdio
  • HTML: vscode-html-language-server --stdio
  • CSS: vscode-css-language-server --stdio
  • JSON: 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\"]}"
      }
    }
  }
}
  1. The server provides the following tools:

lookup_go_doc / describe_go_package

Fetches Go package documentation

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

lookup_python_doc / describe_python_package

Fetches Python package documentation

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

describe_rust_package

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_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", "npm", "swift", or "rust"
    "fuzzy": true            // optional: enable fuzzy matching (default: true)
  }
}

lookup_npm_doc / describe_npm_package

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:

  • 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/

Language Server Protocol (LSP) Tools

When LSP support is enabled, the following additional tools become available:

get_hover

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_completions

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_diagnostics

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
  }
}

Example Usage in an LLM

Looking up Documentation

// 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
  }
});

Requirements

  • Node.js >= 20
  • Go (for Go package documentation)
  • Python 3 (for Python package documentation)
  • Internet connection (for NPM package documentation and Rust crate documentation)
  • Language servers (for LSP functionality):
    • TypeScript/JavaScript: npm install -g typescript-language-server typescript
    • HTML/CSS/JSON: npm install -g vscode-langservers-extracted

Development

# Install dependencies
npm i

# Build
npm run build

# Watch mode
npm run watch

Contributing

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Alternatives

Related Skills

Browse all skills
api-documenter

Master API documentation with OpenAPI 3.1, AI-powered tools, and modern developer experience practices. Create interactive docs, generate SDKs, and build comprehensive developer portals. Use PROACTIVELY for API documentation or developer portal creation.

4
openai-knowledge

Use when working with the OpenAI API (Responses API) or OpenAI platform features (tools, streaming, Realtime API, auth, models, rate limits, MCP) and you need authoritative, up-to-date documentation (schemas, examples, limits, edge cases). Prefer the OpenAI Developer Documentation MCP server tools when available; otherwise guide the user to enable `openaiDeveloperDocs`.

4
ui-design-system

UI design system toolkit for Senior UI Designer including design token generation, component documentation, responsive design calculations, and developer handoff tools. Use for creating design systems, maintaining visual consistency, and facilitating design-dev collaboration.

18
smithery-mcp-deployment

Best practices for creating, optimizing, and deploying MCP servers to Smithery. Use this skill when:(1) Creating new MCP servers for Smithery deployment(2) Optimizing quality scores (achieving 90/100)(3) Troubleshooting deployment issues (0/0 tools, missing annotations, low scores)(4) Migrating existing MCP servers to Smithery format(5) Understanding Smithery's schema format requirements(6) Adding workflow prompts, tool annotations, or documentation resources(7) Configuring smithery.yaml and package.json for deployment

7
python-packaging

Create distributable Python packages with proper project structure, setup.py/pyproject.toml, and publishing to PyPI. Use when packaging Python libraries, creating CLI tools, or distributing Python code.

6
add-neon-docs

Use this skill when the user asks to add documentation, add docs, add references, or install documentation about Neon. Adds Neon best practices reference links to project AI documentation (CLAUDE.md, AGENTS.md, or Cursor rules). Does not install packages or modify code.

6