Skip to main content
Glama
ngsrv
by ngsrv

@ngsrv/mcp

MCP server for ngsrv tunnels. Expose localhost on public HTTPS from Cursor and other MCP clients.

ngsrv is a developer tunnel tool (CLI, YAML, webhooks). This package is the optional MCP integration.

Cursor

~/.cursor/mcp.json:

{
  "mcpServers": {
    "ngsrv": {
      "command": "npx",
      "args": ["-y", "@ngsrv/mcp@latest"]
    }
  }
}

First tunnel.start provisions a free 12-hour device trial (no signup). Agent tokens skip the Free-tier visitor warning page.

Optional: NGSRV_API_TOKEN from ngsrv.com → API Tokens → Create agent token.

Related MCP server: tcpsh-mcp

Tools

Tool

Description

tunnel.start

port → public HTTPS URL

tunnel.list

Active tunnels in this process

tunnel.stop

Stop by port

token.provision

12h agent token (trial or refresh)

docs.install

Cursor config + install snippets

Legacy aliases (start_tunnel, etc.) still work.

Registry install (optional)

Some MCP clients support Smithery:

smithery mcp add ngsrv/ngsrv

Docs

Available Tools

5 tools
docs.installInstall helpA
Read-onlyIdempotent

Return ngsrv CLI install commands and MCP client configuration snippets. Call when the user asks how to install ngsrv, configure Cursor, or use npx. Does not start a tunnel.

ParametersJSON Schema
NameRequiredDescriptionDefault
clientNoMCP client to tailor config for. Example: cursor, claude, windsurf.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only, non-destructive, idempotent. The description adds that the tool returns static text (commands/snippets) and does not start a tunnel, which is valuable beyond the annotations. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three focused sentences: purpose, trigger conditions, and a negative constraint. No filler words; front-loaded with the core action. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, single-parameter, read-only documentation tool with no output schema, the description fully covers when to use, what it returns, and what it avoids. No gaps detected.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single parameter, with a clear description and examples. The description adds no extra semantics beyond the schema, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it returns 'ngsrv CLI install commands and MCP client configuration snippets', specifies trigger phrases ('install ngsrv, configure Cursor, or use npx'), and distinguishes from siblings by noting it does not start a tunnel.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to call ('when the user asks how to install ngsrv...') and provides an exclusion ('Does not start a tunnel'), guiding the agent to alternative tools like tunnel.start. No ambiguity about context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

token.provisionProvision agent tokenA
Read-only

Obtain a 12-hour ngsrv agent token for tunnel commands. Uses NGSRV_API_TOKEN when set; otherwise starts a free device trial (no signup). Returns token_prefix and expiry — not the full secret.

ParametersJSON Schema
NameRequiredDescriptionDefault
refreshNoWhen true, request a new trial token even if NGSRV_API_TOKEN is already set.

TDQS

A3.9/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Description states starting a free device trial, which is a side effect, but the annotation declares readOnlyHint=true. This contradiction misleads about whether the tool modifies state. Per rubric, contradiction yields score 1.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that packs all essential information: purpose, duration, fallback, and return value. It is front-loaded and concise, with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one optional parameter and no output schema, the description covers the return value (token_prefix and expiry), explains authentication, and notes the 12-hour validity. It is complete for the agent to use the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a clear description for the refresh parameter. The description adds context about the environment variable fallback, which helps understand when refresh might be useful, beyond what the schema alone provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool obtains a 12-hour ngsrv agent token for tunnel commands. It specifies the verb, resource, duration, and purpose. It is well-distinguished from sibling tools like tunnel.list or tunnel.start.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description explains when to use this tool (for tunnel commands) and describes fallback behavior (uses environment variable or starts free trial). However, it does not explicitly state when not to use or mention alternatives, but given sibling tools are different, the context is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tunnel.listList tunnelsA
Read-onlyIdempotent

List HTTPS tunnels started by this MCP process in the current session. Returns port, public_url, and started_at for each tunnel. Call this before tunnel.stop to confirm which port to close.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of tunnels to return. Omit to return all active tunnels in this process.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true. The description adds value by specifying the scope ('current session'), return fields, and its role as a precursor to tunnel.stop, without contradicting annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the action and key details. Every sentence is useful, with no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with one optional parameter and no output schema, the description adequately explains the return fields, session scope, and relationship to sibling tools (tunnel.stop). No gaps remain for an agent to successfully use it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage with a clear description for the optional 'limit' parameter. The description does not add extra meaning beyond what the schema provides, so a baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states 'List HTTPS tunnels started by this MCP process in the current session' and specifies return fields (port, public_url, started_at). This clearly distinguishes it from sibling tools like tunnel.start and tunnel.stop.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description advises 'Call this before tunnel.stop to confirm which port to close,' providing explicit usage context. While it doesn't cover all alternatives, it gives a concrete use case that helps an agent decide when to invoke this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tunnel.startStart tunnelA

Expose a local HTTP server on a public HTTPS URL via ngsrv. Returns public_url and local_port. Use for webhooks, OAuth callbacks, and sharing dev servers. Call tunnel.list afterward to see active tunnels.

ParametersJSON Schema
NameRequiredDescriptionDefault
portYesTCP port your local HTTP server listens on. Example: 3000 for Next.js, 8080 for APIs, 4242 for Stripe CLI.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate openWorldHint=true, and the description confirms side effects by exposing a server. It adds that the tool uses ngsrv and returns values, but does not disclose prerequisites (e.g., needing a token) or potential limitations like tunnel duration.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three concise sentences, front-loading the core action and output, followed by use cases and a follow-up suggestion. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple single-parameter tool and annotations, the description is reasonably complete: it covers the action, output, and use cases. It lacks error handling or prerequisites but is sufficient for basic operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a detailed description and examples for the port parameter. The tool description does not add additional meaning beyond the schema, so it meets the baseline for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool exposes a local HTTP server on a public URL via ngsrv and returns specific fields. It distinguishes from sibling tools like tunnel.list and tunnel.stop by mentioning use cases and suggesting a follow-up.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit use cases (webhooks, OAuth callbacks, sharing dev servers) and suggests using tunnel.list afterward, giving clear context. However, it does not explicitly state when not to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tunnel.stopStop tunnelA
DestructiveIdempotent

Stop an ngsrv tunnel started by this MCP session. Pass the same port given to tunnel.start. Call tunnel.list first if you are unsure which ports are active.

ParametersJSON Schema
NameRequiredDescriptionDefault
portYesLocal port of the tunnel to stop. Must match a port from tunnel.list. Example: 3000.

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate destructiveHint and idempotentHint. Description adds that it only stops tunnels started by this session and emphasizes correct port usage. Minor gap: no details on behavior if tunnel doesn't exist.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no unnecessary words, front-loaded with purpose and immediate action guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one required parameter and no output schema, the description is complete: covers what, how, and when to use, with sibling guidance.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers parameter fully. Description adds context that port must match from tunnel.start and suggests verification via tunnel.list, beyond schema's type and range.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it stops a tunnel started by the MCP session, using the verb 'stop' and specifying the resource 'ngsrv tunnel'. It distinguishes from siblings like tunnel.start and tunnel.list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance to pass the same port from tunnel.start and suggests calling tunnel.list first if unsure, offering a clear alternative and prerequisite.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 5 tool updatesv1.0.3
    • First observeddocs.install
    • First observedtoken.provision
    • First observedtunnel.list
    • First observedtunnel.start
    • First observedtunnel.stop

TDQS

A4.3/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: installation documentation, token provisioning, and tunnel lifecycle management (list, start, stop). There is no overlap or ambiguity between them.

Naming Consistency5/5

All tool names follow a consistent <category>.<action> pattern with lowercase and dots (e.g., docs.install, tunnel.start). No mixing of conventions or styles.

Tool Count5/5

Five tools cover the essential operations for the ngsrv tunnel service: installation, token provisioning, and managing tunnels. The count is well-scoped and not excessive.

Completeness4/5

The tool surface covers the core workflow (install, auth, start/list/stop tunnels). Minor gaps exist, such as no tool to inspect token details or restart tunnels, but the set is functional for typical use cases.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    MCP (Model Context Protocol) server for rustunnel. Lets AI agents (Claude Code, Cursor, Windsurf) create and manage public tunnels to local services from inside an agent session.
    6
    654
    AGPL 3.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for interactive TCP connection management, enabling opening listeners, managing sessions, port forwarding, proxy with logging, and local command execution from any MCP host.
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    An MCP server with HTTP/stdio support, a web admin panel for managing services, capabilities, and user permissions with Bearer token authentication, enabling relay and access control for MCP tools.
    -

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ngsrv/ngsrv-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server