项目简介

本项目是一个基于 Model Context Protocol (MCP) 构建的应用后端服务器,专门用于集成 OSV (Open Source Vulnerabilities) 数据库。它允许支持MCP协议的大型语言模型 (LLM) 客户端以标准化的方式查询开源软件的已知漏洞信息。

主要功能点

该服务器通过提供一系列工具,使LLM能够方便地访问OSV数据库:

  1. 查询单个漏洞: 根据软件包名称、生态系统、版本或提交哈希值,查询该组件是否受到已知漏洞影响。
  2. 批量查询漏洞: 一次性查询多个软件包或提交的漏洞信息,提高效率。
  3. 获取漏洞详情: 根据已知的OSV漏洞ID,获取该漏洞的详细信息(如描述、受影响版本、参考链接等)。

安装步骤

您需要安装 Go 1.21 或更高版本来构建此服务器。

  1. 克隆仓库:
    git clone https://github.com/StacklokLabs/osv-mcp.git
    cd osv-mcp
  2. 构建服务器:
    # 如果已安装 task 工具 (推荐)
    task build
    
    # 或者手动构建
    go build -o bin/osv-mcp ./cmd/server/main.go
    构建成功后,您将在 'bin/' 目录下找到可执行文件 'osv-mcp'。

服务器配置(供MCP客户端使用)

为了让您的LLM客户端能够连接并使用此OSV MCP服务器,您需要在客户端的MCP配置中添加该服务器信息。典型的MCP客户端配置(通常是JSON格式)需要包含服务器的名称、启动命令和参数。

根据本项目实现,您需要配置以下信息:

  • 'name': 服务器的唯一标识名称,例如 '"osv-mcp"' (项目的定义名称)。
  • 'command': 启动服务器的可执行文件路径。这是您在安装步骤中构建生成的 'osv-mcp' 可执行文件的完整路径,例如 '["/path/to/your/osv-mcp/bin/osv-mcp"]'。
  • 'args': 传递给服务器的命令行参数。本项目服务器默认监听 ':8080' 地址,您可以通过 '-addr' 参数指定其他地址。例如 '["-addr", ":8080"]'。

最终在客户端中的配置条目概念上类似于:

// 这是一个配置示例的描述,请根据您的MCP客户端实际配置格式调整
{
  "name": "osv-mcp", // 服务器名称
  "command": ["/path/to/your/osv-mcp/bin/osv-mcp"], // 服务器启动路径
  "args": ["-addr", ":8080"] // 服务器启动参数
  // 您的客户端可能还需要其他参数,例如 protocol (本项目支持 SSE) 等
}

基本使用方法

服务器启动并配置到LLM客户端后,LLM即可通过MCP协议调用服务器提供的工具。例如,LLM可以通过调用 'query_vulnerability' 工具,并提供包信息(如 '{"package_name": "lodash", "ecosystem": "npm", "version": "4.17.15"}')作为参数,来获取 'lodash' 1.0.0 版本的漏洞信息。服务器将返回JSON格式的查询结果。

具体的工具调用方式和参数结构,取决于您的LLM客户端如何与MCP服务器集成,但底层交互会遵循MCP的JSON-RPC规范。

信息

分类

开发者工具