limelink-mcp-server
@limelink/mcp
한국어 · Documentation · Capability reference
LimeLink 動的リンク管理のための Model Context Protocol (MCP) サーバーです。Claude Code、Claude Desktop、または MCP 互換クライアントから直接、動的リンクの作成、検索、管理ができます。
開始にあたり API キーは不要です! ドキュメントと SDK セットアップガイドは、設定なしで利用できます。接続するだけで、AI アシスタントと一緒に LimeLink の機能を探索できます。
特徴
ドキュメントリソース — LimeLink ドキュメント(15 ページ + インデックス)に AI アシスタントから直接アクセス — API キー不要
5 つのツール — プロファイルとプロジェクトの検出、動的リンクの作成、リンクの検索(API ツールには設定済みプロファイルが必要)
インメモリキャッシュ — ドキュメント取得用の 1 時間 TTL キャッシュ
ランタイム
Node.js 18 以降
stdio トランスポートのみ対応。Remote MCP/HTTP トランスポートは非対応
npm パッケージ:
@limelink/mcp。グローバル実行ファイル:limelink-mcpstdout は MCP プロトコル用に予約されています。診断ログとラッパーログは stderr を使用してください
完全な運用契約については、インストールと設定 と ネットワーク動作 を参照してください。
API キーなしで利用できる機能
機能 | カテゴリ | API キー | 説明 |
| リソース | 不要 | ドキュメントの完全なインデックス |
| リソース | 不要 | 個別のドキュメントページ 15 件 |
| ツール | 不要 | API に接続せずにローカル設定済みプロファイルのエイリアスを一覧表示 |
| ツール | 必須 | 選択した Organization プロファイルのプロジェクトを一覧表示 |
| ツール | 必須 | 選択したプロジェクトのカスタムドメインを一覧表示 |
| ツール | 必須 | API 経由で V2 Core Links を作成 |
| ツール | 必須 | サフィックスでリンクを検索 |
| ツール | 必須 | URL でリンクを検索 |
Related MCP server: lynxprompt-mcp
クイックスタート
API キーなし(ドキュメントとガイド)
API キーは不要です。接続して、LimeLink のドキュメントとセットアップガイドをすぐに探索できます:
{
"mcpServers": {
"limelink": {
"command": "npx",
"args": ["-y", "@limelink/mcp"]
}
}
}AI アシスタントに次のように質問してみてください:
「LimeLink の getting-started ドキュメントを読んで」
「iOS のディープリンク設定はどうやるの?」
「LimeLink SDK 統合ガイドを見せて」
Organization プロファイルあり(全機能)
以下に示すバージョン 1 のプロファイルファイルを作成し、その絶対パスを渡します:
{
"mcpServers": {
"limelink": {
"command": "npx",
"args": ["-y", "@limelink/mcp"],
"env": {
"LIMELINK_PROFILES_FILE": "/absolute/path/to/limelink-profiles.json"
}
}
}
}グローバルインストールでの使用
npm install -g @limelink/mcp{
"mcpServers": {
"limelink": {
"command": "limelink-mcp",
"env": {
"LIMELINK_PROFILES_FILE": "/absolute/path/to/limelink-profiles.json"
}
}
}
}設定
Claude Code
MCP サーバーを追加する最も簡単な方法は、claude mcp add コマンドを使用することです:
# Without API key (docs & guides only)
claude mcp add --scope user --transport stdio limelink -- npx -y @limelink/mcp
# With API key (full features)
claude mcp add --scope user --transport stdio limelink \
--env LIMELINK_PROFILES_FILE=/absolute/path/to/limelink-profiles.json \
-- npx -y @limelink/mcpスコープオプション:
--scope user— すべてのプロジェクトで利用可能--scope project—.mcp.jsonに保存(Git 経由でチームと共有可能)
Claude Desktop およびその他の MCP クライアント
クライアントの設定ファイルに JSON 設定を追加します:
クライアント | 設定ファイル |
Claude Desktop (macOS) |
|
Claude Desktop (Windows) |
|
プロファイルファイル
{"version":1,"defaultProfile":"work","profiles":{"work":{"apiKey":"your_api_key","organizationLabel":"Work","projects":{"marketing":"11111111-1111-4111-8111-111111111111"}}}}環境変数
変数 | 必須 | デフォルト | 説明 |
| いいえ | — | 名前付き Organization 認証情報プロファイルを含むバージョン 1 JSON ファイルのパス。 |
LIMELINK_API_KEY と LIMELINK_PROJECT_ID は無視されます。認証情報プロファイルが設定されていない場合、API バックエンドのツールはエージェントを Organizations に誘導し、Organization API キーを発行してプロファイルファイルを設定するように指示します。プロジェクトバックエンドのツールは、Project UUID を直接受け付けます。プロファイルのオプションの projects マップは、頻繁に使用するプロジェクトの便利なエイリアスとして推奨されますが、必須ではありません。list-projects での検出後にエイリアスを追加すると便利です。プロファイルは、最初の API バックエンド呼び出し時に認証情報のイントロスペクションを通じて遅延初期化されます。エイリアスの追加を含むプロファイルファイルの変更には、MCP サーバーの再起動が必要です。
API キーは LimeLink Dashboard から取得できます。API キーがなくても、ドキュメントリソースと SDK セットアップガイドは完全に利用可能です。
ツール
list-profiles
API に接続せずに、設定済みエイリアス、Organization ラベル、デフォルトステータス、現在の初期化ステータスを一覧表示します。初期化済みプロファイルにはスコープが含まれます。API キーの値は機密情報のため、決して返されません。Organization、Project、Custom Domain、認証情報の識別子とキープレフィックスは非機密の識別子であり、API バックエンドのツール応答で有用な場合に表示されることがあります。
list-projects
選択したプロファイルの認証情報から検出された Organization 内のプロジェクトを一覧表示します。オプションの profile を受け付けます。認証情報には projects:read が必要です。
list-custom-domains
必須の project(エイリアスまたは UUID)のカスタムドメインを一覧表示します。オプションの profile を受け付けます。認証情報には domains:read が必要です。
create-link
プラットフォーム固有のディープリンク、カスタムドメイン選択、ソーシャルプレビュー、UTM トラッキングを備えた V2 Core Link を作成します。
パラメータ:
パラメータ | 型 | 必須 | 説明 |
| string | いいえ | 短い URL パス識別子(1〜100)。省略時は API が生成 |
| string | はい | ターゲット URL(最大 500) |
| string | はい | リンク名(最大 100) |
| string | はい | 選択したプロファイル内のプロジェクトエイリアスまたは Project UUID |
| string | いいえ | プロファイルエイリアス。指定しない場合は設定済みデフォルトまたは唯一のプロファイルを使用 |
| UUID string | いいえ | Core Link 用のカスタムドメイン |
| boolean | いいえ | アナリティクストラッキングを有効化 |
| object | いいえ | iOS ディープリンクオプション |
| object | いいえ | Android ディープリンクオプション |
| object | いいえ | ソーシャルプレビュー + UTM オプション |
Claude での使用例:
「https://example.com/product/123 への動的リンクをサフィックス 'product-123' で作成して、アナリティクスを有効にして」
get-link-by-suffix
サフィックスで動的リンクを検索します。
パラメータ | 型 | 必須 | 説明 |
| string | はい | 動的リンクのサフィックス |
| string | はい | 選択したプロファイル内のプロジェクトエイリアスまたは Project UUID |
| string | いいえ | プロファイルエイリアス。指定しない場合は設定済みデフォルトまたは唯一のプロファイルを使用 |
get-link-by-url
完全な URL を使用して V2 API 経由でリンクを解決します。バックエンドが、URL が Free デフォルト名前空間、プロジェクトホスト名、またはアクティブなカスタムドメインのいずれに属するかを判断します。プロジェクトセレクターやローカルのサフィックス解析は不要です。
URL は絶対 HTTPS で、パスセグメントが /{suffix} の 1 つのみで、クエリ、フラグメント、明示的なポート、認証情報を含まない必要があります。
パラメータ | 型 | 必須 | 説明 |
| string | はい | 解決する完全な LimeLink URL(最大 2048 文字) |
| string | いいえ | プロファイルエイリアス。指定しない場合は設定済みデフォルトまたは唯一のプロファイルを使用 |
リソース
limelink://docs/index
LimeLink ドキュメントの完全なインデックス(llms.txt)を返します。
limelink://docs/{slug}
個別のドキュメントページを返します。利用可能なスラッグ:
introduction、getting-started、project、application、dynamic-link、create-link、link-detail、link-management、appearance、sdk-integration、ios-sdk、android-sdk、api-integration、advanced、llm-agent
Claude での使用例:
「LimeLink の API 統合ドキュメントを読んで」
Claude は
limelink://docs/api-integrationにアクセスします
開発
前提条件
Node.js >= 18
pnpm
セットアップ
git clone https://github.com/hellovelop/limelink-mcp-server.git
cd limelink-mcp-server
pnpm install
pnpm run buildローカルでの実行
LIMELINK_PROFILES_FILE=/absolute/path/to/limelink-profiles.json node dist/index.jsテスト
pnpm test # Unit tests
pnpm test:e2e # E2E tests (MCP stdio communication)
pnpm test:watch # Unit tests in watch mode
pnpm test:coverage # Coverage reportプロジェクト構造
src/
├── index.ts # Entry point
├── lib/
│ ├── config.ts # Environment variable loading
│ ├── cache.ts # In-memory TTL cache
│ ├── api-client.ts # LimeLink API HTTP client
│ └── doc-fetcher.ts # Documentation fetcher with caching
├── tools/
│ ├── create-link.ts # create-link tool
│ ├── get-link-by-suffix.ts
│ └── get-link-by-url.ts
└── resources/
└── documentation.ts # Documentation resourcesライセンス
MIT
Available Tools
3 toolscreate-linkB
Create a Limelink dynamic link with platform-specific deep linking, social previews, and UTM tracking
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | No | Project ID the link belongs to. Uses LIMELINK_PROJECT_ID env if not provided. | |
| stats_flag | No | Enable analytics tracking | |
| apple_options | No | iOS-specific deep linking options | |
| android_options | No | Android-specific deep linking options | |
| dynamic_link_url | Yes | Target URL for desktop or fallback | |
| dynamic_link_name | Yes | Link name for management and identification | |
| additional_options | No | Social preview and UTM tracking options | |
| dynamic_link_suffix | Yes | Unique identifier for the short URL path |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It only says 'create' but discloses no side effects, permissions, return format, error behavior, or any other behavioral traits. Similar to the update_drive example, this lacks required transparency for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that efficiently conveys the core action and key features. No wasted words or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 8 parameters, nested objects, and no output schema or annotations, yet the description is minimal. It doesn't mention return values, side effects, or how the parameters work together. The schema covers parameter details but the overall context is insufficient for reliable use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% parameter description coverage, so the schema already explains each parameter. The description adds a high-level categorization (platform-specific, social previews, UTM tracking) but no additional semantic detail. Baseline 3 applies per instructions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a Limelink dynamic link, with specific features listed (platform-specific deep linking, social previews, UTM tracking). The verb 'create' unambiguously distinguishes it from sibling retrieval tools like get-link-by-suffix and get-link-by-url.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, when to choose creation over retrieval, or any exclusions. This is a clear gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-link-by-suffixA
Look up a Limelink dynamic link by its suffix
| Name | Required | Description | Default |
|---|---|---|---|
| suffix | Yes | Dynamic link suffix to look up | |
| project_id | No | Project ID. Uses LIMELINK_PROJECT_ID env if not provided. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states 'Look up', which implies a read-only operation, but does not disclose potential side effects, return format, authentication needs, error behavior, or whether the tool modifies anything. This goes beyond what the schema provides.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is front-loaded with the action and resource, containing no redundant words or restatements. It is maximally concise while still conveying the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a simple lookup operation, and the schema covers all parameters. However, with no output schema and no annotations, the description does not mention what is returned (e.g., the full link details) or any edge cases, leaving a slight gap in completeness despite the low complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% coverage for both parameters (suffix and project_id), including descriptions. The tool description adds no additional parameter-level detail, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Look up') on a specific resource ('Limelink dynamic link') with a specific lookup key ('suffix'), clearly distinguishing it from the sibling 'get-link-by-url' which uses a URL as the key.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you have a suffix, but it does not explicitly mention when to use this tool versus the sibling 'get-link-by-url' or provide any exclusion guidance. The context of sibling names makes the distinction apparent, but it is only implied, not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-link-by-urlA
Look up a Limelink dynamic link by its full URL. Supports both Free (deep.limelink.org) and Pro ({project}.limelink.org/link/) URL formats.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Full Limelink dynamic link URL to look up | |
| project_id | No | Project ID. Uses LIMELINK_PROJECT_ID env if not provided. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden. It does not disclose whether this is a read-only operation, what the return value looks like, or any error behavior. The only behavioral addition is the URL format support, which is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exactly two sentences, front-loaded with the primary purpose, and contains no redundant or filler content. Every clause provides necessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple lookup tool with fully documented parameters, the description covers the core purpose and URL format limitations. It does not describe return values or error conditions, but given the simplicity and schema coverage, this is an acceptable gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds value by explaining the two accepted URL formats, giving more meaning to the 'url' parameter beyond the schema's generic description. No info on project_id, but schema covers it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool looks up a Limelink dynamic link by its full URL, using a specific verb and resource. It distinguishes itself from siblings like get-link-by-suffix (lookup by suffix) and create-link (creation).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides useful context by listing the supported URL formats (Free and Pro), which helps users understand when this tool is applicable. However, it does not explicitly mention alternatives or when not to use it, but the context is clear enough for a differentiated tool.
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.
3 tool updates
v0.0.5- First observed
create-link - First observed
get-link-by-suffix - First observed
get-link-by-url
TDQS
Scored across 3 tools
Each tool has a clear distinct purpose: create-link creates a new link, while get-link-by-suffix and get-link-by-url both retrieve links but by different keys (suffix vs URL). The two retrieval methods might be confused, but their parameter differences make them separable.
All tool names follow a consistent verb-noun pattern with hyphens (create-link, get-link-by-suffix, get-link-by-url), and the retrieval variants use a uniform 'by-...' modifier. The convention is predictable and uniform.
With only 3 tools, the server is minimal but reasonably scoped for its purpose of creating and looking up links. It is on the low end but not overly thin, as the tools are directly relevant to the core functionality.
The server covers create and read operations but lacks update and delete, which are important for lifecycle management of dynamic links. Agents cannot modify or remove existing links, leaving a notable gap for full CRUD coverage.
Maintenance
Related MCP Connectors
MCP server for secureFlows: token-free URL builders and integration-linting tools for AI agents.
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
MCP server providing access to the Scorecard API to evaluate and optimize LLM systems.
Related MCP Servers
- FlicenseNot gradedqualityFmaintenanceA production-ready MCP server built with FastAPI, providing an enhanced tool registry for creating, managing, and documenting AI tools for Large Language Models (LLMs).34-
- AlicenseBqualityAmaintenanceMCP server that exposes any LynxPrompt instance to LLMs, enabling browsing, searching, and managing AI configuration blueprints and prompt hierarchies.643 npm2GPL 3.0

@linklee/mcp-serverofficial
AlicenseAqualityDmaintenanceMCP server for Linklee that enables creating short links, listing links, getting click analytics, and managing workspace tags.47 npmMIT- AlicenseNot gradedqualityDmaintenanceMCP server that provides tools to interact with the LiteLLM proxy API, enabling LLM completions, embeddings, image generation, and admin operations.43 npmMIT