OSV
Accede a la base de datos OSV (Open Source Vulnerabilities) para obtener información sobre vulnerabilidades. Consulta vulnerabilidades por versión de paquete o commit, realiza consultas por lotes de múltiples paquetes y obtén información detallada de vulnerabilidades por ID.
Documentación
Servidor MCP OSV
Un servidor MCP (Model Context Protocol) que proporciona acceso a la base de datos OSV (Open Source Vulnerabilities).
Descripción general
Este proyecto implementa un servidor MCP basado en SSE que permite a aplicaciones impulsadas por LLM consultar la base de datos OSV para obtener información sobre vulnerabilidades. El servidor proporciona herramientas para:
- Consultar vulnerabilidades para una versión específica de un paquete o commit
- Consultar vulnerabilidades en lote para múltiples paquetes o commits
- Obtener información detallada sobre una vulnerabilidad específica por ID
Instalación
Requisitos previos
- Go 1.21 o posterior
- Task (opcional, para ejecutar tareas)
- ko (opcional, para construir imágenes de contenedores)
Compilar desde el código fuente
# Clone the repository
git clone https://github.com/StacklokLabs/osv-mcp.git
cd osv-mcp
# Build the server
task build
Uso
Ejecutar con ToolHive (Recomendado)
La forma más sencilla de ejecutar el servidor MCP OSV es usando ToolHive, que proporciona un despliegue seguro y contenerizado de servidores 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
El servidor estará disponible para tus clientes compatibles con MCP y podrá consultar la base de datos OSV para obtener información sobre vulnerabilidades.
Ejecutar desde el código fuente
Configuración del servidor
El servidor se puede configurar usando variables de entorno:
-
MCP_PORT: El número de puerto en el que se ejecutará el servidor (predeterminado: 8080)- Debe ser un entero válido entre 0 y 65535
- Si no es válido o no se establece, el servidor usará el puerto 8080
-
MCP_TRANSPORT: El modo de transporte para el servidor (predeterminado:sse)- Valores admitidos:
sse,streamable-http - Si no es válido o no se establece, el servidor usará el modo de transporte SSE
- Valores admitidos:
Ejemplo:
# Run on port 3000
MCP_PORT=3000 ./build/osv-mcp-server
# Run on default port 8080
./build/osv-mcp-server
Herramientas MCP
El servidor proporciona las siguientes herramientas MCP:
query_vulnerability
Consulta vulnerabilidades que afectan a una versión específica de un paquete o commit.
Esquema de entrada:
{
"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
Consulta vulnerabilidades que afectan a múltiples paquetes o commits a la vez.
Esquema de entrada:
{
"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
Obtiene detalles de una vulnerabilidad específica por ID.
Esquema de entrada:
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The OSV vulnerability ID"
}
},
"required": ["id"]
}
Ejemplos
Consultar vulnerabilidades para un paquete
{
"package_name": "lodash",
"ecosystem": "npm",
"version": "4.17.15"
}
Consultar vulnerabilidades para un commit
{
"commit": "6879efc2c1596d11a6a6ad296f80063b558d5e0f"
}
Consultar vulnerabilidades en lote
{
"queries": [
{
"package_name": "lodash",
"ecosystem": "npm",
"version": "4.17.15"
},
{
"package_name": "jinja2",
"ecosystem": "PyPI",
"version": "2.4.1"
}
]
}
Obtener detalles de una vulnerabilidad
{
"id": "GHSA-vqj2-4v8m-8vrq"
}
Desarrollo
Ejecutar pruebas
task test
Linting
task lint
Formatear código
task fmt
Contribuciones
¡Agradecemos las contribuciones a este servidor MCP! Si deseas contribuir, por favor revisa la guía de CONTRIBUCIONES para obtener detalles sobre cómo comenzar.
Si encuentras un error o tienes una solicitud de funcionalidad, por favor
abre un issue en el
repositorio o únete a nosotros en el canal #mcp-servers en nuestro
servidor de Discord de la comunidad.
Licencia
Este proyecto está licenciado bajo la Licencia Apache v2 - consulta el archivo LICENSE para obtener más detalles.