> For a complete index of all SignalWire documentation pages, fetch https://signalwire.com/docs/llms.txt

# McpGatewaySkill

> Bridge an MCP Gateway server into SWAIG functions for the agent.

[add-skill]: /docs/server-sdks/reference/typescript/agents/agent-base/add-skill

Bridge a Model Context Protocol (MCP) Gateway service with SWAIG functions.
The skill connects to the gateway at load time, enumerates the configured
services and tools, and registers each as a SWAIG function on the agent.

The gateway URL is validated by an SSRF guard — private, loopback, and
cloud-metadata endpoints are rejected. Requests use retry semantics with
`retry_attempts` and a per-request timeout of `request_timeout` seconds.

**Class:** `McpGatewaySkill`

**Tools:** Dynamically registered from the gateway (prefixed by `tool_prefix`)

**Required packages:** `undici`

**Env vars:** `MCP_GATEWAY_AUTH_TOKEN`, `MCP_GATEWAY_AUTH_USER`,
`MCP_GATEWAY_AUTH_PASSWORD`

**`gateway_url`** `string` — required

URL of the MCP Gateway service. Must pass the SSRF guard.

---

**`auth_token`** `string`

Bearer token for authentication. Falls back to the
`MCP_GATEWAY_AUTH_TOKEN` environment variable. Takes precedence over
basic auth when provided.

---

**`auth_user`** `string`

Basic-auth username (used when `auth_token` is not supplied). Falls back
to `MCP_GATEWAY_AUTH_USER`.

---

**`auth_password`** `string`

Basic-auth password. Falls back to `MCP_GATEWAY_AUTH_PASSWORD`.

---

**`services`** `McpServiceConfig[]` — default: \[]

Services to expose. Each entry has:

* `name` (string) — service name registered on the gateway.
* `tools` (`"*"` or `string[]`) — which tools to expose from that service.

Empty array exposes every available service/tool.

---

**`session_timeout`** `integer` — default: 300

Gateway session timeout in seconds.

---

**`tool_prefix`** `string` — default: mcp\_

Prefix prepended to each SWAIG function name registered from the gateway
(e.g., `mcp_todo_add_todo`).

---

**`retry_attempts`** `integer` — default: 3

Number of retry attempts for failed requests.

---

**`request_timeout`** `integer` — default: 30

Per-request timeout in seconds.

---

**`verify_ssl`** `boolean` — default: true

Whether to verify SSL certificates on outbound requests.

---

## Example

```typescript {6-13}
import { AgentBase, McpGatewaySkill } from '@signalwire/sdk';

const agent = new AgentBase({ name: 'assistant', route: '/assistant' });
agent.setPromptText('You are a helpful assistant.');

await agent.addSkill(new McpGatewaySkill({
  gateway_url: 'https://mcp.internal.example.com',
  services: [
    { name: 'search', tools: '*' },
    { name: 'calendar', tools: ['list_events', 'create_event'] },
  ],
  tool_prefix: 'mcp_',
}));

agent.run();
```