Elido MCPサーバーは、Claude Desktop、Cursor、Claude Codeがチャットの中から短縮リンクの作成、一覧、クリックの時系列の読み取りを行えるようにする、小さなNodeプロセスです。モノレポのpackages/mcp-serverにあり、stdioでMCPを話し、ほかのすべてと同じREST APIとやり取りします。
先に訂正を1つ。このガイドの以前の版は誤っていました。パッケージはnpmになく、まだ公開されていません。2026-11-11時点でnpm view @elido/mcp-serverは404を返します。一般公開は近日予定で、それまではローカルでビルドしたものを実行します。以下はすべて、packages/mcp-serverとservices/api-coreのコードと照合して確認しました。
MCPとは
Model Context Protocolは、AIクライアントがモデルの外にあるツールを呼び出せるようにするオープンな標準です。クライアントがサーバーを起動または接続し、ツールの一覧を求め、ツール呼び出しをJSON-RPCメッセージとして送ります。サーバーが処理を行い、モデルが読むテキストを返します。APIキーを持つのはモデルではなく、サーバーです。
仕様は2つのトランスポートを定義しており、ローカルのプロセス向けのstdioと、リモート向けのStreamable HTTPです(MCP仕様、最新リビジョン2026-07-28、2026-10-25 閲覧)。Elidoのサーバーが実装しているのは、stdioだけです。
サーバーの機能
公式の@modelcontextprotocol/sdkを使わず、依存関係をなくすために手書きされています。src/index.tsでは4つのものに応答します。initialize(プロトコルバージョン2024-11-05を報告)、tools/list、tools/call、そしてnotifications/initialized通知です。ほかはすべて「method not found」エラーになります。リソース、プロンプト、pingのハンドラーはありません。
すべてのツール呼び出しは、ELIDO_API_BASE(既定はhttps://api.elido.app)への認証付きRESTリクエストになり、Authorization: Bearer <key>と、User-Agent: elido-mcp-server/0.1.0ヘッダーが付きます。失敗した呼び出しは、HTTPステータスとレスポンスの最初の400文字を含むエラーとして返されます。
| ツール | 送信するリクエスト | 状態 |
|---|---|---|
create_link | POST /v1/workspaces/{id}/links | 動作する。ドメイン未指定なら最初のドメインを選ぶ |
list_links | GET /v1/workspaces/{id}/links?limit&offset | 動作する。limitは1から100 |
query_analytics | GET /v1/workspaces/{id}/analytics/timeseries | 動作する。{"items":[{"ts","count"}]}を返す |
generate_qr | POST /v1/workspaces/{id}/qr | api-coreに一致するルートが見つからない |
list_workspaces | GET /v1/workspaces | 動作する。呼び出し元が所属するワークスペースを一覧する |
generate_qrについて。api-coreが提供するのは、公開のPOST /v1/qr/generateと、リンクごとのデザインのGET /v1/workspaces/{id}/links/{link_id}/qrですが、このツールが呼ぶパスには何もありません。これが整理されるまでは、これを前提にしたワークフローは作らないほうがよいでしょう。バックログに入っています。
ビルドとAPIキーの取得
モノレポは非公開のため、以下の手順はパッケージのソースを入手できる場合に当てはまります(一般公開は近日予定)。パッケージをビルドします。
pnpm install
pnpm --filter @elido/mcp-server build
これでpackages/mcp-server/dist/index.jsができます。Node 20以降が必要です(そのpackage.jsonのengines)。
キーは、Dashboard、API keys(/dashboard/api-keys)を開き、エージェントにちなんだ名前を付け、ロールを選びます。フォームにはviewer、editor、adminがあり、既定はeditorです。Elidoのキーが持つのは、ツールごとのスコープではなく、ワークスペースのロールです。viewerのキーが読み取り専用の選択肢で、一覧とアナリティクスの読み取りはでき、APIはcreate_linkを拒否します。お試し用のキーなら、有効期限を設定してください。キーは表示されたときにコピーし、バージョン管理に入れないでください。
Claude Desktopの設定
Claude Desktopはclaude_desktop_config.jsonを読みます。設定ファイルの場所とDeveloper設定のタブは、MCPのドキュメントに説明があります(ローカルサーバーの接続、2026-10-25 閲覧)。macOSでは~/Library/Application Support/Claude/claude_desktop_config.json、Windowsでは%APPDATA%\Claude\claude_desktop_config.jsonです。
{
"mcpServers": {
"elido": {
"command": "node",
"args": [
"/absolute/path/to/url-shortener/packages/mcp-server/dist/index.js"
],
"env": {
"ELIDO_API_KEY": "elido_your_key_here",
"ELIDO_WORKSPACE_ID": "42"
}
}
}
}
絶対パスを使ってください。ELIDO_WORKSPACE_IDが省略できるのは、キーが見えるワークスペースがちょうど1つの場合だけで、その場合サーバーはGET /v1/workspacesを1回呼んでIDをキャッシュします。ワークスペースが2つ以上あると、変数を設定するよう伝えるエラーを投げるので、最初から設定してください。
保存したらClaude Desktopを再起動します。サーバーが現れない場合は、まず同じコマンドをターミナルで実行してください。キーがなくてもプロセスは止まらず、stderrに警告を出し、以降のツール呼び出しがすべて失敗します。
CursorとClaude Codeの設定
Cursorは、プロジェクトの.cursor/mcp.json、またはすべてのプロジェクト向けの~/.cursor/mcp.jsonから、同じmcpServersの形を読みます(CursorのMCPドキュメント、2026-10-25 閲覧)。上のブロックを貼り付け、有効なキーを含むのでファイルを.gitignoreに追加し、CursorのMCP設定でサーバーを確認します。
Claude Codeは、コマンドラインからstdioサーバーを追加します(Claude CodeのMCPドキュメント、2026-10-25 閲覧)。
claude mcp add --env ELIDO_API_KEY=elido_your_key_here --env ELIDO_WORKSPACE_ID=42 \
--transport stdio elido -- node /absolute/path/to/packages/mcp-server/dist/index.js
設定ファイル内のキーは平文です。共有のマシンでは、監査の記録が意味を持つよう、各自に別々のキーを持たせてください。
実際のリクエストの形で見る2つのセッション
これらは例示的な会話であって録画ではなく、数字は架空です。ツールの引数と結果の項目は、コードと一致しています。
キャンペーンのリンクを短縮する。 Claudeに、https://shop.example.com/springをスラッグspring、タグspringで短縮するよう頼みます。Claudeはdestination_url、slug、title、tagsを付けてcreate_linkを呼びます。domain_idが渡されていないので、サーバーはまずGET /v1/workspaces/{id}/domainsを取得し、最初に返されたものを使います。ワークスペースに複数のドメインがあるなら、domain_idを自分で渡してください。APIはshort_urlを含むリンクレコードを返し、Claudeはそれを下書きに入れます。スラッグがすでに使われていれば、APIは409「slug already exists for this domain」を返し、Claudeは別のものを選べます。
先週のクリックを読む。 ベルリン時間で、あるリンクの日別クリックを求めます。Claudeはlink_id、from、to、interval: "day"、tz: "Europe/Berlin"を付けてquery_analyticsを呼びます。日付はYYYY-MM-DDで、fromがtoより前でない範囲はAPIが拒否するため、最終日の翌日をtoとして渡してください。省略した場合、範囲は直近30日です。結果は{"items": [{"ts": "...", "count": 312}, ...]}です。totalの項目はないので、Claudeにカウントを合計してもらってください。クリックのみで、国、デバイス、リファラーの内訳はこのツールからは得られません。
セキュリティと制限
スコープではなくロール。 目的を果たす最も低いロールを選んでください。レポート用のエージェントにはviewer、リンクを作成するものにはeditor、adminは具体的な理由がある場合だけです。
マシンから出ていくもの。 サーバーがリクエストを送るのは、あなたのElido APIのベースだけで、ほかにはありません。AIクライアントが自身のプロバイダーに送るものは、そのプロバイダーのポリシーの対象です。
監査の記録。 キーの作成はapi_key.createdの監査イベントを、リンクの作成はlink.createdを発行します。イベントが個々のキーにどう帰属されるかは確認していないため、2つのエージェントを区別するのに監査ログを当てにしないでください。それぞれに別のキーを与え、キーの一覧を見ておいてください。
レート制限。 呼び出しはワークスペースの制限に数えられます。Freeは毎秒10リクエスト、Proは30、Businessは100で、バーストの許容量はそれぞれ20、60、200です(services/api-core/internal/httpserver/server.go)。数百のリンクを作成するエージェントは、Googleスプレッドシートからの一括インポートのように、APIのPOST /v1/workspaces/{id}/links/bulkを使うべきです。
リモートMCP。 OAuth付きのホスト型エンドポイントで、ClaudeのコネクターがローカルプロセスなしでElidoに接続できるようになるものです。計画中で、まだ作られておらず、ダッシュボードの連携カタログに載っているのはローカルサーバーだけです。当面はそちらを使います。
プロトコルのずれ。 サーバーは2024-11-05を宣言していますが、仕様の現在のリビジョンは2026-07-28です。すべてのクライアントのリリースに対しては検証していないので、更新後は、クライアントでサーバーの状態を確認してください。
今後の方向
上のギャップはバックログに入っています。パッケージの公開、generate_qrの修正、Streamable HTTPとリモートのエンドポイントの追加、ツールの追加(更新、削除、地域別の内訳)、キーごとの監査の帰属です。同じエージェントの考え方への別の道は、GeminiのガイドとChatGPTのガイドを、キーの扱いはリンクツールのAPIキー権限を参照してください。
ブログの関連記事
-
リンクツールのAPIキー権限 - ロール、最小権限、ローテーション。
-
Googleスプレッドシートから短縮リンクを一括インポート - 数百のリンクに適した道。
-
Gemini URL短縮サービス - Geminiでツール呼び出しが動く場所。
-
ChatGPT URL短縮サービス - 動くものと、動くふりをするもの。
-
Terraformとしての短縮リンク - インフラ型のリンク管理。
-
URL短縮APIのレート制限と冪等性 - クライアントから見た制限の挙動。
-
Marius
よくある質問
Elido MCPサーバーはnpmにありますか?
まだです。パッケージはnpmにありません(2026-11-11時点で`npm view @elido/mcp-server`は404を返す)ため、`npx -y @elido/mcp-server`は失敗します。一般公開は近日予定です。それまでは、パッケージのローカルビルド(非公開モノレポのpackages/mcp-server)からのみ実行でき、MCPクライアントをコンパイル済みのdist/index.jsファイルに向けます。
Elido MCPサーバーはどのツールを公開していますか?
5つです。create_link、list_links、query_analytics、generate_qr、list_workspacesです。最初の4つにはワークスペースが必要で、ELIDO_WORKSPACE_IDから取得するか、キーが見えるワークスペースがちょうど1つの場合はそれが使われます。generate_qrは、api-coreで見つけられなかったルートを呼ぶため、修正されるまでは信頼できないものとして扱ってください。
MCPキーを読み取り専用にするにはどうしますか?
ダッシュボードで、viewerロールのAPIキーを作成します。キーが持つのはツールごとのスコープではなく、ワークスペースのロール(viewer、editor、admin、既定はeditor)です。viewerのキーはリンクの一覧とアナリティクスの読み取りができ、create_linkはAPIから権限エラーとして返されます。
ElidoにはClaudeコネクター向けのリモートMCPのURLがありますか?
まだありません。OAuth付きのホスト型MCPエンドポイントはなく、リモートサーバーは計画中です。上に挙げた5つのツールを提供するローカルのstdioサーバーを使ってください。
このサーバーはどのMCPトランスポートとプロトコルバージョンを使いますか?
stdioのみで、改行区切りのJSON-RPC 2.0です。initializeにはプロトコルバージョン2024-11-05で応答し、tools/listとtools/callを処理します。現在のMCP仕様にはStreamable HTTPトランスポートも定義されていますが、このサーバーは実装していません。
ツール呼び出しはレート制限に数えられますか?
はい。このサーバーは通常のAPIクライアントなので、ワークスペースごとの制限が適用されます。Freeは毎秒10リクエスト、Proは30、Businessは100で、バーストはそれぞれ20、60、200です。数百件のリンクには、ツール呼び出しを1件ずつ行うのではなく、一括作成のエンドポイントを使ってください。
Elidoを試す
URLを貼り付けて短縮リンクを取得
登録不要。リンクは30日間有効。永久に保存するには登録してください。
登録不要。無料登録すると月 50 件のリンクを作成できます。