一个 MCP(模型上下文协议)服务器,为大型语言模型(LLMs)提供跨多种编程语言的高效包文档访问,并支持语言服务器协议(LSP)功能。
多语言支持:
go doc
支持 Go 包help()
支持 Python 库智能文档解析:
高级搜索功能:
语言服务器协议(LSP)支持:
性能优化:
npx -y mcp-package-docs
通过 Smithery 自动为 Claude Desktop 安装包文档:
npx -y @smithery/cli install mcp-package-docs --client claude
{
"mcpServers": {
"package-docs": {
"command": "npx",
"args": ["-y", "mcp-package-docs"],
"env": {
"ENABLE_LSP": "true" // 可选:启用语言服务器协议支持
}
}
}
}

typescript-language-server --stdio
vscode-html-language-server --stdio
vscode-css-language-server --stdio
vscode-json-language-server --stdio
如果需要,可以覆盖这些默认值:
{
"mcpServers": {
"package-docs": {
"command": "npx",
"args": ["-y", "mcp-package-docs"],
"env": {
"ENABLE_LSP": "true",
"TYPESCRIPT_SERVER": "{\"command\":\"/custom/path/typescript-language-server\",\"args\":[\"--stdio\"]}"
}
}
}
}

获取 Go 包文档
{
"name": "describe_go_package",
"arguments": {
"package": "encoding/json", // 必需
"symbol": "Marshal" // 可选
}
}

获取 Python 包文档
{
"name": "describe_python_package",
"arguments": {
"package": "requests", // 必需
"symbol": "get" // 可选
}
}

从 crates.io 和 docs.rs 获取 Rust 包文档
{
"name": "describe_rust_package",
"arguments": {
"package": "serde", // 必需:包名
"version": "1.0.219" // 可选:特定版本
}
}

在包文档中搜索
{
"name": "search_package_docs",
"arguments": {
"package": "requests", // 必需:包名
"query": "authentication", // 必需:搜索查询
"language": "python", // 必需:"go", "python", "npm", "swift", 或 "rust"
"fuzzy": true // 可选:启用模糊匹配(默认:true)
}
}

从公共和私有注册表获取 NPM 包文档。根据您的 .npmrc 配置自动使用适当的注册表。
{
"name": "describe_npm_package",
"arguments": {
"package": "axios", // 必需 - 支持带作用域(@org/pkg)和不带作用域的包
"version": "1.6.0" // 可选
}
}

该工具读取您的 ~/.npmrc 文件以确定每个包的正确注册表:
示例 .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/
启用 LSP 支持后,以下附加工具可用:
获取文档中某个位置的悬停信息
{
"name": "get_hover",
"arguments": {
"languageId": "typescript", // 必需:语言标识符(例如,"typescript", "javascript")
"filePath": "src/index.ts", // 必需:源文件路径
"content": "const x = 1;", // 必需:文件内容
"line": 0, // 必需:基于零的行号
"character": 6, // 必需:基于零的字符位置
"projectRoot": "/path/to/project" // 可选:项目根目录
}
}

获取文档中某个位置的补全建议
{
"name": "get_completions",
"arguments": {
"languageId": "typescript", // 必需:语言标识符
"filePath": "src/index.ts", // 必需:源文件路径
"content": "const arr = []; arr.", // 必需:文件内容
"line": 0, // 必需:基于零的行号
"character": 16, // 必需:基于零的字符位置
"projectRoot": "/path/to/project" // 可选:项目根目录
}
}

获取文档的诊断信息(错误、警告)
{
"name": "get_diagnostics",
"arguments": {
"languageId": "typescript", // 必需:语言标识符
"filePath": "src/index.ts", // 必需:源文件路径
"content": "const x: string = 1;", // 必需:文件内容
"projectRoot": "/path/to/project" // 可选:项目根目录
}
}

// 查找 Go 文档
const goDocResult = await use_mcp_tool({
server_name: "package-docs",
tool_name: "describe_go_package",
arguments: {
package: "encoding/json",
symbol: "Marshal"
}
});
// 查找 Python 文档
const pythonDocResult = await use_mcp_tool({
server_name: "package-docs",
tool_name: "describe_python_package",
arguments: {
package: "requests",
symbol: "post"
}
});
// 查找 Rust 文档
const rustDocResult = await use_mcp_tool({
server_name: "package-docs",
tool_name: "describe_rust_package",
arguments: {
package: "serde"
}
});
// 在文档中搜索
const searchResult = await use_mcp_tool({
server_name: "package-docs",
tool_name: "search_package_docs",
arguments: {
package: "serde",
query: "serialize",
language: "rust",
fuzzy: true
}
});
// 使用 LSP 获取悬停信息(启用 LSP 时)
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
# 安装依赖
npm i
# 构建
npm run build
# 监视模式
npm run watch

git checkout -b feature/amazing-feature
)git commit -m '添加一些很棒的功能'
)git push origin feature/amazing-feature
)本项目根据 MIT 许可证授权 - 有关详细信息,请参阅 LICENSE 文件。