twingate-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| TWINGATE_API_KEY | Yes | Twingate API token; a read-only token is recommended | |
| TWINGATE_NETWORK | Yes | Host before .twingate.com (letters, digits, -, .), e.g. acme or acme.us1 | |
| TWINGATE_LOG_LEVEL | No | Log level: DEBUG, INFO, WARNING, ERROR or CRITICAL (any case); logs go to stderr | INFO |
| TWINGATE_MAX_LIMIT | No | Hard cap per tool call | 1000 |
| TWINGATE_PAGE_SIZE | No | Page size, between 1 and 100 | 100 |
| TWINGATE_DEFAULT_LIMIT | No | Items per tool call when limit is omitted | 100 |
| TWINGATE_MCP_HTTP_TOKEN | No | Bearer token required for non-loopback HTTP; every request must send Authorization: Bearer <token> | |
| TWINGATE_RETRY_ATTEMPTS | No | Number of retry attempts | 5 |
| TWINGATE_TIMEOUT_SECONDS | No | Per request timeout in seconds | 30 |
| TWINGATE_MCP_ALLOWED_HOSTS | No | Extra comma-separated hostnames accepted in Host/Origin for HTTP, e.g. a Compose service name |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_usersA | List Twingate users: id, email, first/last name, role, and state.
Use to browse who is in the network; use get_user to look up one email.
Results are capped by |
| get_userA | Look up one Twingate user by exact email. Returns null if no user has that email. |
| list_groupsA | List Twingate groups: id, name, type, whether active, and member count.
Results are capped by |
| list_resourcesA | List Twingate resources: id, name, address, remote network name, and whether active.
Use get_resource_access with an id to see who can reach one.
Results are capped by |
| list_remote_networksA | List remote networks: id, name, location, whether active, and connector count.
Results are capped by |
| list_connectorsA | List connectors: id, name, remote network, state (online/offline), last heartbeat.
Use to check connector health.
Results are capped by |
| list_devicesA | List devices: id, name, OS, owning user's email, trust status, and last seen time.
Results are capped by |
| get_resource_accessA | Show which groups and service accounts have access to one resource (by resource id
from list_resources). If |
| get_user_accessA | Show a user's groups and the resources reachable through those groups.
Use to answer "what can this person reach?". If |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 9 tools
Each tool targets a distinct resource or a distinct direction of an access query: list_* tools each cover one entity type, get_user is the single-email lookup complement to list_users, and get_user_access (user→resources) is clearly the inverse of get_resource_access (resource→principals). Descriptions explicitly cross-reference each other to steer selection, leaving no realistic misselection risk.
Uniform verb_noun snake_case throughout: list_* for enumerations (groups, resources, users, remote_networks, connectors, devices) and get_* for targeted lookups (user, user_access, resource_access). No camelCase or vague verbs intrude.
Nine tools is well within the ideal 3-15 range and each earns its place by covering a distinct Twingate entity or access relationship. Nothing looks padded or redundant.
The read-only/audit surface is coherent and covers the main entities plus access relationships, but it is entirely queries: there are no create, update, or delete operations for users, groups, resources, or connectors, and no get_group/get_resource/get_connector single-item lookups. An agent can investigate but cannot remediate anything it discovers.