Odel
WebUplink

WebUplink

Local
@webuplink-dev1TypeScriptMITUpdated 5 days ago

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

WebUplink

MCP server for WebUplink

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"
      }
    }
  }
}

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.

ParameterTypeDescription
urlstringURL to open a new browser session
session_idstringExisting session ID to continue browsing
toolstringTool name to execute on the page
paramsobjectParameters for the tool
include_page_contentbooleanInclude detailed page content

close_session

Close a browser session to free resources.

ParameterTypeDescription
session_idstringSession ID to close

Environment Variables

VariableRequiredDefaultDescription
WEBUPLINK_API_KEYYour WebUplink API key
WEBUPLINK_BASE_URLhttps://api.webuplink.aiAPI base URL
PORT3001Local HTTP transport port
MCP_HTTP_HOST127.0.0.1Local HTTP transport bind address
MCP_HTTP_ALLOWED_HOSTSnon-loopback HTTP onlyloopback namesComma-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