Snyk API & Web MCP Server
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MCP_SAW_API_KEY | Yes | Your Snyk API & Web API key | |
| MCP_SAW_BASE_URL | No | Override the base URL of the Snyk API & Web instance | |
| MCP_SAW_LOG_LEVEL | No | Log level (DEBUG, INFO, WARNING, ERROR, CRITICAL), default is INFO | |
| MCP_SAW_CONFIG_PATH | No | Path to a config.yaml file |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| probelyrequestA | Make a raw request to Probely API (path relative to base). IMPORTANT: For authentication configuration, use probely_update_target instead:
This tool is for advanced use cases or API endpoints not covered by dedicated tools. When using this tool, reference saved credentials using the URI format 'credentials://<credential_id>' (e.g., 'credentials://4DY4qGohso1r'). Get credential URIs from probely_list_credentials or probely_create_credential. Do NOT use template syntax like {{cred-name}}. |
| probely_get_userD | – |
| probely_list_teamsD | – |
| probely_get_teamD | – |
| probely_list_credentialsA | List credentials. Sensitive values are not returned. Returns credentials with their 'uri' field (e.g., 'credentials://4DY4qGohso1r'). Use this exact URI format when configuring authentication (basic_auth, headers, etc.). Do NOT use template syntax like {{cred-name}}. |
| probely_get_credentialA | Get a credential by ID. Value is null if sensitive. Returns the credential with its 'uri' field (e.g., 'credentials://4DY4qGohso1r'). Use this URI to reference the credential in authentication configs. |
| probely_create_credentialA | Create a credential for secure storage. Use is_sensitive=True for passwords. Returns the credential with id and uri. Use the uri (e.g. "credentials://xxxx") as the value in custom_field_mappings to link it to a sequence. |
| probely_update_credentialC | Update a credential (partial update). |
| probely_delete_credentialD | – |
| probely_create_labelD | – |
| probely_list_targetsD | – |
| probely_get_targetD | – |
| probely_create_web_targetA | Create a new target. Use labels to assign label names (e.g. ["Agentic", "Production"]). Existing labels are reused; missing ones are created automatically. Use scanning_agent_id to assign a scanning agent for internal/private targets. Set allow_duplicate=True to create a target even if another target with the same URL already exists. This is useful when you want multiple targets for the same URL with different configurations (e.g., different auth methods, different test scenarios). If target creation fails because the target is unreachable or the domain cannot be resolved, ask the user whether to retry with skip_reachability_check=True. IMPORTANT: The response contains a top-level |
| probely_update_targetA | Update a target. Use labels to assign label names (e.g. ["Agentic", "Production"]). Existing labels are reused; missing ones are created automatically. Use scanning_agent_id to assign or change the scanning agent. Pass "" to remove it. IMPORTANT: The headers/cookies parameters are for general custom headers/cookies sent with every scan request (NOT for authentication). They use a simple structure: {"name": "...", "value": "..."}. For HTTP Basic Auth authentication: Use basic_auth_username and basic_auth_password parameters. Both must be provided together. Example: probely_update_target( targetId, basic_auth_username="credentials://xxx", # or inline: "api-user" basic_auth_password="credentials://yyy" # or inline: "secret123" ) For API authentication with static headers/cookies: Use api_auth_headers and/or api_auth_cookies parameters with full structure including authentication flags. The tool automatically sets api_login_enabled=true and api_login_method='headers_or_cookies'. Example: probely_update_target( targetId, api_auth_headers=[{ "name": "X-API-Key", "value": "credentials://xxx", "value_is_sensitive": false, "allow_testing": false, "authentication": true, "authentication_secondary": false }], api_auth_cookies=[{ "name": "session", "value": "credentials://yyy", "value_is_sensitive": false, "allow_testing": false, "authentication": true, "authentication_secondary": false }] ) Reference saved credentials using URI format 'credentials://<credential_id>' (not {{cred-name}}). |
| probely_delete_targetD | – |
| probely_list_sequencesB | List all login sequences for a target. |
| probely_get_sequenceC | Get details of a specific login sequence. |
| probely_create_sequenceA | Create a login sequence. Content must be a JSON string of the sequence steps array. Use custom_field_mappings to configure credentials. IMPORTANT: After creating a login sequence, you MUST call probely_configure_sequence_login(targetId, enabled=True) to enable sequence-based authentication on the target. Creating a sequence does NOT automatically enable it for authentication. Use credentials management by default: link a credential (created via probely_create_credential) for the password. If the user explicitly declines, inline values are allowed.
For username: [{"name": "[CUSTOM_USERNAME]", "value": "user@example.com", "value_is_sensitive": true, "enabled": true}] |
| probely_update_sequenceC | Update a login sequence. Use custom_field_mappings to configure credentials instead of hardcoding them in the sequence content. Use credential URIs for sensitive values by default. custom_field_mappings should be a JSON array string, e.g.: [{"name": "[CUSTOM_USERNAME]", "value": "user@example.com", "value_is_sensitive": false, "enabled": true}] |
| probely_delete_sequenceD | – |
| probely_configure_form_loginA | Configure form-based login authentication. Only use this as a fallback when Playwright is NOT available. When Playwright IS available, always record a login sequence instead (probely_create_sequence). To reference saved credentials, use URI format 'credentials://<credential_id>' (e.g., 'credentials://4DY4qGohso1r'). Get credential URIs from probely_list_credentials or probely_create_credential. |
| probely_configure_sequence_loginA | Enable or disable sequence-based login. Call this after creating a login sequence. |
| probely_configure_2fa_totpA | Configure TOTP-based 2FA for a target. Automatically generates a TOTP code from the secret and configures it as the OTP placeholder for the login sequence. Call this BEFORE creating/updating the login sequence. The response includes an
|
| probely_disable_2faC | Disable 2FA/OTP for a target. |
| probely_generate_totpA | Generate a TOTP code from a secret/seed. Use this when recording login sequences that require 2FA. Returns the current TOTP code and its remaining validity in seconds. |
| probely_list_logout_detectorsC | List all logout detectors for a target. |
| probely_create_logout_detectorC | Create a logout detector for a target. |
| probely_configure_logout_detectionA | Configure logout detection for a target. This helps the scanner detect when it needs to re-authenticate. The Probely API requires BOTH check_session_url AND at least one logout detector to be defined before logout detection can be enabled. This function handles the proper ordering automatically. When no detector is specified, the tool automatically extracts a CSS selector from the target's login sequence (typically the username field) and uses it as the logout detector. This is the most reliable approach: if the login form elements appear on the page, the user is logged out. |
| probely_list_extra_hostsD | – |
| probely_get_extra_hostD | – |
| probely_create_extra_hostD | – |
| probely_update_extra_hostD | – |
| probely_delete_extra_hostD | – |
| probely_list_scansD | – |
| probely_get_scanD | – |
| probely_start_scanD | – |
| probely_stop_scanD | – |
| probely_cancel_scanD | – |
| probely_list_findingsD | – |
| probely_get_findingD | – |
| probely_update_findingD | – |
| probely_bulk_update_findingsB | Bulk update finding states (e.g. fixed, false_positive, accepted_risk). This tool will automatically ask the user for confirmation. |
| probely_get_target_settingsD | – |
| probely_update_target_settingsD | – |
| probely_create_scanreportA | Create a report for a scan. Returns report metadata including the report ID. |
| probely_downloadreportC | Download a report by its ID. |
| probely_getreportC | Get report metadata/status by ID. |
| probely_list_scanning_agentsC | List scanning agents. Use status to filter: 'connected', 'connected_with_issues', 'disconnected'. |
| probely_get_scanning_agentC | Get details of a specific scanning agent. |
| probely_create_api_target_from_postmanA | Create an API target from a Postman collection. Provide either postman_collection_url or postman_collectionjson. Set allow_duplicate=True to create a target even if another target with the same URL already exists. This is useful when you want multiple targets for the same URL with different configurations (e.g., different auth methods, different test scenarios). If target creation fails because the target is unreachable or the domain cannot be resolved, ask the user whether to retry with skip_reachability_check=True. IMPORTANT: The response contains a top-level |
| probely_create_api_target_from_openapiA | Create an API target from an OpenAPI/Swagger schema. Provide either openapi_schema_url or openapi_schemajson. When the user provides openapi_schema_url, do not fetch the openapi_schemajson from that url. Set allow_duplicate=True to create a target even if another target with the same URL already exists. This is useful when you want multiple targets for the same URL with different configurations (e.g., different auth methods, different test scenarios). If target creation fails because the target is unreachable or the domain cannot be resolved, ask the user whether to retry with skip_reachability_check=True. IMPORTANT: The response contains a top-level |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| saw_web_target_configuration | Help configure a Snyk API & Web web target with authentication, login sequence setup, logout detection, extra hosts, and optional TOTP. |
| saw_api_target_configuration | Help configure a Snyk API & Web API target from an OpenAPI schema, Swagger document, Postman collection, or generated schema. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/snyk/saw-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server