这是一个提供对OSV(开源漏洞)数据库访问的MCP(模型上下文协议)服务器。
该项目实现了一个基于SSE的MCP服务器,允许LLM驱动的应用程序查询OSV数据库以获取漏洞信息。该服务器提供了以下工具:
# 克隆仓库
git clone https://github.com/StacklokLabs/osv-mcp.git
cd osv-mcp
# 构建服务器
task build
最简单的方法是使用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)
MCP_TRANSPORT:服务器的传输模式(默认:sse)
sse,streamable-http示例:
# 在端口3000上运行
MCP_PORT=3000 ./build/osv-mcp-server
# 在默认端口8080上运行
./build/osv-mcp-server
服务器提供了以下MCP工具:
查询影响特定包版本或提交的漏洞。
输入模式:
{
"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。"
}
}
}
查询影响多个包或提交的漏洞。
输入模式:
{
"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"]
}
根据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文件。