返回市场
操作系统版本-MCP

操作系统版本-MCP

作者:StacklokLabs25 星标更新:2025-11-24

项目介绍

OSV MCP 服务器

信任评分

这是一个提供对OSV(开源漏洞)数据库访问的MCP(模型上下文协议)服务器。

概述

该项目实现了一个基于SSE的MCP服务器,允许LLM驱动的应用程序查询OSV数据库以获取漏洞信息。该服务器提供了以下工具:

  1. 查询特定包版本或提交的漏洞信息
  2. 批量查询多个包或提交的漏洞信息
  3. 根据ID获取特定漏洞的详细信息

安装

预备条件

  • Go 1.21 或更高版本
  • Task(可选,用于运行任务)
  • ko(可选,用于构建容器镜像)

从源代码构建

# 克隆仓库
git clone https://github.com/StacklokLabs/osv-mcp.git
cd osv-mcp

# 构建服务器
task build

使用方法

使用ToolHive运行(推荐)

最简单的方法是使用ToolHive,它提供了安全、容器化的MCP服务器部署方式:

# 安装ToolHive(如果尚未安装)
# 参见:https://docs.stacklok.com/toolhive/guides-cli/install

# 注册一个支持的客户端,以便ToolHive可以自动配置您的环境
thv client setup

# 运行OSV MCP服务器(在ToolHive中打包为"osv")
thv run osv

# 列出正在运行的服务器
thv list

# 获取关于服务器的详细信息
thv registry info osv

该服务器将可供您的MCP兼容客户端使用,并能查询OSV数据库中的漏洞信息。

从源代码运行

服务器配置

服务器可以通过环境变量进行配置:

  • MCP_PORT:服务器运行的端口号(默认:8080)

    • 必须是一个介于0到65535之间的有效整数
    • 如果无效或未设置,服务器将使用端口8080
  • MCP_TRANSPORT:服务器的传输模式(默认:sse

    • 支持的值:ssestreamable-http
    • 如果无效或未设置,服务器将使用SSE传输模式

示例:

# 在端口3000上运行
MCP_PORT=3000 ./build/osv-mcp-server

# 在默认端口8080上运行
./build/osv-mcp-server

MCP工具

服务器提供了以下MCP工具:

query_vulnerability

查询影响特定包版本或提交的漏洞。

输入模式:

{
  "type": "object",
  "properties": {
    "commit": {
      "type": "string",
      "description": "要查询的提交哈希。如果指定了此字段,则不应设置version。"
    },
    "version": {
      "type": "string",
      "description": "要查询的版本字符串。如果指定了此字段,则不应设置commit。"
    },
    "package_name": {
      "type": "string",
      "description": "包名。"
    },
    "ecosystem": {
      "type": "string",
      "description": "此包的生态系统(例如,PyPI,npm,Go)。"
    },
    "purl": {
      "type": "string",
      "description": "此包的包URL。如果使用了purl,则不应设置package_name和ecosystem。"
    }
  }
}

query_vulnerabilities_batch

查询影响多个包或提交的漏洞。

输入模式:

{
  "type": "object",
  "properties": {
    "queries": {
      "type": "array",
      "description": "查询对象数组",
      "items": {
        "type": "object",
        "properties": {
          "commit": {
            "type": "string",
            "description": "要查询的提交哈希。如果指定了此字段,则不应设置version。"
          },
          "version": {
            "type": "string",
            "description": "要查询的版本字符串。如果指定了此字段,则不应设置commit。"
          },
          "package_name": {
            "type": "string",
            "description": "包名。"
          },
          "ecosystem": {
            "type": "string",
            "description": "此包的生态系统(例如,PyPI,npm,Go)。"
          },
          "purl": {
            "type": "string",
            "description": "此包的包URL。如果使用了purl,则不应设置package_name和ecosystem。"
          }
        }
      }
    }
  },
  "required": ["queries"]
}

get_vulnerability

根据ID获取特定漏洞的详细信息。

输入模式:

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "OSV漏洞ID"
    }
  },
  "required": ["id"]
}

示例

查询包的漏洞

{
  "package_name": "lodash",
  "ecosystem": "npm",
  "version": "4.17.15"
}

查询提交的漏洞

{
  "commit": "6879efc2c1596d11a6a6ad296f80063b558d5e0f"
}

批量查询漏洞

{
  "queries": [
    {
      "package_name": "lodash",
      "ecosystem": "npm",
      "version": "4.17.15"
    },
    {
      "package_name": "jinja2",
      "ecosystem": "PyPI",
      "version": "2.4.1"
    }
  ]
}

获取漏洞详情

{
  "id": "GHSA-vqj2-4v8m-8vrq"
}

开发

运行测试

task test

代码检查

task lint

格式化代码

task fmt

贡献

我们欢迎对此MCP服务器的贡献!如果您想贡献,请参阅CONTRIBUTING指南了解如何开始。

如果您遇到问题或有功能请求,请在仓库打开一个问题,或加入我们的社区Discord服务器#mcp-servers频道。

许可证

本项目采用Apache v2许可证 - 详情请参见LICENSE文件。