MCP server
by sammcj
Access up-to-date library info for NPM, Go & Python with Package Docs. Quickly find docs for python requests & npm cmd;
Provides LLMs with cached access to package documentation across NPM, Go, Python, and Rust ecosystems with smart parsing and search capabilities.
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.
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.
MIT
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.
Add new capabilities to Claude beyond text generation
Example
Access external data sources, execute code, interact with tools and services
Transform Claude from chatbot to action-taking agent
Provide Claude with access to relevant context and data
Example
Load project documentation, access knowledge bases, query databases
Get more accurate, context-aware responses
Automate multi-step workflows combining AI and external tools
Example
Research → Summarize → Create document → Send notification
Complete complex tasks end-to-end without manual steps
Share your MCP server with the developer community
Package Docs has been reliable for tool-calling workflows; the MCP profile page is a good permalink for internal docs.
According to our notes, Package Docs benefits from clear Model Context Protocol framing — fewer ambiguous “AI plugin” claims.
Package Docs is a well-scoped MCP server in the explainx.ai directory — install snippets and categories matched our Claude Code setup.
We wired Package Docs into a staging workspace; the listing’s GitHub and npm pointers saved time versus hunting across READMEs.
Package Docs reduced integration guesswork — categories and install configs on the listing matched the upstream repo.
I recommend Package Docs for teams standardizing on MCP; the explainx.ai page compares cleanly with sibling servers.
We evaluated Package Docs against two servers with overlapping tools; this profile had the clearer scope statement.
Package Docs reduced integration guesswork — categories and install configs on the listing matched the upstream repo.
We wired Package Docs into a staging workspace; the listing’s GitHub and npm pointers saved time versus hunting across READMEs.
Package Docs is a well-scoped MCP server in the explainx.ai directory — install snippets and categories matched our Claude Code setup.
showing 1-10 of 43
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.
Multi-Language Support:
go dochelp()Smart Documentation Parsing:
Advanced Search Features:
Language Server Protocol (LSP) Support:
Performance Optimised:
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
{
"mcpServers": {
"package-docs": {
"command": "npx",
"args": ["-y", "mcp-package-docs"],
"env": {
"ENABLE_LSP": "true" // Optional: Enable Language Server Protocol support
}
}
}
}
typescript-language-server --stdiovscode-html-language-server --stdiovscode-css-language-server --stdiovscode-json-language-server --stdioYou 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');
axios.get",
line: 1,
character: 7
}
});
npm install -g typescript-language-server typescriptnpm 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.
Prerequisites
Time Estimate
15-60 minutes depending on server complexity
Steps
Troubleshooting
✓ Do
✗ Don't
💡 Pro Tips
Architecture
Model Context Protocol standardizes how AI hosts (Claude, Cursor) communicate with external tools and data sources through server implementations.
Protocols
Compatibility
✓ Use when
Use when you need Claude to access external data, execute actions, or integrate with tools. Best for extending AI capabilities beyond conversation.
✗ Avoid when
Avoid when native integrations exist (use official APIs directly), for real-time critical systems, or when security/compliance requires zero external dependencies.