> For the complete documentation index, see [llms.txt](https://docs.snyk.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.snyk.io/agent-security/evo-by-snyk/platform-surfaces/evo-mcp-server.md).

# Evo MCP server

How to connect AI assistants to Evo through the hosted Evo MCP server, and which tools, permissions, and limits apply

The Evo MCP server is a hosted [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) server. It connects compatible AI assistants to your AI inventory, risk data, policies, and issues, so your own agent harness can answer questions and manage policy without leaving the tool you already work in.

{% hint style="info" %}
This is a remote MCP server. Nothing is installed on your machine, and the server has no access to your filesystem.
{% endhint %}

## Prerequisites

You need access to an Evo Tenant. To get set up, visit [Access and authentication](/agent-security/evo-by-snyk/access-and-authentication.md).

What you can do through the MCP server matches what you can do in Evo. Your Tenant role determines which tools are available to you. For details, visit [Available tools](#available-tools).

{% hint style="info" %}
The MCP server supports only non-destructive actions. Delete actions are not available.
{% endhint %}

## Evo MCP endpoint

| Region              | URL                          |
| ------------------- | ---------------------------- |
| Default, SNYK-US-01 | <https://evo.snyk.io/mcp>    |
| SNYK-US-02          | <https://evo.us.snyk.io/mcp> |
| SNYK-AU-01          | <https://evo.au.snyk.io/mcp> |
| SNYK-EU-01          | <https://evo.eu.snyk.io/mcp> |

For a single-Tenant deployment, add the `evo.` prefix to the hostname supplied for your deployment, then append `/mcp`: `https://evo.`*`your-deployment-hostname`*`/mcp`. Do not use the API hostname.

## Connect Evo MCP

Connect Evo MCP to Cursor, Claude Code, or Codex. Select your client, then add the regional endpoint for your deployment. On first use, the client opens your browser to authorize access.

{% tabs %}
{% tab title="Cursor" %}
Add Evo MCP to your Cursor MCP configuration:

```json
{
  "mcpServers": {
    "Evo MCP": {
      "url": "https://evo.snyk.io/mcp"
    }
  }
}
```

{% endtab %}

{% tab title="Claude Code" %}
Run the following command:

```bash
claude mcp add --scope user --transport http evo https://evo.snyk.io/mcp
```

To authorize up front, or to authorize again later, run:

```bash
claude mcp login evo
```

{% endtab %}

{% tab title="Codex" %}
Edit `~/.codex/config.toml`, or your Codex CLI configuration file, to add Evo MCP with the HTTP transport:

```toml
[mcp_servers.evo]
url = "https://evo.snyk.io/mcp"
```

Then log in:

```bash
codex mcp login evo
```

This opens your browser to complete the authorization flow. Codex stores the credentials until the token expires.
{% endtab %}
{% endtabs %}

## Authorize access

On first use, the MCP client opens an authorization page in your browser.

1. Log in to Snyk.
2. Review the requested Evo permissions and approve the app.
3. Return to the MCP client and use an Evo MCP tool.

The agent runs as you, with your identity and your permissions.

The service requests the `org.read` OAuth scope to identify you and discover your Organizations. This scope does not grant access to Evo data. Access to Evo data comes from your Tenant role, which Snyk checks on every request. The service also validates your Snyk access token before every MCP request and uses that token for all downstream calls.

## Available tools

Evo MCP advertises eight tools: six read tools and two write tools. Which tools you see depends on your Tenant role:

## Available tools

Evo MCP advertises eleven tools: eight read tools and three write tools. Which tools you see depends on your permissions. Users with read access see the eight read tools. Users with write access see all eleven. The write tools are not listed at all for users who cannot use them.

### Schema discovery

| Tool               | Description                                                                                                           |
| ------------------ | --------------------------------------------------------------------------------------------------------------------- |
| `get_query_schema` | Returns the fields available for a given schema, with their meanings. Invoked automatically before a query tool runs. |

### Inventory and relationships

| Tool                   | Description                                                                                                                                                                                               |
| ---------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `query_assets`         | Returns AI assets and their metadata: models, agents, MCP servers, skills, prompts, datasets, packages, repositories, applications, developer machines, and COS targets.                                  |
| `query_related_assets` | Returns relationships between assets, including indirect ones. Used for questions that map one asset type to another, such as the models a repository references or the MCP servers present on a machine. |

### Policies and issues

| Tool             | Description                                                                                                                      |
| ---------------- | -------------------------------------------------------------------------------------------------------------------------------- |
| `query_policies` | Returns policy definitions and metadata, including each policy's conditions and whether it is a Snyk default or a custom policy. |
| `query_issues`   | Returns policy violations, with the violating asset and the location it was found in.                                            |

### Policy authoring

| Tool             | Description                                                                                                                                 |
| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
| `resolve_values` | Returns the canonical value for a policy clause from a readable name, such as a vendor or a license. Used when preparing a policy.          |
| `create_policy`  | Creates a new custom policy for your Tenant. Requires write access and explicit approval in your client.                                    |
| `update_policy`  | Updates an existing custom policy by UUID. Requires write access and explicit approval in your client. You can update only custom policies. |

### MCP server allow list

| Tool                           | Description                                                                                                                                   |
| ------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------- |
| `find_approvable_mcp_servers`  | Looks up MCP servers by name, package name, or URL, covering both servers detected in your environment and known servers in Snyk's catalogue. |
| `get_mcp_server_allow_list`    | Returns your Organization's current MCP server allow list.                                                                                    |
| `update_mcp_server_allow_list` | Adds servers to, or removes them from, your allow list. Requires write access and explicit approval in your client.                           |

{% hint style="info" %}
The allow list and policies are separate. Adding an MCP server to the allow list is not the same as writing a policy, and `create_policy` does not add anything to the allow list.

Changing the allow list does not change whether unapproved MCP servers are blocked. That setting is managed in Evo.
{% endhint %}

## What can you ask

Some examples of what the tools support:

* Which models are we running, and from which vendors and countries?
* Which assets have the most critical policy violations?
* Show me the policies governing our estate, then add a condition to one of them.
* Which MCP servers is my fleet using, and which of them are not on my allow list?
* Add these approved MCP servers to my allow list.

For multi-step workflows that combine Evo MCP with other MCP servers, visit [Common use cases](/agent-security/evo-by-snyk/platform-surfaces/evo-mcp-server/common-use-cases.md).

## Supported features

The Evo MCP server supports the following:

* Querying AI assets in your inventory and the relationships between them
* Querying policies and the issues they raise
* Creating and updating custom policies

Preview features are not available through the MCP server.

## Rate limits

Snyk applies rate limits per Snyk user. The limits are shared across every client and connection you use in the same region.

| Request type    | Per second | Per minute | Per hour |
| --------------- | ---------- | ---------- | -------- |
| Authenticated   | 20         | 300        | 10,000   |
| Unauthenticated | 10         | 120        | 2,000    |

Snyk applies unauthenticated limits per source IP address.

When you exceed a limit, the server returns an HTTP 429 response with a `Retry-After` header. Wait the number of seconds in the header, then retry.

## Troubleshooting

### Authorization page does not open

Verify that your MCP client supports OAuth for remote Streamable HTTP servers. Check that the configured endpoint includes `/mcp`.

### Request returns HTTP 401

The access token is missing, expired, or invalid. Disconnect and reconnect Evo MCP in your MCP client to start the authorization flow again.

### Tool call returns permission\_denied

Your Tenant role does not include Evo access. Ask your Tenant Admin to assign a role with Evo access, then reconnect Evo MCP in your MCP client.

### Write tools return unsupported\_client

Your MCP client does not support elicitation, so it cannot ask you to approve policy changes. Use a client that supports MCP elicitation to create or update policies. The read tools work in any compatible client.

### Request returns HTTP 429

You exceeded a rate limit. Wait the number of seconds in the `Retry-After` header, then retry. For the limits, visit [Rate limits](#rate-limits).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.snyk.io/agent-security/evo-by-snyk/platform-surfaces/evo-mcp-server.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
