McpGatewaySkill

View as MarkdownOpen in Claude

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
stringRequired

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[]Defaults to []

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
integerDefaults to 300

Gateway session timeout in seconds.

tool_prefix
stringDefaults to mcp_

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

retry_attempts
integerDefaults to 3

Number of retry attempts for failed requests.

request_timeout
integerDefaults to 30

Per-request timeout in seconds.

verify_ssl
booleanDefaults to true

Whether to verify SSL certificates on outbound requests.

Example

1import { AgentBase, McpGatewaySkill } from '@signalwire/sdk';
2
3const agent = new AgentBase({ name: 'assistant', route: '/assistant' });
4agent.setPromptText('You are a helpful assistant.');
5
6await agent.addSkill(new McpGatewaySkill({
7 gateway_url: 'https://mcp.internal.example.com',
8 services: [
9 { name: 'search', tools: '*' },
10 { name: 'calendar', tools: ['list_events', 'create_event'] },
11 ],
12 tool_prefix: 'mcp_',
13}));
14
15agent.run();