Skip to main content
Glama
ULink MCP Server

ULink MCP Server

Ulinkly MCP Server

Connect your Ulinkly deep linking projects to Claude Code, Cursor, Windsurf, and other AI assistants.

The Model Context Protocol (MCP) standardizes how Large Language Models (LLMs) talk to external services like Ulinkly. It connects AI assistants directly with your Ulinkly account and allows them to perform tasks like managing projects, creating smart links, configuring domains, and more. See the full list of tools.

Setup

1. Install the MCP server

Choose your MCP client and run the corresponding command:

Claude Code:

claude mcp add ulink -- npx -y @ulinkly/mcp-server@latest

Cursor:

Open Settings > MCP > Add new MCP server, or add to .cursor/mcp.json:

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

Windsurf:

Open Settings > MCP > Add new MCP server, or add to ~/.codeium/windsurf/mcp_config.json:

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

If you don't see your MCP client listed above, check your client's MCP documentation and use the following server command:

npx -y @ulinkly/mcp-server@latest

2. Authenticate

The MCP server shares authentication with the Ulinkly CLI. If you've already logged in via ulink login, the MCP server will use those tokens automatically — no extra login needed.

Otherwise, your MCP client will open a browser window for authentication on first use. Tokens are saved to ~/.ulink/config.json and shared with the CLI. The session persists and tokens refresh automatically.

API Key (alternative)

For CI environments or headless servers, set the ULINK_API_KEY environment variable to skip the browser flow:

Claude Code:

claude mcp add ulink -e ULINK_API_KEY=your-api-key -- npx -y @ulinkly/mcp-server@latest

Manual config:

{
  "mcpServers": {
    "ulink": {
      "command": "npx",
      "args": ["-y", "@ulinkly/mcp-server@latest"],
      "env": {
        "ULINK_API_KEY": "your-api-key"
      }
    }
  }
}

You can generate an API key from the Ulinkly dashboard under Project Settings > API Keys, or by using the create_api_key tool.

3. Start building

Once connected, your AI assistant can manage your Ulinkly projects directly. Try asking it to:

  • "List my Ulinkly projects"

  • "Create a new smart link for my app"

  • "Show click analytics for my latest link"

  • "Add a custom domain to my project"

Related MCP server: DWZ Short URL MCP Server

Tools

The following Ulinkly tools are available to the LLM, organized by category.

Project Management

  • list_projects: Lists all Ulinkly projects owned by or shared with the authenticated user.

  • get_project: Gets detailed information about a specific project, including configuration and membership.

  • create_project: Creates a new project with a name and default fallback URL.

  • update_project: Updates the name or default URL of an existing project.

  • configure_project: Sets platform-specific configuration (iOS bundle ID, Android package name, deeplink schemas, SHA-256 fingerprints).

  • create_link: Creates a unified or dynamic smart link with platform-specific URLs, parameters, and metadata. Supports allowQueryPassthrough (see below).

  • list_links: Lists all links in a project with pagination.

  • get_link: Gets detailed information about a specific link.

  • update_link: Updates a link's URLs, parameters, or metadata. Supports allowQueryPassthrough (see below).

  • delete_link: Permanently deletes a link. This is irreversible.

  • get_link_analytics: Gets click analytics for a link, including total clicks and breakdowns by platform, country, and referrer.

Query Passthrough

Both create_link and update_link accept an allowQueryPassthrough boolean field (default: false). When enabled, query parameters appended to the link URL at click time (e.g. https://go.example.com/abc?orderId=123&ref=email) are merged into the resolved link's parameters and override any stored parameter with the same key. Parameter values always arrive as strings. The feature works on both immediate app open and after a deferred install — no SDK change is required.

Validation rules for passthrough parameters: keys must match [A-Za-z0-9_-]{1,64}, a maximum of 25 parameters are allowed, each value must be ≤ 1 024 characters, the total payload must be ≤ 4 KB, and the key debug is reserved.

Domain Management

  • list_domains: Lists all domains (shared and custom) associated with a project.

  • add_domain: Adds a custom domain to a project. Requires DNS configuration and verification.

  • verify_domain: Triggers DNS verification for a custom domain.

  • delete_domain: Removes a custom domain from a project. Links using this domain will stop working.

API Keys

  • list_api_keys: Lists all API keys for a project (metadata only, not the key value).

  • create_api_key: Creates a new API key. The full key is only returned once — store it securely.

  • revoke_api_key: Permanently revokes an API key. Applications using this key will immediately lose access.

Account & Billing

  • get_subscription: Gets a project's subscription plan, status, and renewal date. Accepts an optional projectId.

  • list_plans: Lists all available subscription plans with pricing and limits. Accepts an optional billingPeriod (monthly/yearly).

  • get_usage: Gets a project's usage statistics for the current billing period (clicks, links, API calls). Accepts an optional projectId.

Environment Variables

Variable

Default

Description

ULINK_API_KEY

—

API key for authentication (skips browser OAuth flow)

Requirements

  • Node.js 18 or later

Resources

License

MIT

Available Tools

24 tools
add_domainAdd DomainA

Add a custom domain to a ULink project. After adding, you must configure DNS records and verify the domain before it can be used for links.

Inputs: host (required), projectId (required).

authenticateAuthenticateA

Authenticate with ULink by opening a browser window for sign-in or sign-up. No existing account required — new users can create a free account during this flow. This is the first tool to call if check_auth_status reports no valid credentials. After success, all other ULink tools become usable.

Inputs: no named parameters.

check_auth_statusCheck Auth StatusA
Read-only

Check whether valid ULink authentication credentials exist. Returns authentication state without triggering any login flow. Call this first to determine if the authenticate tool needs to be called.

Inputs: no named parameters.

configure_projectConfigure ProjectB

Update platform-specific configuration for a ULink project, such as iOS bundle identifier, Android package name, deeplink schemas, and SHA-256 fingerprints. These settings are used for deep link resolution on mobile platforms.

Inputs: projectId (required), iosTeamId, iosDeeplinkSchema, androidPackageName, +3 more.

create_api_keyCreate API KeyA

Create a new API key for a ULink project. The full key value is only returned once in the response and cannot be retrieved again. Store it securely.

Inputs: name (required), projectId (required).

create_projectCreate ProjectA

Create a new ULink project. A project is the top-level container for links, domains, and API keys. Requires a name and a default fallback URL.

Inputs: name (required), defaultUrl (required).

delete_domainDelete DomainA
Destructive

Remove a custom domain from a ULink project. Any links using this domain will stop working. This action is irreversible.

Inputs: domainId (required).

get_onboarding_statusGet Onboarding StatusA
Read-only

Get the onboarding progress for a ULink project, including which setup steps are complete and what to do next. Requires authentication. Use this after creating a project to guide users through setup.

Inputs: projectId (required).

get_projectGet ProjectA
Read-only

Retrieve detailed information about a specific ULink project by its ID, including configuration, domains, and membership details.

Inputs: projectId (required).

get_subscriptionGet SubscriptionA
Read-only

Retrieve the active subscription for a specific project, including plan name, billing period, status, and renewal date. Subscriptions are per-project.

Inputs: projectId.

get_usageGet UsageA
Read-only

Retrieve usage statistics for a specific project's active billing period, including link clicks, links created, and API calls against plan limits. Usage is per-project.

Inputs: projectId.

list_api_keysList API KeysA
Read-only

List all API keys for a ULink project. API keys are used for server-side and SDK authentication. Returns key metadata (name, prefix, creation date) but never the full key value.

Inputs: projectId (required).

list_domainsList DomainsA
Read-only

List all domains associated with a ULink project, including shared domains and any custom domains that have been added. Shows verification status for each domain.

Inputs: projectId (required).

list_plansList PlansA
Read-only

List all available ULink subscription plans with their features, limits, and pricing. Useful for comparing plans or determining upgrade options.

Inputs: billingPeriod.

list_projectsList ProjectsA
Read-only

List all ULink projects owned by or shared with the authenticated user. Returns an array of project objects including id, name, slug, and default URL.

Inputs: no named parameters.

revoke_api_keyRevoke API KeyA
Destructive

Permanently revoke an API key. Any applications using this key will immediately lose access. This action cannot be undone.

Inputs: apiKeyId (required).

update_projectUpdate ProjectA

Update the name and/or default URL of an existing ULink project. Only the fields you provide will be changed.

Inputs: projectId (required), name, defaultUrl.

verify_domainVerify DomainA

Trigger DNS verification for a custom domain. The domain's DNS records must be correctly configured before verification will succeed. Returns the current verification status.

Inputs: domainId (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.9/5.0

    Scored across 24 tools

    Disambiguation5/5

    Each tool targets a distinct resource and action (e.g., create_project vs configure_project vs update_project are clearly separated by their descriptions). There is no meaningful overlap between link, domain, API key, subscription, or auth tools.

    Naming Consistency5/5

    All tool names follow the same lowercase snake_case verb_noun pattern (list_projects, create_link, verify_domain, etc.). 'authenticate' is a single verb but fits the pattern as a standalone action.

    Tool Count3/5

    With 24 tools, the server falls into the 'heavy' range (16-25). While the breadth of features (projects, links, domains, API keys, billing, analytics) justifies many tools, it still feels a bit much for an MCP server and could be trimmed.

    Completeness3/5

    There is a notable gap: no delete_project tool, despite having create/update/get/list for projects. This creates a dead end for project lifecycle management. Other domains (links, domains, API keys) have full CRUD or equivalent coverage.

    Maintenance

    ActivityActive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      D
      maintenance
      Enables AI assistants to create, manage, and analyze short URLs through complete URL shortening functionality. Supports batch operations, custom domains, click statistics, and comprehensive link management.
      6
      25 npm
      1
      MIT
    • A
      license
      A
      quality
      C
      maintenance
      Connects AI assistants like Claude and Cursor to LinkForty deep links and analytics, enabling natural language management of links, analytics, templates, projects, and SDK integration.
      20
      47 npm
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables AI agents to create, update, organize, and delete short links; render styled QR codes; route visitors by device or country; and read click and scan statistics. Agents can also manage groups and custom domains while changing destinations without breaking printed QR codes or shared short URLs.
      MIT