esyURL について
esyURL は、AI エージェントが短縮リンクや QR コードを作成・管理するためのホスト型 MCP サーバーです。リンク先の変更、訪問者の振り分け、クリック・スキャン統計に対応し、エージェント自身で登録できます。
主な機能
- 01短縮リンクの作成・管理
- 02スタイル付き QR コードの生成
- 03リンク先と振り分けルールの編集
- 04クリック・スキャン統計の表示
- 05リンクのグループ整理
- 06カスタムドメインの利用
活用シーン
- 01印刷物向け QR コードの作成
- 02デバイスや国別の訪問者リダイレクト
- 03リンクや QR コードの利用状況確認
- 04キャンペーンごとのリンク整理
MCP 対応
`https://esyurl.fyi/mcp` でステートレスな Streamable HTTP MCP サーバーを提供します。クライアントは Bearer トークンで認証し、エージェント自身で登録してトークンを取得できます。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://esyurl.fyi/mcpclaude mcp add --transport http esyurl https://esyurl.fyi/mcp{"mcpServers":{"esyurl":{"type":"http","url":"https://esyurl.fyi/mcp"}}}Cursor で開く{"servers":{"esyurl":{"type":"http","url":"https://esyurl.fyi/mcp"}}}VS Code で開く{"mcpServers":{"esyurl":{"type":"http","url":"https://esyurl.fyi/mcp"}}}{"mcpServers":{"esyurl":{"serverUrl":"https://esyurl.fyi/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
https://esyurl.fyi/mcp認証が必要ツール
21| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| name | string | いいえ | 人が読めるラベル。最大 200 文字 |
| page | object | いいえ | リンクページ(プロフィールのリンク):リダイレクトする代わりに、短縮 URL にタイトル、任意のアバターと自己紹介、ボタンのリスト、ソーシャルアイコンの列をテーマ付きで表示します。ルールが引き続き優先され、一致するルールがあればリダイレクトします。構造:{title(≤80)、bio?(≤300)、avatar? {data: "data:image/png;base64,..."} または {imageId} で現在のものを保持、items: [{type: "link", label, url} | {type: "link", label, linkId}(別のリンク:その短縮 URL を開く) | {type: "header", text} | {type: "text", text}], socials?: [{platform, url}], theme?, language?, noindex?, footer?}。各項目には id?(安定した ID。クリック数はこれで集計され、省略時は自動生成されます。編集時も保持してください)、enabled?(既定値 true)、when?(リダイレクトルールの文法による条件。一致するアクセスにのみ項目を表示します。例:{"field":"os","op":"eq","value":"ios"})を指定できます。リンク項目には highlight?(アクセントカラー)と thumbnail?(画像)も指定できます。項目は最大 50 件、画像は最大 8 枚です。socials のプラットフォーム:instagram、tiktok、youtube、x、facebook、linkedin、github、threads、bluesky、mastodon、whatsapp、telegram、spotify、twitch、discord、pinterest、snapchat、substack、email、website(email は mailto: を指定)。theme:{preset?(light|dark|midnight|sunset|forest|pastel|mono、既定値 light)、background? {type: "solid", color} | {type: "gradient", from, to, angle?} | {type: "image", image: {data}, dim? 0-0.8}, text?(16 進数カラー)、font?(system|rounded|serif|mono|condensed)、button? {shape?(square|rounded|pill)、fill?(solid|outline|soft|shadow)、color?, text?}, avatarShape?(circle|rounded|square),align?(center|left)}。コントラストの低い色は `warnings` として返されますが、保存されます。自分で登録したテナントのページには、小さな "Made with esyURL · Report" フッターが付きます。footer: false にすると、ページごとに 1 回限りの x402 決済でこのフッターを削除できます(payment を参照)。 |
| slug | string | いいえ | カスタム slug。形式は ^[a-zA-Z0-9_-]{3,64}$。省略するとランダムに生成 |
| tags | array | いいえ | 自由形式のラベル。最大 20 個。list_short_links tag で絞り込み |
| rules | array | いいえ | リダイレクトルール。アクセスごとに順番に評価され、"when" が一致する最初の有効なルールが訪問者をその targetUrl に送ります。一致するものがなければ、リンクの targetUrl が使用されます。条件はテスト {field, op, value}、または組み合わせ {all: [...]}, {any: [...]}, {not: {...}} のいずれかです。フィールドと演算子:os (ios|android|windows|macos|linux|chromeos|other)、device (mobile|tablet|desktop|bot)、browser (safari|chrome|firefox|edge|samsung|opera|in_app|other)、source (qr|direct|bot):eq、neq、in、not_in。language(Accept-Language の主タグ。"pt" は "pt-BR" にも一致):eq、neq、in、not_in、exists。country(ISO 3166-1 alpha-2。例:"GB"。ホストごとにエッジでジオロケーション):eq、neq、in、not_in。不明または存在しない値は eq/in に一致せず、neq/not_in に一致します。referrer(ホスト名。例:instagram.com)と query("key"、つまりパラメーター名が必要):eq、neq、in、not_in、contains、starts_with、ends_with、exists。time(ISO タイムスタンプ):before、after。weekday(sun..sat、UTC):eq、neq、in、not_in。hour(0-23 UTC):eq、neq、in、not_in、gte、lte。in/not_in は配列を受け取ります。テキストの比較では大文字と小文字を区別しません。ルールは最大 20 件、各ルールの条件は最大 20 件です。アプリストアへの振り分け例:[{"name":"iOS","when":{"field":"os","op":"eq","value":"ios"},"targetUrl":"https://apps.apple.com/app/id123"},{"name":"Android","when":{"field":"os","op":"eq","value":"android"},"targetUrl":"https://play.google.com/store/apps/details?id=com.example"}] |
| payment | any | いいえ | 自分で登録したテナントによる支払いがまだ済んでいないページで footer: false を指定する場合のみ対象です。ツールはまず、structuredContent が x402 PaymentRequired であるエラーを返します。署名済み PaymentPayload を _meta["x402/payment"] に指定して再試行してください。または、クライアントが _meta を設定できない場合は、ここに指定します(オブジェクトまたは base64)。 |
| qrStyle | object | いいえ | このリンクの QR 画像の既定の外観(無料):色、モジュールとコーナーマーカーの形状、任意の画像。スタイル付きコードは、明るい背景に暗い色を使用し、コントラスト比を 3:1 以上にしてください。更新時にはスタイル全体が置き換えられます。 |
| qrStyle.dark | string | いいえ | 16 進カラー。例:#000000(# は省略可) |
| qrStyle.image | object | いいえ | コード内の画像。mode "logo":中央に配置します(誤り訂正レベルは H になります。サイズは画像の一辺がコードの一辺に占める割合で、0.1-0.3、既定値は 0.22)。mode "halftone":コードの背後に写真をドットで描画します。data は data URL(data:image/png;base64,...。png、jpeg、webp、gif に対応、最大 2 MB)です。他のフィールドを変更するときに現在の画像を維持するには、data の代わりに imageId を渡してください。 |
| qrStyle.image.data | string | いいえ | 新しい画像。data URL 形式で指定 |
| qrStyle.image.mode | enum | はい | logo | halftone |
| qrStyle.image.size | number | いいえ | |
| qrStyle.image.imageId | string | いいえ | このリンクに設定済みの画像を維持します(その qrStyle.image.imageId) |
| qrStyle.light | string | いいえ | 16 進カラー。例:#000000(# は省略可) |
| qrStyle.margin | integer | いいえ | クワイエットゾーンの幅(モジュール単位)、0-16 |
| qrStyle.eyeBall | enum | いいえ | コーナーマーカーの中心square | rounded | circle |
| qrStyle.modules | enum | いいえ | データモジュールの形状(既定は正方形)square | rounded | dot | row | column |
| qrStyle.eyeColor | string | いいえ | コーナーマーカーの色。既定値は dark |
| qrStyle.eyeFrame | enum | いいえ | 3 つのコーナーマーカーの外枠square | rounded | circle |
| qrStyle.errorCorrectionLevel | enum | いいえ | QR の誤り訂正レベル:L 7%、M 15%(既定)、Q 25%、H 30%L | M | Q | H |
| groupIds | array | いいえ | このリンクが属するグループの ID(create_group/list_groups で取得)、最大 20 件 |
| metadata | object | いいえ | 独自の記録用に、最大 20 個の文字列キーと値のペアを指定します |
| targetUrl | string | いいえ | 訪問者のリダイレクト先となる絶対 http(s) URL(page とは併用できません) |
詳細
esyURL MCP サーバー
AI エージェントが esyURL で短縮リンクや QR コードを作成・管理できる、ホスト型の MCP サーバーです。URL の短縮、スタイル付き QR コードの生成、印刷済みまたは共有済みのリンクの転送先変更、デバイスや国に応じた訪問者の振り分け、クリック数やスキャン数の統計の確認ができます。エージェント自身で登録できるため、人間のアカウントは必要ありません。
- エンドポイント:
https://esyurl.fyi/mcp(Streamable HTTP、ステートレス) - 認証:
Authorization: Bearer esy_...
インストールや実行は不要です。このリポジトリではホスト型サーバーについて説明しています。サーバー自体はオープンソースではありません。
API キーを取得する
キーを持っていないエージェントは、esyurl.fyi/auth.md に従って自分でアカウントを作成し、キーを取得できます。
BASE=https://esyurl.fyi
REG=$(curl -s $BASE/agent/identity -H 'content-type: application/json' -d '{"type":"anonymous"}')
KEY=$(curl -s $BASE/oauth2/token \
--data-urlencode grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer \
--data-urlencode assertion=$(echo "$REG" | jq -r .identity_assertion) | jq -r .access_token)
echo $KEY
自分で登録したアカウントでは、リンクを 100 件作成できます。人間がメールでアカウントを認証すると、1000 件まで作成できます。
接続する
Claude Code:
claude mcp add --transport http esyurl https://esyurl.fyi/mcp \
--header "Authorization: Bearer esy_..."
Cursor、VS Code、その他のクライアント(.mcp.json 形式):
{
"mcpServers": {
"esyurl": {
"type": "http",
"url": "https://esyurl.fyi/mcp",
"headers": { "Authorization": "Bearer esy_..." }
}
}
}
ツール
| ツール | 機能 |
|---|---|
create_short_link | URL を短縮します。カスタムスラッグ、QR スタイル、リダイレクトルールを任意で指定できます |
list_short_links | リンクを一覧表示します。タグまたはグループで絞り込むこともできます |
get_short_link | 1 件のリンクと、そのグループおよび累計訪問数を取得します |
update_short_link | リンクの転送先、QR スタイル、ルールを変更するか、リンクを一時停止します。短縮 URL と印刷済み QR コードは引き続き使用できます |
delete_short_link | リンクを削除します |
test_redirect_rules | 訪問者がどの転送先に案内されるかを確認します(例:iPhone なら App Store、Android なら Google Play) |
get_short_link_visits | 1 日ごとの訪問数を、QR スキャン、直接クリック、ボットに分けて表示します |
render_qr_code | リンク用(スキャン数は集計されます)または任意のテキスト用の PNG QR コードを生成します。モジュール形状、コーナーマーカー、色、ロゴ、写真を指定できます |
create_group、list_groups、get_group、update_group、delete_group | リンクをグループに整理します |
add_links_to_group、remove_link_from_group | グループへのリンクの追加・削除 |
get_group_visits | グループの合計訪問数を取得します |
get_custom_domain、set_custom_domain、remove_custom_domain | 独自ドメインで短縮リンクを使用します |
料金
リンク、QR コード、統計は無料です。自分で登録したアカウントでは、新しいカスタムドメインごとに一度だけ、x402 を使って USDC で支払います。set_custom_domain は、まず支払い要件を返します。
詳細
- esyurl.fyi/llms.txt:エージェント向け API
- esyurl.fyi/openapi.json:REST API
- esyurl/skills:同じ内容をエージェントスキルとして提供します(
npx skills add esyurl/skills)
ライセンス
このリポジトリの内容は MIT ライセンスです。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。