一个提供多语言包文档高效访问的 MCP(模型上下文协议)服务器,并支持语言服务器协议(LSP)功能。
注意:目前我不再积极维护此代码库。虽然它不提供对私有包文档的访问——Context7 MCP 服务器和服务满足了我的需求,主要是公共包文档。我个人通过我的 mcp-devtools MCP 服务器使用 Context7,该服务器正在积极维护。
多语言支持:
go doc 获取 Go 包文档help() 获取 Python 库文档智能文档解析:
高级搜索功能:
语言服务器协议(LSP)支持:
性能优化:
注意:我并不推荐在生产环境中使用 npx -y 来运行你的 MCP 服务器,因为你实际上是在信任从互联网下载的任何包。我强烈建议本地克隆仓库或将其构建到容器镜像中。
npx -y mcp-package-docs
{
"mcpServers": {
"package-docs": {
"command": "npx",
"args": ["-y", "mcp-package-docs"],
"env": {
"ENABLE_LSP": "true" // 可选:启用语言服务器协议支持
}
}
}
}
typescript-language-server --stdiovscode-html-language-server --stdiovscode-css-language-server --stdiovscode-json-language-server --stdio如果需要,可以覆盖这些默认设置:
{
"mcpServers": {
"package-docs": {
"command": "npx",
2. "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 typescriptnpm 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 文件。