> ## Documentation Index
> Fetch the complete documentation index at: https://docs.engini.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# MCP client setup

> Connect Claude, Cursor, VS Code, and other MCP clients to your Engini tools.

<Info>**Uses:** MCP</Info>

Every MCP server you create in Engini has a **server token**. Your connection URL is:

```
https://mcp.engini.io/{server-token}/sse
```

The server exposes exactly the tools its toolset permits - so scope the toolset first if you want a narrow agent (see [Scope an agent with a toolset](/examples/scoped-agent-toolset)).

Authentication is standard OAuth 2.1: on first use the client discovers the authorization server, opens a browser for you to sign in and approve, and stores the token itself. **You never paste an API key into an MCP client.**

## Claude Code

```bash theme={null}
claude mcp add --transport sse engini "https://mcp.engini.io/{server-token}/sse"
```

Then `/mcp` inside Claude Code to check the connection and complete sign-in if prompted.

## Claude (web & desktop)

**Settings → Connectors → Add custom connector**, then paste the URL:

```
https://mcp.engini.io/{server-token}/sse
```

## Cursor

Create `.cursor/mcp.json` in your project (or edit the global one via **Settings → MCP**):

```json theme={null}
{
  "mcpServers": {
    "engini": {
      "url": "https://mcp.engini.io/{server-token}/sse"
    }
  }
}
```

## VS Code

Add to `.vscode/mcp.json`:

```json theme={null}
{
  "servers": {
    "engini": {
      "type": "sse",
      "url": "https://mcp.engini.io/{server-token}/sse"
    }
  }
}
```

## Any other MCP client

Most clients accept the same shape:

```json theme={null}
{
  "mcpServers": {
    "engini": {
      "url": "https://mcp.engini.io/{server-token}/sse"
    }
  }
}
```

If your client only supports stdio transport, bridge it with a generic remote-MCP proxy - Engini's server is SSE over HTTPS.

## Verifying it worked

Ask the client to list its tools. You should see the tools of your toolset, named by slug (`monday_create_item`, `gmail_send_mail`...). If you see none:

| Symptom                     | Likely cause                                                                 |
| --------------------------- | ---------------------------------------------------------------------------- |
| Empty tool list             | The toolset has no connections, or the server token is wrong                 |
| Repeated sign-in prompts    | The client isn't persisting the OAuth token - check its MCP settings         |
| `401` in client logs        | The token expired and refresh failed; remove and re-add the server           |
| Tools listed but calls fail | The underlying connection is unhealthy - run `engini connections check <id>` |

## What the agent gets

* `tools/list` - the toolset's tools with their JSON Schemas
* `tools/call` - execution through the toolset's bound connections, with the same semantics as the REST endpoint, including the [`isSuccess` contract](/concepts/pagination-and-errors)

## For the agent reading this

```
server_url:        https://mcp.engini.io/{server-token}/sse
resource_metadata: https://mcp.engini.io/.well-known/oauth-protected-resource
auth_server:       https://identity.engini.io/.well-known/oauth-authorization-server
auth:              OAuth 2.1 authorization_code + PKCE S256, scope "mcp:tools"
transport:         SSE; Authorization: Bearer <access-token>
tool semantics:    tools/call mirrors POST /v1/tools/{slug}/execute - check isSuccess in results
```
