Ulink

io.github.FlywheelStudio由 GitHub 账号 FlywheelStudio 发布v0.1.22更新于 Nov 3, 2026

Deep linking for iOS, Android, Flutter & React Native. Firebase Dynamic Links alternative.

概览

AI 生成的概览

将助手连接到 Ulinkly 账户,用于创建和管理深度链接项目、智能链接、自定义域名与 API 密钥。

可以做什么
  • 列出、创建、更新并配置项目,包括 iOS 与 Android 深度链接设置
  • 创建、列出、查看、更新并永久删除统一链接或动态智能链接
  • 查看单条链接的点击分析,可按平台、国家和来源细分
  • 列出、添加、验证并删除自定义域名
  • 列出、创建并吊销项目 API 密钥
  • 查询订阅、可用套餐以及各项目的用量
适用场景
适合使用 Ulinkly 深度链接(Firebase Dynamic Links 的替代方案)的场景,希望助手在对话中完成项目搭建、生成智能链接、配置自定义域名或获取点击分析时使用。
运行要求
通过 npx 在本地运行,需要 Node.js 18 或更高版本。认证方式有两种:首次使用时在浏览器中登录(令牌保存在本地 Ulinkly 配置中并与 Ulinkly CLI 共享),或为无界面和 CI 环境设置 ULINK_API_KEY 环境变量。需要 Ulinkly 账户,登录过程中可免费注册。
安装前请注意
该服务器可创建、修改并永久删除链接、域名和 API 密钥;删除链接或域名不可恢复,且会使现有短链接立即失效。新建的 API 密钥只显示一次。它持有账户凭据(共享的本地令牌文件或 ULINK_API_KEY),并将项目、链接和分析数据发送给 Ulinkly。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Ulink,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

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:

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

Cursor:

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

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:

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:

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

Manual config:

json
{  "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"

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).
Link Management
  • 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

VariableDefaultDescription
ULINK_API_KEY—API key for authentication (skips browser OAuth flow)

Requirements

  • Node.js 18 or later

Resources

License

MIT

来源:README.md,提交 03b7410

工具

24

check_auth_status

Check Auth Status

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

无需输入参数。

authenticate

Authenticate

Authenticate with Ulinkly 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. If a browser cannot be opened automatically, the response includes an 'authUrl' — present it to the user as a clickable link to open manually, then continue. After success, all other Ulinkly tools become usable.

无需输入参数。

get_onboarding_status

Get Onboarding Status

Get the onboarding progress for a Ulinkly 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.

输入参数projectId必填

list_projects

List Projects

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

无需输入参数。

get_project

Get Project

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

输入参数projectId必填

create_project

Create Project

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

输入参数name必填defaultUrl必填

update_project

Update Project

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

输入参数nameprojectId必填defaultUrl

configure_project

Configure Project

Update platform-specific configuration for a Ulinkly 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.

输入参数iosTeamIdprojectId必填iosDeeplinkSchemaandroidPackageNameiosBundleIdentifierandroidDeeplinkSchemaandroidSha256Fingerprints

list_domains

List Domains

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

输入参数projectId必填

add_domain

Add Domain

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

输入参数host必填projectId必填

verify_domain

Verify Domain

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.

输入参数domainId必填

delete_domain

Delete Domain

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

输入参数domainId必填

list_api_keys

List API Keys

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

输入参数projectId必填

create_api_key

Create API Key

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

输入参数name必填projectId必填

revoke_api_key

Revoke API Key

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

输入参数apiKeyId必填

get_subscription

Get Subscription

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

输入参数projectId

list_plans

List Plans

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

输入参数billingPeriod

get_usage

Get Usage

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.

输入参数projectId

版本历史

2
  1. v0.1.22最新Oct 30, 2026
  2. v0.1.15Sep 16, 2026

评分

已满足适用检查项的 90%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分
  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分