这是一个远程模型上下文协议(MCP)HTTP服务器,它封装了OSV v1 API,用于按需查询开源漏洞(示例源:https://osv.dev/list?q=%40NESTJS%2FCORE&ecosystem=npm)。作为MCP工具导出,以便代理可以直接查询OSV。
/mcp。osv_query(单个目标)和 osv_query_batch(多个目标)。OSV_API_URL,默认值为 https://api.osv.dev/v1)。需求:Bun。
bun install
PORT=3000 HOST=0.0.0.0 OSV_API_URL=https://api.osv.dev/v1 bun run index.ts
MCP端点:http://<host>:<port>/mcp。
环境变量:
PORT / HOST:HTTP绑定(默认 3000 / 0.0.0.0)。OSV_API_URL:覆盖OSV基础URL。claude mcp add --transport http mcp-osv http://localhost:3000/mcpcode --add-mcp "{\"name\":\"mcp-osv\",\"type\":\"http\",\"url\":\"http://localhost:3000/mcp\"}"npx @modelcontextprotocol/inspector -> 连接到 http://localhost:3000/mcp
如果远程访问,请替换 localhost 为您自己的主机/端口。osv_query
{
"commit": "sha 或",
"version": "版本字符串 或",
"package": {
"name": "如果未使用purl,则需要与ecosystem一起使用",
"ecosystem": "如果未使用purl,则需要与name一起使用",
"purl": "pkg:pypi/jinja2 // purl 或 name+ecosystem; 如果存在version,则此处省略 @version"
},
"pageToken": "来自上一个OSV响应的可选分页标记"
}
规则:
version,则 package 是必需的。package 必须是 purl 或 (name + ecosystem)。version 并且使用了 package.purl,则在 purl 中省略 @version。osv_query_batch
{
"queries": [
{
"commit": "sha 或",
"version": "版本字符串 或",
"package": {
"name": "包名",
"ecosystem": "生态系统",
"purl": "pkg:ecosys/name"
},
"pageToken": "可选"
}
]
}
规则:每个项目遵循与 osv_query 相同的规则。
{"package":{"purl":"pkg:pypi/jinja2"},"version":"3.1.4"}{"package":{"name":"@nestjs/core","ecosystem":"npm"},"version":"1.2.3"}{"commit":"<sha>","package":{"ecosystem":"Go","name":"github.com/foo/bar"}}OSV MCP 服务器正在监听 http://<host>:<port>/mcpcurl -H "content-type: application/json" -H "accept: application/json, text/event-stream" -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","clientInfo":{"name":"curl","version":"0.0.0"},"capabilities":{}}}' http://localhost:3000/mcp{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}MIT 许可证。参见 LICENSE。