首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
首页
学习
活动
专区
圈层
工具
MCP广场
MCP广场 >详情页
mcp-package-docs2025-05-300分享
github
帮助大型语言模型(LLM)高效访问和获取 Go、Python 和 NPM 包的结构化文档,通过多语言支持和性能优化提升软件开发效率。
By sammcj
2025-05-300
github
详情内容

包文档 MCP 服务器

一个 MCP(模型上下文协议)服务器,为大型语言模型(LLMs)提供跨多种编程语言的高效包文档访问,并支持语言服务器协议(LSP)功能。

smithery 徽章

包文档服务器 MCP 服务器

功能

  • 多语言支持

    • 通过 go doc 支持 Go 包
    • 通过内置的 help() 支持 Python 库
    • 通过注册表文档支持 NPM 包(包括私有注册表)
    • 通过 crates.io 和 docs.rs 支持 Rust 包
  • 智能文档解析

    • 结构化输出,包含描述、用法和示例
    • 聚焦信息,避免上下文过载
    • 支持特定符号/函数查找
    • 支持文档的模糊和精确搜索功能
  • 高级搜索功能

    • 在包文档中搜索
    • 模糊匹配以支持灵活的查询
    • 上下文感知的结果,带有相关性评分
    • 从搜索结果中提取符号
  • 语言服务器协议(LSP)支持

    • 代码符号的悬停信息
    • 代码补全
    • 诊断(错误和警告)
    • 当前支持 TypeScript/JavaScript
    • 可扩展以支持其他语言
  • 性能优化

    • 内置缓存
    • 高效解析
    • 最小的内存占用

安装

npx -y mcp-package-docs

通过 Smithery 安装

通过 Smithery 自动为 Claude Desktop 安装包文档:

npx -y @smithery/cli install mcp-package-docs --client claude

使用

作为 MCP 服务器

  1. 添加到您的 MCP 设置配置中:
{
  "mcpServers": {
    "package-docs": {
      "command": "npx",
      "args": ["-y", "mcp-package-docs"],
      "env": {
        "ENABLE_LSP": "true" // 可选:启用语言服务器协议支持
      }
    }
  }
}
  1. LSP 功能包括常见语言服务器的默认配置:
  • TypeScript/JavaScript: typescript-language-server --stdio
  • HTML: vscode-html-language-server --stdio
  • CSS: vscode-css-language-server --stdio
  • JSON: 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\"]}"
      }
    }
  }
}
  1. 服务器提供以下工具:

lookup_go_doc / describe_go_package

获取 Go 包文档

{
  "name": "describe_go_package",
  "arguments": {
    "package": "encoding/json", // 必需
    "symbol": "Marshal"        // 可选
  }
}

lookup_python_doc / describe_python_package

获取 Python 包文档

{
  "name": "describe_python_package",
  "arguments": {
    "package": "requests",    // 必需
    "symbol": "get"          // 可选
  }
}

describe_rust_package

从 crates.io 和 docs.rs 获取 Rust 包文档

{
  "name": "describe_rust_package",
  "arguments": {
    "package": "serde",      // 必需:包名
    "version": "1.0.219"     // 可选:特定版本
  }
}

search_package_docs

在包文档中搜索

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

lookup_npm_doc / describe_npm_package

从公共和私有注册表获取 NPM 包文档。根据您的 .npmrc 配置自动使用适当的注册表。

{
  "name": "describe_npm_package",
  "arguments": {
    "package": "axios",      // 必需 - 支持带作用域(@org/pkg)和不带作用域的包
    "version": "1.6.0"       // 可选
  }
}

该工具读取您的 ~/.npmrc 文件以确定每个包的正确注册表:

  • 使用作用域注册表配置(例如,@mycompany:registry=...)
  • 支持私有注册表(GitHub Packages、GitLab、Nexus、Artifactory 等)
  • 如果未配置自定义注册表,则回退到默认的 npm 注册表

示例 .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)工具

启用 LSP 支持后,以下附加工具可用:

get_hover

获取文档中某个位置的悬停信息

{
  "name": "get_hover",
  "arguments": {
    "languageId": "typescript", // 必需:语言标识符(例如,"typescript", "javascript")
    "filePath": "src/index.ts", // 必需:源文件路径
    "content": "const x = 1;",  // 必需:文件内容
    "line": 0,                  // 必需:基于零的行号
    "character": 6,             // 必需:基于零的字符位置
    "projectRoot": "/path/to/project" // 可选:项目根目录
  }
}

get_completions

获取文档中某个位置的补全建议

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

get_diagnostics

获取文档的诊断信息(错误、警告)

{
  "name": "get_diagnostics",
  "arguments": {
    "languageId": "typescript", // 必需:语言标识符
    "filePath": "src/index.ts", // 必需:源文件路径
    "content": "const x: string = 1;",  // 必需:文件内容
    "projectRoot": "/path/to/project" // 可选:项目根目录
  }
}

在 LLM 中的示例用法

查找文档

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

要求

  • Node.js >= 20
  • Go(用于 Go 包文档)
  • Python 3(用于 Python 包文档)
  • 互联网连接(用于 NPM 包文档和 Rust 包文档)
  • 语言服务器(用于 LSP 功能):
    • TypeScript/JavaScript: npm install -g typescript-language-server typescript
    • HTML/CSS/JSON: npm install -g vscode-langservers-extracted

开发

# 安装依赖
npm i

# 构建
npm run build

# 监视模式
npm run watch

贡献

  1. Fork 仓库
  2. 创建您的功能分支(git checkout -b feature/amazing-feature
  3. 提交您的更改(git commit -m '添加一些很棒的功能'
  4. 推送到分支(git push origin feature/amazing-feature
  5. 打开一个 Pull Request

许可证

本项目根据 MIT 许可证授权 - 有关详细信息,请参阅 LICENSE 文件。

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档