この半年でClaude DesktopやCursorを使った方なら、エージェントが会話の途中で呼び出せる操作の一覧--ツールパネル--に気づいたことがあるでしょう。それらのツールはMCPサーバーから提供されています。この記事では、それが何を意味するのか、なぜURLショートナーが自然にフィットするのか、そしてエディターを離れることなくエージェントがURLを短縮し、QRコードを生成し、クリックの内訳を取得できるよう@elido/mcp-serverを両クライアントに接続する方法を説明します。
MCPとは何か#
Model Context Protocol(モデルコンテキストプロトコル)は、AIクライアント(Claude Desktop、Cursor、またはその他の互換エージェントフレームワーク)が外部ツールを均一なJSON-RPCインターフェースを通じて検出・呼び出せるようにする小さなオープン標準です。サーバープロセスはローカルマシン(または管理するホスト)上で動作し、型付きツールのリストを公開し、標準入出力を通じてクライアントと通信します。クライアントがツール呼び出しリクエストを送ると、サーバーが処理を実行し、結果がコンテキストとして会話に戻ってきます。モデルはAPIキーを見ません--サーバーが見ます。ワイヤープロトコル全体はメッセージあたり数キロバイトに収まり、クライアント側にインストールが必要なSDKはなく、サーバーはstdinを読んでstdoutに書けるあらゆる言語で書けます。
一言でまとめると:MCPとは、AIクライアントがあなたが制御するコードを呼び出すための標準化された仕組みです。エージェントが意図を記述し、ツールが作業を行い、エージェントが結果を取り込みます。
なぜURLショートナーがここに適しているのか#
コンテンツワークフローにおける短縮リンクの摩擦ポイントは常に同じです:メールやキャンペーンブリーフの起草中に、CTA用のブランド付き短縮URLが必要になり、ダッシュボードに切り替えてリンクを作成し、コピーして戻ってきてペーストしなければなりません。そのコンテキストスイッチは30秒かかりますが、それ以上に起草の流れが断ち切られます。
MCPはそのコンテキストスイッチをなくします。@elido/mcp-serverが接続されていれば、エージェントはインラインでcreate_linkを呼び出せます--短縮URLが会話に現れ、そのまま作業を続けられます。同じことが、一見わかりにくいケースにも当てはまります:
- 5つのチャネル別UTMリンクが必要な製品ローンチアナウンスの起草:エージェントは異なるタグを付けて
create_linkを5回連続で呼び出し、5つすべてをコピーにインラインで埋め込めます。 - 印刷物用QRコードの生成依頼:
generate_qrがエージェントがコンテキスト内に表示するSVGアーティファクトを返します。 - 先週のキャンペーンパフォーマンスのレビュー:
query_analyticsがダッシュボードにログインすることなく、任意のリンクまたはワークスペース全体のクリック時系列をタイムゾーン補正して取得します。
これらのいずれも、モデルがあなたのAPIを理解することを必要としません。@elido/mcp-serverが型付きツール呼び出しを認証済みRESTリクエストに変換し、結果を返す仕組みが必要なのです。
ElидоのMCPサーバーはこのモデルに素直に適合します。AIクライアントとElido REST APIの間に立つローカルNodeプロセスです。エージェントがcreate_linkを呼び出すと、サーバーはそのツール呼び出しを認証済みのPOST /v1/workspaces/{id}/linksリクエストに変換し、ワークスペース解決を処理し、エージェントが読める構造化テキストとして結果を返します。APIキーはサーバープロセスの外に出ることはなく、クライアントはツールの結果だけを見ます。
サーバーが現在提供するもの#
@elido/mcp-serverはnpmに@elido/mcp-serverとして公開されています(Apache-2.0、バージョン0.1.x)。ソースはElidoモノレポのpackages/mcp-server/にあります。stdio MCPトランスポート--stdin/stdout上の行区切りJSON-RPC 2.0--を使用し、Node 20+以外のランタイム依存関係はありません。公式の@modelcontextprotocol/sdkパッケージは使用していません;APIキーを渡す前に監査しやすいよう、パッケージを小さく保つためにワイヤーは手書きです。
0.1.xで利用可能な5つのツール:
| ツール | 機能 |
|---|---|
create_link | オプションのスラッグ、ドメイン、タイトル、タグ付きでURLを短縮します。短縮URLを含む完全なリンクレコードを返します。 |
list_links | ワークスペースの最近のリンクをページネーション付きで一覧表示します。 |
query_analytics | ワークスペースまたは単一リンクのクリック数時系列を、任意のIANAタイムゾーンで時間または日単位でバケット化して返します。 |
generate_qr | 既存リンクのQRコード(SVGまたはPNG)を生成します。 |
list_workspaces | APIキーがアクセスできるワークスペースを列挙します。 |
ワークスペースの管理操作--メンバーの招待、APIキーのローテーション、カスタムドメインの設定、課金の管理--は意図的にMCPの対象外としています。それらはダッシュボードで行います。ツールの対象範囲は、コンテンツやキャンペーン作業のエージェントがインラインで実際に必要とするものに絞り込まれています。
APIキーの取得#
いずれのクライアントを設定する前に、エージェントが操作するワークスペースにスコープされたAPIキーが必要です。
- ElidoダッシュボードでSettings → API Keysを開きます。
- New keyをクリックし、エージェントを識別する名前(例:
claude-desktop-mcp)を付け、Link read/write + Analytics readスコープを選択します。特定の理由がない限り、ワークスペース管理スコープは付与しないでください。 - キーをコピーします--一度しか表示されません。Settings → Workspace → Generalで確認できる数値のワークスペースIDも必要になります。
キーはバージョン管理に含めないでください。以下に説明するMCP設定ファイルはホームディレクトリまたはプロジェクトローカルパスに置きます;どちらも共有リポジトリにコミットしないでください。
APIキースコープと、すべてのツール呼び出しを記録する監査ログについての詳細は、APIキーのドキュメントをご覧ください。
Claude Desktopの設定#
Claude DesktopはMCPサーバーリストを以下の場所のJSONファイルから読み込みます:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
ファイルが存在しない場合は作成してください。mcpServers内にelidoサーバーブロックを追加します:
{
"mcpServers": {
"elido": {
"command": "npx",
"args": ["-y", "@elido/mcp-server"],
"env": {
"ELIDO_API_KEY": "elido_pk_your_key_here",
"ELIDO_WORKSPACE_ID": "42"
}
}
}
}
elido_pk_your_key_hereを実際のキーに、42をワークスペースIDに置き換えてください。
ELIDO_WORKSPACE_IDは、キーがちょうど1つのワークスペースにしかアクセスできない場合はオプションです--サーバーが自動解決します。キーが複数のワークスペースを参照できる場合は明示的に設定してください;設定がないと、ワークスペースが必要なすべてのツール呼び出しでサーバーが余分なラウンドトリップを行い、後でアクセスが2番目のワークスペースに拡張された場合の動作が予測できなくなります。
ファイルを保存したら、Claude Desktopを終了して再起動してください。ElidoツールがツールパネルLに表示されます。表示されない場合は、Claude Desktopのデベロッパーコンソール(Help → Show developer tools)でサーバープロセスのstderr出力を確認してください--最も一般的な原因はキーのタイプミスやcommandパスの解決失敗です。
npxで最新版を取得する代わりに正確なパッケージバージョンを固定したい場合は、まずグローバルにインストールします:
npm install -g @elido/[email protected]
次にcommand / argsのペアを置き換えます:
{
"command": "elido-mcp-server",
"args": []
}
Cursorの設定#
Cursorはワークスペースルートの.cursor/mcp.jsonファイルによるプロジェクトローカルのMCP設定をサポートしています。フォーマットはClaude DesktopのmcpServersブロックと同一です:
{
"mcpServers": {
"elido": {
"command": "npx",
"args": ["-y", "@elido/mcp-server"],
"env": {
"ELIDO_API_KEY": "elido_pk_your_key_here",
"ELIDO_WORKSPACE_ID": "42"
}
}
}
}
プロジェクトルートに.cursor/mcp.jsonを作成してください(リポジトリが共有されている場合は.gitignoreに追加してください--このファイルにはライブAPIキーが含まれます)。Cursor Settings → Features → MCPを開き、サーバーが一覧表示されてグリーンのステータスインジケーターが表示されることを確認し、エージェントパネルを再起動してください。ElidoツールがComposerのツールリストに表示されます。
プロジェクトごとの設定ファイルなしに全プロジェクトでツールを利用できるようにするには、~/.cursor/mcp.jsonにグローバルなCursor MCP設定を行うこともできます。優先順位のルールはClaude Desktopと同じパターンに従います。
セッション例:キャンペーンメールの起草とCTAの短縮#
サーバーが接続された後の実際のやり取りをご紹介します。エージェントのトランスクリプトは要約されていますが、実際のツール呼び出しの形を反映しています。
ユーザー: 春のセール用の短いキャンペーンメールを起草してください。CTAはhttps://shop.example.com/spring-2026にリンクさせてください--タグspring-2026を付けて短縮し、利用可能であればスラッグspringを使ってください。
Claude: まずURLを短縮してから、その結果を元にメールを起草します。
[ツール呼び出し:create_link]
{
"destination_url": "https://shop.example.com/spring-2026",
"slug": "spring",
"title": "Spring 2026 sale CTA",
"tags": ["spring-2026"]
}
[ツール結果]
{
"id": 1847,
"short_url": "https://s.elido.me/spring",
"destination_url": "https://shop.example.com/spring-2026",
"slug": "spring",
"tags": ["spring-2026"],
"created_at": "2026-05-11T09:14:22Z"
}
Claude: 短縮リンクはhttps://s.elido.me/springです。以下がメールの下書きです:
件名:春のセール--今週限り最大40%オフ
[名前]様、
春のセールが始まりました。新着アイテム、クリアランス品、そして特別なタイミングのために取っておいたものをご用意しています。
セールを見る → https://s.elido.me/spring
日曜日終了。コード不要。
エージェントはプロンプトのパラメーターでcreate_linkを呼び出し、標準的なリンクレコードを受け取り、下書きでshort_urlフィールドを使用しました。スラッグspringが使用済みだった場合、APIは409を返し、エージェントは代替案を試みるか、解決のためにコンフリクトを表面化させていたでしょう。
ツール呼び出しでdomain_idが指定されていないことに注目してください。サーバーが自動解決します:domain_idが指定されていない場合、ワークスペースのドメインリストを取得して最初の確認済みドメインを選択します。フリープランのワークスペースではf.elido.me;有料プランではs.elido.me、またはカスタムドメインが設定されている場合はそちらになります。特定のドメインが必要な場合は、数値IDを明示的に渡してください--list_workspacesまたはダッシュボードで確認できます。
1回のターンで複数のリンク処理をエージェントに依頼することもできます。「春のセールページへのリンクをメール、Twitter、LinkedIn用にUTMタグ付きで作成して」とすれば、異なるタグセットで3回のcreate_link呼び出しが行われ、エージェントはキャンペーンブリーフに直接貼り付けられる表として3つの短縮URLを提示します。このパターンは定型的なキャンペーン設定においてダッシュボードでの手動UTMビルダー作業を置き換えますが、ワークスペースレベルのUTMテンプレートシステム(UTMトラッキングガイドで解説)はまだサポートしていません--そのレベルの自動化にはまだREST APIを使います。
セッション例:クリックの内訳の照会#
2つ目のパターンは、ダッシュボードを開かずにキャンペーンレビュー中にアナリティクスを取得することです。
ユーザー: spring-2026リンクは先週どのように機能しましたか?ベルリン時間で日別に分けてください。
Claude: そのリンクの時系列を取得します。
[ツール呼び出し:query_analytics]
{
"link_id": 1847,
"from": "2026-05-04",
"to": "2026-05-10",
"interval": "day",
"tz": "Europe/Berlin"
}
[ツール結果]
{
"items": [
{ "bucket": "2026-05-04", "clicks": 312 },
{ "bucket": "2026-05-05", "clicks": 489 },
{ "bucket": "2026-05-06", "clicks": 701 },
{ "bucket": "2026-05-07", "clicks": 1204 },
{ "bucket": "2026-05-08", "clicks": 988 },
{ "bucket": "2026-05-09", "clicks": 623 },
{ "bucket": "2026-05-10", "clicks": 417 }
],
"total": 4734,
"tz": "Europe/Berlin"
}
Claude: 春のリンクは先週4,734クリックを受けました。水曜日〜木曜日がピーク(701→1,204)で、週央のメール送信と一致します。週末にかけてトラフィックが減少しています。木曜日の朝ベルリン時間にキャンペーンメールを送信したのであれば、スパイクのタイミングが合います。
複数のリンクを比較するには、リンクごとに1回query_analyticsを呼び出して結果をまとめるようエージェントに依頼します。ツール呼び出しは数回多くなりますが、エージェントがループを処理してくれるので、ダッシュボードを開いたりスクリプトを書いたりすることなく並べた表が得られます。
tzパラメーターにより、日付バケットがUTCではなく地元の深夜0時に揃います。UTCで照会した場合、CET午前9時に送信したキャンペーンメールの初日のトラフィックが2つのUTC日付に分割されてしまいます--tz: Europe/Berlinでそれを防げます。タイムゾーンサポートはMCPサーバーページで説明しているPhase 6.Aアナリティクス作業によるものです。
セキュリティ--キーのスコープ絞り込み、サーバーの送信内容、監査ログ#
チームで利用する前に知っておくべきことがいくつかあります。
キーのスコープを絞り込む。 create_linkとgenerate_qrツールにはリンク書き込みアクセスが必要です。query_analyticsにはアナリティクス読み取りが必要です。list_linksとlist_workspacesにはリンク読み取りが必要です。ワークフローが読み取り専用--レビュー中にメトリクスを取得する--であれば、アナリティクス読み取り+リンク読み取りのみのキーを作成してサーバーに渡してください。サーバーはキーが許可するエンドポイントのみ呼び出します;それ以外はすべて403を返し、エージェントのレスポンスにエラーとして表示されます。
サーバーが送信するもの。 すべてのツール呼び出しはAuthorization: Bearer <key>付きのapi.elido.appへの認証済みリクエストになります。サーバーはすべてのリクエストにUser-Agent: elido-mcp-server/0.1.0ヘッダーを送信します;この文字列は監査ログに表示されます。サーバー自体がAnthropicやサードパーティサービスにデータを送信することはありません--MCPサーバーはクライアントとElido APIの間を仲介するローカルプロセスです。AIクライアントが自身のバックエンドに送信するデータ(Claude Desktopのプロンプト、コンテキストに戻るツール結果)は、Elidoではなく、AnthropicまたはCursor自身のデータポリシーによって管理されます。
監査ログ。 MCPサーバーが行うすべてのAPI呼び出しは、ダッシュボードのSettings → Audit Logに、キー名と発信元IPとともに記録されます。予期しないツール呼び出しが見つかった場合は、Settings → API Keysからすぐにキーをローテーションしてください。監査ログはProおよびBusinessプランで利用可能です。
設定ファイル内のキー。 claude_desktop_config.jsonと.cursor/mcp.jsonのenvブロックはキーをプレーンテキストで保存します。個人のマシンではこれで問題ありませんが、共有または管理された環境ではシステムキーチェーンやシークレットマネージャーを通じてキーを注入し、MCP設定が間接的に参照する環境変数を通じて読み取るようにすることをお勧めします。チームのセットアップでは、各メンバーが独自のキーを持つべきです--共有キーでは監査ログの帰属が意味をなさなくなります。
正直な制限事項#
MCPサーバーが意図的に行わないことがいくつかあります。
ワークスペース管理操作なし。 チームメンバーの招待、カスタムドメインの設定、プランの課金管理、ワークスペースの作成や削除--これらはいずれもツールの対象外です。これらの操作は十分に重要であるため、ダッシュボードでログインした人間が必要とする制御が適切です。MCPの対象範囲は、コンテンツやキャンペーンエージェントがインラインで必要とする作業に意図的に絞り込まれています。ワークスペースのプロビジョニングを自動化する必要がある場合は、REST APIとTerraformプロバイダーが適切なツールです。
リアルタイムストリーミングなし。 現在のトランスポートは同期リクエスト/レスポンスのstdioです。SSEトランスポートはロードマップにあります。ほとんどのエージェントワークフロー--リンクの作成、QRコードの取得、週次時系列の取得--では同期モデルで問題ありません。大きなリンクリストのストリーミングやライブクリックカウンターの監視が必要なユースケースでは、現時点ではダッシュボードまたはREST APIが適切なツールです。
レート制限が適用されます。 Elido APIは、呼び出し元が人間、スクリプト、またはMCPサーバーであるかに関わらず、キーごとのレート制限を適用します。プランティアごとの制限はAPIリファレンスにあります。create_linkをタイトなループで呼び出すエージェントワークフロー--数百のリンクをプログラム的に一括作成する--は、数百の個別create_linkツール呼び出しを発行する代わりに、RESTの一括インポートエンドポイント(POST /v1/links/bulk)を直接使用してください。MCPサーバーはインタラクティブなインライン使用に最適化されています;一括操作はスクリプティングに属します。
query_analyticsはクリック数のみ返します。 query_analyticsツールが返す時系列は、時間でバケット化されたクリック数です。地理的な内訳、デバイス分割、リファラーデータ、またはコンバージョン帰属は返しません。それらはダッシュボードとフルアナリティクスREST APIで利用可能ですが、現在のMCPツール対象外です。エージェントワークフローでリンク別の国別内訳が必要な場合は、REST APIを直接呼び出してください。
次のステップ#
サーバーのソースとイシュートラッカーはElidoモノレポのpackages/mcp-server/にあります。パッケージはnpmプロベナンス付きで公開されているため、すべてのリリースはビルド元のコミットに暗号的に結びついています--公開アーティファクトの監査は簡単です。
MCP統合ページにはツールリファレンス、スコープマトリックス、プライベートElidoインスタンスにELIDO_API_BASEを向けるためのセルフホスト設定があります。ワークスペースMCP設定を含むプランをご利用の場合、同ページではチームのキーローテーションワークフローも説明しています。
まず試す価値のある2つのセットアップ:
-
上記の手順でClaude Desktopを接続し、新しい会話を開いて「タグ
mcp-testを付けてhttps://example.com/testを短縮して」と入力してみてください。ツール呼び出しが実行され、レスポンスに短縮URLが表示されるのを確認できます。セットアップ全体は5分以内で完了するはずです。 -
コンテンツやドキュメント作業にCursorをすでに使用している場合は、プロジェクトルートに
.cursor/mcp.jsonを置いて、Composerに「先週のトップリンクをクリック数でまとめて」と依頼してみてください。list_linksとquery_analyticsの呼び出しがインラインで行われ、エージェントがチャットに直接サマリーを書き込みます。
どちらもベータ(0.1.x)です--ツールの対象範囲は拡大しますが、既存のツール入力は0.1.xの範囲内では破壊的変更が行われません。ここに説明されている通りに動作しない場合は、area:mcpラベルを付けてイシューを開いてください。リグレッションとして対応します。
ブログの関連記事#
- リージョン内で世界中どこでもリダイレクトのp95を15ms未満に達成する
- Google SheetからのURLの一括インポート(実際のキャンペーンワークフロー)
- クリックアナリティクスにClickHouseを使う理由(Postgresではなく)
- SaaS向けURLショートナー:ライフサイクル、オンボーディング、プロダクト内コミュニケーション
コストの観点でElidoを評価している場合、MCPサーバーはすべてのプランで利用可能です--ツール呼び出しは他のクライアントと同じAPIレート制限にカウントされます。上記の監査ログの可視性にはPro以上が必要です。プランの全比較は料金ページをご覧ください。
- Marius
Elidoを試す
URLを貼り付けて短縮リンクを取得
登録不要。リンクは30日間有効。永久に保存するには登録してください。
Free、登録不要 · 1日あたり2件