MCP Snyks is a secure automation layer that integrates Snyk vulnerability scanning into AI-driven workflows and DevOps pipelines. It enables agents to detect, analyze, and remediate security issues across repositories, dependencies, containers, and IaC—bringing continuous security intelligence directly into PR flows and engineering governance.
MCP Snyk Server
A Model Context Protocol (MCP) server that provides AI assistants with access to the Snyk security platform. Query vulnerabilities, manage projects, inspect dependencies, and retrieve SBOMs — all through natural language via any MCP-compatible client.
Built with .NET 10, ASP.NET Core, and the official ModelContextProtocol SDK.
Available Tools
| Tool | Description | |---|---| | ListOrganizations | List all Snyk organizations accessible by the authenticated user | | ListProjects | List projects in an organization (filter by target, origin) | | GetProject | Get detailed information about a specific project | | DeleteProject | Delete a project (irreversible) | | ListIssues | List security vulnerabilities (filter by project, severity, status) | | GetIssue | Get detailed issue info including affected packages | | ListDependencies | List dependencies with vulnerability counts and license info | | ListTargets | List targets (repos/images) that are sources of projects | | ListAuditLogs | Search organization audit logs for security events | | GetProjectSbom | Get SBOM in CycloneDX or SPDX format |
Quick Start
Prerequisites
- .NET 10 SDK or later
- A Snyk account with a Personal Access Token (PAT)
1. Get Your Snyk API Token
- Log in to Snyk
- Go to Account Settings → General → Auth Token
- Click Generate or copy your existing token
2. Clone and Configure
git clone https://github.com/viamus/mcp-snyks.git
cd mcp-snyks
# Copy and edit environment file
cp .env.example .env
# Edit .env and set SNYK_API_TOKEN=your-token-here
3. Run the Server
Option A: .NET CLI
cd src/Viamus.Snyks.Mcp.Server
dotnet run
The server starts at http://localhost:5100 by default.
Option B: Docker Compose
docker compose up -d
The server starts at http://localhost:5001.
Option C: Self-Contained Executable
dotnet publish src/Viamus.Snyks.Mcp.Server -c Release -o ./publish
./publish/Viamus.Snyks.Mcp.Server
Client Configuration
Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"snyk": {
"url": "http://localhost:5100/sse"
}
}
}
Claude Code
claude mcp add snyk --transport sse http://localhost:5100/sse
With Server API Key Protection
If you enable SERVER_REQUIRE_API_KEY=true, clients must send the key in the X-Api-Key header:
{
"mcpServers": {
"snyk": {
"url": "http://localhost:5100/sse",
"headers": {
"X-Api-Key": "your-server-api-key"
}
}
}
}
Usage Examples
Once connected, you can ask your AI assistant things like:
- "List all my Snyk organizations"
- "Show me the projects in organization X"
- "What critical vulnerabilities exist in my org?"
- "List dependencies with high severity issues"
- "Get the SBOM for project Y"
- "Show me the audit logs for the last actions"
- "What targets do I have from GitHub?"
Configuration
Environment Variables
| Variable | Required | Default | Description |
|---|---|---|---|
| SNYK_API_TOKEN | Yes | — | Your Snyk Personal Access Token (PAT) |
| SNYK_BASE_URL | No | https://api.snyk.io | Snyk API base URL |
| SNYK_API_VERSION | No | 2024-10-15 | Snyk REST API version |
| SERVER_REQUIRE_API_KEY | No | false | Require API key for MCP requests |
| SERVER_API_KEY | No | — | API key for server authentication |
Multi-Region Support
| Region | Base URL |
|---|---|
| US (default) | https://api.snyk.io |
| EU | https://api.eu.snyk.io |
| AU | https://api.au.snyk.io |
Configuration via appsettings.json
{
"Snyk": {
"ApiToken": "your-token",
"BaseUrl": "https://api.snyk.io",
"ApiVersion": "2024-10-15"
},
"ServerSecurity": {
"ApiKey": "",
"RequireApiKey": false
}
}
Project Structure
mcp-snyks/
├── src/
│ └── Viamus.Snyks.Mcp.Server/
│ ├── Configuration/ # Settings classes
│ │ ├── ServerSecuritySettings.cs
│ │ └── SnykSettings.cs
│ ├── Middleware/ # API key auth middleware
│ │ └── ApiKeyMiddleware.cs
│ ├── Models/ # Snyk API response models
│ │ ├── SnykAuditLog.cs
│ │ ├── SnykDependency.cs
│ │ ├── SnykIssue.cs
│ │ ├── SnykOrganization.cs
│ │ ├── SnykProject.cs
│ │ ├── SnykResponses.cs
│ │ └── SnykTarget.cs
│ ├── Services/ # Snyk API client
│ │ ├── ISnykApiClient.cs
│ │ └── SnykApiClient.cs
│ ├── Tools/ # MCP tool definitions
│ │ ├── AuditLogTools.cs
│ │ ├── DependencyTools.cs
│ │ ├── IssueTools.cs
│ │ ├── OrganizationTools.cs
│ │ ├── ProjectTools.cs
│ │ ├── SbomTools.cs
│ │ └── TargetTools.cs
│ ├── Program.cs
│ ├── Dockerfile
│ └── appsettings.json
├── tests/
│ └── Viamus.Snyks.Mcp.Server.Tests/
├── docker-compose.yml
├── .env.example
└── Solution.slnx
Development
Build
dotnet build Solution.slnx
Test
dotnet test Solution.slnx
Test with Coverage
dotnet test Solution.slnx --collect:"XPlat Code Coverage"
API Reference
This server wraps the Snyk REST API and the Snyk V1 API (for dependencies). Authentication is done via Personal Access Token (PAT) passed as a token in the Authorization header.
Snyk REST API Endpoints Used
GET /rest/orgs— List organizationsGET /rest/orgs/{org_id}/projects— List projectsGET /rest/orgs/{org_id}/projects/{project_id}— Get projectDELETE /rest/orgs/{org_id}/projects/{project_id}— Delete projectGET /rest/orgs/{org_id}/issues— List issuesGET /rest/orgs/{org_id}/issues/{issue_id}— Get issueGET /rest/orgs/{org_id}/targets— List targetsGET /rest/orgs/{org_id}/audit_logs/search— Audit logsGET /rest/orgs/{org_id}/projects/{project_id}/sbom— SBOM export
Snyk V1 API Endpoints Used
GET /v1/org/{org_id}/dependencies— List dependencies
Troubleshooting
"Snyk API returned 401"
Your API token is invalid or expired. Generate a new PAT from Snyk Account Settings.
"Snyk API returned 403"
Your token doesn't have permission for the requested organization. Verify your org membership.
"Snyk API returned 404"
The organization, project, or issue ID doesn't exist. Verify the IDs using ListOrganizations and ListProjects first.
Connection refused
Make sure the server is running and the port matches your client configuration.
Contributing
See CONTRIBUTING.md for development guidelines.
Security
See SECURITY.md for security policy and vulnerability reporting.
License
This project is licensed under the MIT License.