本文へスキップ
LinkProfit

AIアシスタント向けMCPサーバー

Claude Code、Claude Desktop、CursorをModel Context Protocolでワークスペースに接続します。すぐ使える設定、ツールの一覧、権限、プランによる制限を説明します。

2026年8月14日更新

MCPサーバーを使うと、AIアシスタントがあなたのリンクと分析を直接扱えるようになります。 「このランディングページを自社ブランドのドメインで短縮して」「先週いちばんクリックを集めた リンクを5本教えて」「キャンペーン用ドメインのアラートルールを月曜までミュートして」と いった具合です。アシスタントは、あなた自身が呼ぶのと同じ公開APIを通してこれを行い、権限は 接続に使ったキーのものとまったく同じです。

https://api.linkprofit.com/v1/mcp

トランスポートはHTTP上のJSON-RPC 2.0で、Model Context Protocolのリビジョン 2025-06-18に従います(リビジョン2025-03-26も受け付けます)。サーバー側から始まる イベントストリームも、セッションの状態もありません。GETDELETEには405が返り、 Mcp-Session-Idは発行されず、必要な文脈はすべてキー自体がリクエストごとに運びます。 HTTPを話すMCPクライアントであれば何でも動きます——下の3つは、そのまま貼り付けられる設定を 用意しているというだけです。

1. アシスタント用のキーを作る

ダッシュボードで設定 → APIキーを開き、ワークスペースキーlp_live_…)を作成 します。アシスタントに本当に必要なスコープだけを与えてください——各ツールが何を必要とする かは、下のツール一覧に載っています。links:readanalytics:readだけのキーなら、質問に は答えられるが何も変更できない、読み取り専用のアシスタントになります。

キーの完全な値は一度だけ表示されます。パスワードと同じように扱ってください。これから、 あなたのマシンの設定ファイルに書き込むものです。

2. サーバーをクライアントに追加する

Claude Code

コマンド1つで済み、編集する設定ファイルもありません。

claude mcp add --transport http linkprofit https://api.linkprofit.com/v1/mcp \
  --header "Authorization: Bearer lp_live_…your key…"

--scope userを付けると、現在のプロジェクトだけでなく、マシン上のすべてのプロジェクトで このサーバーを使えるようになります。結果はclaude mcp listで確認でき、後から claude mcp remove linkprofitで削除できます。

Claude Desktop

設定ファイル——macOSでは~/Library/Application Support/Claude/claude_desktop_config.json、 Windowsでは%APPDATA%\Claude\claude_desktop_config.json——を編集して、サーバーを追加 します。

{
  "mcpServers": {
    "linkprofit": {
      "type": "http",
      "url": "https://api.linkprofit.com/v1/mcp",
      "headers": {
        "Authorization": "Bearer lp_live_…your key…"
      }
    }
  }
}

Claude Desktopを再起動してください。新しい会話のツール選択に、ツールが現れます。

Cursor

プロジェクトに.cursor/mcp.jsonを作成します(どこでも使えるようにするには ~/.cursor/mcp.jsonです)。

{
  "mcpServers": {
    "linkprofit": {
      "url": "https://api.linkprofit.com/v1/mcp",
      "headers": {
        "Authorization": "Bearer lp_live_…your key…"
      }
    }
  }
}

Cursorは保存と同時にファイルを読み込み、Settings → MCPにサーバーを表示します。

手動で接続を確認する

どのクライアントの問題も、プロトコルのレベルで見たほうが読み取りやすくなります。これは、 クライアントが行っているのと同じハンドシェイクです。

curl -s -X POST https://api.linkprofit.com/v1/mcp \
  -H "Authorization: Bearer $LINKPROFIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "initialize",
    "params": {
      "protocolVersion": "2025-06-18",
      "capabilities": {},
      "clientInfo": { "name": "curl", "version": "1.0" }
    }
  }'

正常な応答には、プロトコルのバージョン、サーバー、そしてツールの機能が示されます。メソッド をtools/listに替えれば一覧が見られますし、pingに替えれば、到達できるかどうかだけを 確認できます。

ツール

ツールは10個で、いずれもキーが属するワークスペースの中だけで動きます。スコープの列は、 キーが持っていなければならないものです。スコープのないツールは一覧から隠されるのではなく、 呼び出したときに単に失敗します。

| ツール | 何をするか | 必要なスコープ | | --- | --- | --- | | list_links | ワークスペースの短縮リンクを一覧する。検索文字列で絞り込むこともできる | links:read | | get_link | idを指定して1本のリンクを読み取る | links:read | | create_link | 短縮リンクを作成する。domain_idがなければワークスペースの既定のドメインを使う | links:write | | update_link | 既存のリンクのリンク先やタイトルを変更する | links:write | | analytics_summary | 期間内のクリック、訪問者、QRスキャン。1本のリンクに絞ることもできる | analytics:read | | analytics_breakdown | 国、都市、デバイス、ブラウザー、OS、参照元、UTMで分けたクリックと訪問者 | analytics:read | | analytics_top_links | 期間内で最もクリックされたリンクを、クリック数と訪問者数とともに返す | analytics:read | | analytics_timeseries | 時間、日、週の単位で見たクリックと訪問者の推移 | analytics:read | | list_alert_rules | アラートルールを、その通知先と再通知を抑える時間とともに一覧する | alerts:read | | update_alert_rule | アラートルールを有効化・無効化する、または再通知を抑える時間を調整する | alerts:write |

引数のスキーマは、呼び出しを検証しているのと同じ定義から来ています。そのため、アシスタント がツールについて聞かされている内容と、サーバーが実際に受け付ける内容がずれることはあり ません。読み取り専用のツールにはその旨の注記が付いており、これによってクライアントは、 データを変更する3つのツール——create_linkupdate_linkupdate_alert_rule、 そして今後のリリースでこの一覧に加わるもの——の前に確認を求められます。

更新系のツール呼び出しはすべて、それを行ったキーと、MCP経由で届いたという注記とともに、 ワークスペースの監査証跡に記録されます。アシスタントによる変更も、人による変更と同じよう にたどれます。

権限と安全性

権限の境界はキーです。 特権的な「アシスタントモード」のようなものはありません。ツール の呼び出しは、キーのスコープで、キーのワークスペースの中で、RESTの呼び出しとまったく同じ レート制限と同じテナント分離のもとで実行されます。別のワークスペースのidは、RESTのときと まったく同じくnot_foundになります。

身につけておきたい習慣が3つあります。

  • アシスタントには専用のキーを渡してください。 本番の連携が使っているキーを渡しては いけません。専用のキーなら、失効させても何も失われません。
  • 読み取り専用から始めてください。 links:readanalytics:readがあれば、人が アシスタントに実際に尋ねるレポート的な質問はまかなえます。links:writeを足すのは、 チャットからリンクを作りたくなってからで十分です。
  • 漏れたらローテーションしてください。 設定ファイルの中のキーは、バックアップ、画面 共有、サポートへの問い合わせに紛れて出回ります。漏れたと分かった瞬間にダッシュボードで 失効させてください。次のリクエストには401が返ります。

レート制限はREST APIと共通で——キーごと、1分間のスライディングウィンドウです——おしゃべり なアシスタントと、同じキーを使うバックグラウンドのジョブは、同じ枠を取り合うことになり ます。これも、キーを分けるべき理由の1つです。ヘッダーと再試行の方針については レート制限をご覧ください。

プランの要件

このエンドポイントは、プランの2つの機能で制限されます。

  • api_access — そもそもAPIを使う権利です。
  • assistant_tools — ツールの一覧、ひいてはMCPを使う権利です。

どちらも、ワークスペースが利用しているプランで設定されます。どちらかを欠いたプランの ワークスペースには、plan_restrictedのコードと、不足している機能名を挙げたメッセージを 添えて403が返ります。LinkProfitをご自身のブランドで再販している場合、これはプランに 含めるか、アップグレードとして販売するかを決められる機能です。

トラブルシューティング

403 plan_restricted — プランにassistant_tools(またはapi_access)が含まれて いません。プランをアップグレードしてください。キーやクライアントの設定をどういじっても、 これは直りません。

401 unauthorized — ヘッダーがない、形式が壊れている、あるいはキーが未知、失効済み、 期限切れのいずれかです。この3つは意図的に区別できないようにしてあります。値がキーの全体に なっているか、先頭にBearer が付いているか、そしてクライアントが本当にヘッダーを送って いるかを確認してください——上のcurlのハンドシェイクなら、リクエスト1回で答えが出ます。

403 forbidden — パートナーキー(lpp_live_…)が使われています。MCPはワークスペース 側の機能です。ワークスペースキーを作成してください。

429 rate_limited — そのキーがウィンドウの枠を使い切りました。レスポンスには Retry-Afterが入っています。すぐに再試行するクライアントは、キーをロックアウトされたまま にするだけです。

GETに対する405 — 不具合ではなく、想定どおりの動作です。サーバーはイベントストリーム を提供せず、セッションも保持しません。古いリビジョンのSSEベースのトランスポートしか話せ ないクライアントは接続できません。

ツールがデータではなくエラーを返す — チャットの記録の上では、別々の2つのことが似て 見えます。検証に失敗した引数は、問題のあるフィールドを列挙したうえで、エラーとして印の 付いたツールの結果として返り、アシスタントは自分で直して再試行できます。スコープの不足 は、insufficient_scopeのコードと不足しているスコープ名を伴うプロトコルのエラーとして 返ります。こちらに必要なのは、もう一度試すことではなく新しいキーです。

関連ドキュメント