Skip to main content
Glama
webuplink-dev

@webuplink/mcp

npm version CI License: MIT

Give any MCP client the ability to browse and interact with the web via WebUplink.

Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "webuplink": {
      "command": "npx",
      "args": ["--yes", "--package", "@webuplink/mcp", "webuplink-mcp"],
      "env": {
        "WEBUPLINK_API_KEY": "wup_your_api_key"
      }
    }
  }
}

Related MCP server: Cloudflare Playwright MCP

Cursor

Add to .cursor/mcp.json:

{
  "mcpServers": {
    "webuplink": {
      "command": "npx",
      "args": ["--yes", "--package", "@webuplink/mcp", "webuplink-mcp"],
      "env": {
        "WEBUPLINK_API_KEY": "wup_your_api_key"
      }
    }
  }
}

That's it — your AI can now browse and interact with any website.

Tools

browse

Browse a web page or execute tools on a page.

Parameter

Type

Description

url

string

URL to open a new browser session

session_id

string

Existing session ID to continue browsing

tool

string

Tool name to execute on the page

params

object

Parameters for the tool

include_page_content

boolean

Include detailed page content

close_session

Close a browser session to free resources.

Parameter

Type

Description

session_id

string

Session ID to close

Environment Variables

Variable

Required

Default

Description

WEBUPLINK_API_KEY

Your WebUplink API key

WEBUPLINK_BASE_URL

https://api.webuplink.ai

API base URL

PORT

3001

Local HTTP transport port

MCP_HTTP_HOST

127.0.0.1

Local HTTP transport bind address

MCP_HTTP_ALLOWED_HOSTS

non-loopback HTTP only

loopback names

Comma-separated Host/Origin names accepted by the HTTP boundary

HTTP Transport

For a local Streamable HTTP endpoint, invoke the HTTP binary explicitly:

WEBUPLINK_API_KEY=wup_... npx --yes --package @webuplink/mcp webuplink-mcp-http

The server accepts stateless MCP POST requests at /mcp and listens on 127.0.0.1:3001 by default. Set PORT to change the port.

Binding to a non-loopback interface is an explicit opt-in:

WEBUPLINK_API_KEY=wup_... MCP_HTTP_HOST=0.0.0.0 \
  MCP_HTTP_ALLOWED_HOSTS=mcp.internal.example \
  npx --yes --package @webuplink/mcp webuplink-mcp-http

The listener rejects missing or unlisted Host headers before allocating MCP resources and applies the same allowlist to browser Origin headers. This protects the loopback default from DNS rebinding; it is not client authentication. Every accepted request still uses the single configured WEBUPLINK_API_KEY, so do not expose the listener directly to an untrusted network. Put an authenticated boundary in front of it for controlled remote use.

License

MIT

Available Tools

2 tools
browseB

Browse a web page or execute tools on a page. Use url to open a new session, or session_id to continue an existing session.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoURL to open a new browser session
toolNoTool name to execute on the page
toolsNoArray of tools to execute in sequence (batch)
paramsNoParameters for the tool
session_idNoExisting session ID to continue browsing
include_page_contentNoInclude detailed page content analysis

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions session opening and continuation, but it does not disclose side effects of executing tools on a page, whether actions can mutate state, what happens to a session, or what output the caller should expect.

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 with no filler. The primary browsing purpose is front-loaded, and the session-handling distinction is stated immediately and efficiently.

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

Completeness3/5

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

The description plus schema provides a workable overview, but important context is missing: how tool/tools/params interact, what include_page_content affects, what executing tools returns, and any session lifecycle details. With no output schema and no annotations, this leaves the agent to infer a fair amount.

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?

The input schema already covers each parameter at 100%, so the baseline is 3. The description adds value by explaining the relationship between url and session_id (new session vs existing session) and framing tool/tools/params as actions executed on the page, which goes slightly beyond individual schema descriptions.

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

Purpose4/5

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

The description clearly states the tool browses web pages and executes tools on a page, and it distinguishes session-opening behavior from the sibling close_session via 'open a new session' and 'continue an existing session.' However, it does not explicitly name the sibling or draw an explicit contrast with closing a session.

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

Usage Guidelines3/5

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

The description gives explicit guidance on when to use url versus session_id, which is useful. It does not, however, discuss when to prefer close_session, when not to use browse, or any prerequisites or constraints around executing tools on a page.

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

close_sessionA

Close a browser session to free resources. Sessions auto-expire after 5 minutes of inactivity, but explicit cleanup is recommended.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesSession ID to close

TDQS

A4/5.0
Behavior3/5

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

Without annotations, the description must carry the behavioral disclosure burden. It usefully reveals that sessions auto-expire and that closing frees resources, but it doesn't state whether closing is irreversible, whether invalid session IDs error, or what side effects occur beyond resource release.

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 concise sentences front-load the action and rationale, then add useful lifecycle context. No fluff or redundancy.

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?

For a single-parameter tool with no output schema, the description covers what, why, and when to call it, plus the session lifecycle context. It omits error/idempotency details but these are minor for a straightforward session-close 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%, so the only parameter's meaning is already documented. The description adds no format, requirement, or default information beyond 'session ID to close'.

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?

States a clear action ('Close'), the resource ('a browser session'), and the rationale ('to free resources'). This distinguishes it from the sibling browse, which is about using/navigating a session rather than ending it.

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?

Explicitly advises that cleanup is recommended and informs the user that sessions auto-expire after 5 minutes, which tells when an explicit call is necessary. It doesn't discuss when not to use it, but for a simple cleanup tool this context is sufficient.

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.

  1. 2 tool updatesv1.1.0
    • First observedbrowse
    • First observedclose_session

TDQS

A3.7/5.0

Scored across 2 tools

Disambiguation5/5

The two tools have completely distinct purposes: browse handles opening or continuing a session and interacting with pages, while close_session explicitly handles teardown and resource cleanup. There is no overlap between them, so an agent should not confuse which tool to call.

Naming Consistency4/5

Both tool names use imperative verbs, which is coherent, but browse is a bare verb while close_session follows a verb_noun pattern. The inconsistency is minor given the very small tool set, but a more consistent name like browse_page would improve the pattern.

Tool Count3/5

At two tools, the server feels thin for what appears to be a web browsing or browser automation domain. The two tools do form a minimal session lifecycle, so the count is borderline rather than obviously wrong, but it likely underrepresents the full range of browsing actions an agent might need.

Completeness3/5

The core lifecycle of opening/continuing a session with browse and closing it with close_session is covered, but there is no explicit session listing or status tool, and the browse tool appears to absorb many possible page actions into one generic entry point. Agents may be able to work around the gaps, but the surface is notably sparse for the stated purpose.

Maintenance

ActivityMaintained
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to control a browser through a set of tools, allowing them to perform web automation tasks like navigation, typing, clicking, and taking screenshots.
    -
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to control a browser through a set of tools, allowing them to perform web automation tasks like navigation, typing, clicking, and taking screenshots.
    -
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to control a browser through a set of tools, allowing them to perform web automation tasks like navigation, typing, clicking, and taking screenshots.
    -