mcpField
O
OSV MCP Server

OSV MCP Server

本地服务
github.com/StacklokLabs安全412 周前更新

关于 OSV MCP Server

OSV MCP Server 是一个 MCP 服务,用于访问 OSV(开源漏洞)数据库。它面向基于 LLM 的应用,帮助查询软件包或提交记录相关的漏洞信息。项目使用 Go 实现,支持 SSE 和 streamable-http 传输方式。

主要功能

  1. 01按软件包版本或提交哈希查询漏洞
  2. 02批量查询多个软件包或提交的漏洞
  3. 03按 OSV 漏洞 ID 获取详细信息
  4. 04通过环境变量配置端口和传输方式

适用场景

  1. 01检查项目依赖的软件包版本是否存在已知漏洞
  2. 02在 AI 应用中批量审查多个依赖的安全状况
  3. 03根据漏洞 ID 查询漏洞详情

MCP 相关

该项目是 MCP 服务,向 MCP 客户端暴露漏洞查询工具,包括单次查询、批量查询和按 ID 获取详情。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

OSV MCP 服务

Trust Score

一个 MCP(Model Context Protocol)服务,可访问 OSV(开源漏洞)数据库。

概述

此项目实现了一个基于 SSE 的 MCP 服务,允许由大模型驱动的 应用查询 OSV 数据库中的漏洞信息。该服务提供以下工具:

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

安装

先决条件
  • Go 1.21 或更高版本
  • Task(可选,用于运行任务)
  • ko(可选,用于构建容器镜像)
从源代码构建
# Clone the repository
git clone https://github.com/StacklokLabs/osv-mcp.git
cd osv-mcp

# Build the server
task build

使用方法

使用 ToolHive 运行(推荐)

运行 OSV MCP 服务最简单的方式是使用 ToolHive,它可以安全地 以容器化方式部署 MCP 服务:

# Install ToolHive (if not already installed)
# See: https://docs.stacklok.com/toolhive/guides-cli/install

# Register a supported client so ToolHive can auto-configure your environment
thv client setup

# Run the OSV MCP server (packaged as 'osv' in ToolHive)
thv run osv

# List running servers
thv list

# Get detailed information about the server
thv registry info osv

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

从源代码运行
服务配置

可使用环境变量配置服务:

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

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

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

示例:

# Run on port 3000
MCP_PORT=3000 ./build/osv-mcp-server

# Run on default port 8080
./build/osv-mcp-server
MCP 工具

该服务提供以下 MCP 工具:

query_vulnerability

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

输入架构:

{
  "type": "object",
  "properties": {
    "commit": {
      "type": "string",
      "description": "The commit hash to query for. If specified, version should not be set."
    },
    "version": {
      "type": "string",
      "description": "The version string to query for. If specified, commit should not be set."
    },
    "package_name": {
      "type": "string",
      "description": "The name of the package."
    },
    "ecosystem": {
      "type": "string",
      "description": "The ecosystem for this package (e.g., PyPI, npm, Go)."
    },
    "purl": {
      "type": "string",
      "description": "The package URL for this package. If purl is used, package_name and ecosystem should not be set."
    }
  }
}
query_vulnerabilities_batch

一次性查询影响多个软件包或提交的漏洞。

输入架构:

{
  "type": "object",
  "properties": {
    "queries": {
      "type": "array",
      "description": "Array of query objects",
      "items": {
        "type": "object",
        "properties": {
          "commit": {
            "type": "string",
            "description": "The commit hash to query for. If specified, version should not be set."
          },
          "version": {
            "type": "string",
            "description": "The version string to query for. If specified, commit should not be set."
          },
          "package_name": {
            "type": "string",
            "description": "The name of the package."
          },
          "ecosystem": {
            "type": "string",
            "description": "The ecosystem for this package (e.g., PyPI, npm, Go)."
          },
          "purl": {
            "type": "string",
            "description": "The package URL for this package. If purl is used, package_name and ecosystem should not be set."
          }
        }
      }
    }
  },
  "required": ["queries"]
}
get_vulnerability

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

输入架构:

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "The OSV vulnerability 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 服务贡献代码!如需参与贡献,请 阅读贡献指南,了解如何开始。

如果遇到错误或有功能请求,请在 代码库中提交 issue, 或在我们的社区 Discord 服务中的 #mcp-servers 频道与我们交流。

许可证

此项目采用 Apache v2 许可证授权——详情请参阅 LICENSE 文件。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。