Skip to main content
Glama
nicofains1

Agentic Ads

by nicofains1

Agentic Ads

AIエージェント向けGoogle AdSense。 MCPサーバーに3行のコードを追加するだけで、広告クリックごとに70%の収益を得られます。

npm version Tests License: MIT MCP Node

ライブデモ · クイックスタート · MCPツール · セルフホスト


クイックスタート

ステップ1 — 登録してAPIキーを取得(30秒):

Webフォームにアクセス: https://agentic-ads-production.up.railway.app/dev/register

またはAPIを直接使用:

curl -X POST https://agentic-ads-production.up.railway.app/api/register \
  -H "Content-Type: application/json" \
  -d '{"name": "My MCP Bot", "email": "me@example.com", "project_description": "A coding assistant that recommends dev tools"}'
# Returns: { "api_key": "aa_dev_...", "mcp_url": "https://agentic-ads-production.up.railway.app/mcp" }

ステップ2 — MCPクライアント設定に追加:

{
  "mcpServers": {
    "agentic-ads": {
      "url": "https://agentic-ads-production.up.railway.app/mcp",
      "transport": "http"
    }
  }
}

ステップ3 — エージェント内でsearch_adsを呼び出し、クリックごとに収益:

// In your agent logic — when context is relevant
const ads = await mcp.callTool({
  name: 'search_ads',
  arguments: { query: 'best running shoes for marathon', max_results: 1 }
});

// Report events to get paid
await mcp.callTool({
  name: 'report_event',
  arguments: { ad_id: ads[0].ad_id, event_type: 'impression' }
});
// User clicks → report 'click' → you earn $0.35 on a $0.50 CPC ad

以上です。収益化が始まります。


Related MCP server: AdKit MCP Server

なぜこれが必要か

あなたは素晴らしいMCPサーバーを構築しました。ユーザーは気に入っています。しかし、収益は上がっていません。

agentic-ads は、MCPエコシステムに欠けていた収益化レイヤーです。Google AdSenseのようなものですが、ウェブサイトではなくAIエージェント向けです。

問題点

  • 16,000以上のMCPサーバーが存在しますが、収益化しているものはほとんどありません。

  • 開発者は役立つツールを構築するのに何週間も費やしますが、収入はゼロです。

  • ユーザーがエージェントに製品の推薦を求めると、エージェントはウェブをスクレイピングしますが、ブランドは彼らにリーチできません。

解決策

プライバシーを尊重したコンテキスト広告をMCPツールを通じて配信します。開発者は70%の収益シェア(業界トップクラス)を得られます。広告主はAIエージェントユーザーにリーチできます。全員が利益を得ます。


収益計算機

例: あなたのMCPサーバーが月に10,000回のクエリを受け、その中で広告が適切なケースを想定します。

シナリオ

月間インプレッション数

CTR

月間クリック数

CPC

あなたの収益

控えめ

10,000

2%

200

$0.50

$70/月

現実的

10,000

5%

500

$0.50

$175/月

好調

10,000

8%

800

$0.75

$420/月

月間10万クエリ、CTR5%の場合: 月額$1,750のパッシブインカム。

MCPサーバーに3行のコードを追加するだけで、年間$21,000 の収益です。


詳細な統合ガイド

MCP開発者向け(収益を得る)

ライブサーバーに接続してツールの呼び出しを開始するだけです。承認プロセスや最低条件はありません。

// 1. When user asks about products/services
const ads = await mcp.callTool({
  name: 'search_ads',
  arguments: {
    query: 'best running shoes for marathon',
    max_results: 2
  }
});

// 2. Show relevant ad in your response (if it adds value)
// 3. Report impression
await mcp.callTool({
  name: 'report_event',
  arguments: { ad_id: 'ad_xyz', event_type: 'impression' }
});

// 4. If user clicks → report 'click' event
// You earn $0.35 on a $0.50 CPC click (70% revenue share)

広告主向け(AIユーザーにリーチ)

# Create campaign + ad via MCP tools
mcp.callTool({
  name: 'create_campaign',
  arguments: {
    name: 'Q1 Running Shoes',
    total_budget: 500,
    pricing_model: 'cpc',
    bid_amount: 0.50
  }
});

mcp.callTool({
  name: 'create_ad',
  arguments: {
    campaign_id: 1,
    creative_text: 'Ultraboost 24 — 30% off! Free shipping.',
    link_url: 'https://adidas.com/ultraboost',
    keywords: ['running shoes', 'sneakers', 'marathon'],
    category: 'footwear'
  }
});

# Monitor analytics
mcp.callTool({ name: 'get_campaign_analytics', arguments: { campaign_id: 1 } });

仕組み

┌─────────────┐                    ┌──────────────────┐                    ┌──────────────┐
│  Advertiser  │────────────────────│  Agentic Ads MCP │────────────────────│  Your MCP     │
│  (Brand/API) │  create_campaign   │     Server       │  search_ads        │  Server       │
│              │  create_ad         │                  │  report_event      │               │
│              │  get_analytics     │  - Matching      │  get_guidelines    │  Shows ads    │
└─────────────┘                    │  - Billing       │                    │  to users     │
                                   │  - Auth & Rate   │                    └──────────────┘
                                   │  - Analytics     │
                                   └──────────────────┘

フローの例:

  1. ユーザーがエージェントに「マラソンに最適なランニングシューズ」と尋ねる

  2. エージェントがsearch_adsを呼び出し → 入札額×関連性でランク付けされた関連広告を取得

  3. エージェントが広告を自然に表示: 「Ultraboost 24 — $126(30%オフ) Adidas.com(スポンサー)」

  4. ユーザーがクリック → clickイベントを報告 → $0.35($0.50 CPCの70%)を獲得

プライバシー: ユーザー追跡、プロファイリング、クッキーは一切なし。コンテキストキーワードマッチングのみ。


MCP開発者がこれを気に入る理由

1. 業界トップクラスの収益シェア

70% があなたに、30%がプラットフォームに。比較:

プラットフォーム

開発者シェア

agentic-ads

70%

Google AdSense

68%

Amazon Associates

1-10%

アフィリエイトネットワーク

5-30%

2. ゼロセットアップの手軽さ

  • 契約不要、最低条件なし、承認待ちなし

  • POST /api/register で数秒で登録 → APIキーを取得

  • MCPサーバーを設定に1つ追加 → 5分で収益開始

3. プライバシーを尊重

  • ユーザー追跡やプロファイリングなし

  • クッキーなし、ブラウザフィンガープリンティングなし

  • コンテキストキーワードマッチングのみ(初期のGoogle AdWordsのように)

  • ユーザーのプライバシーはそのまま維持

4. 表示する広告を自分でコントロール

  • エージェントがどの広告を表示するか(表示する場合)を決定

  • ユーザーコンテキストはすべてローカルに保持(広告サーバーに送信されない)

  • 関連性のしきい値はあなたの手に

  • ユーザーはオプトアウト可能(「広告なしでお願いします」)

5. 透明な分析

  • リアルタイムの収益追跡

  • いつ、なぜ、どれだけ稼いだかを正確に確認

  • ブラックボックスアルゴリズムや隠れた手数料なし


MCPツール(全8個)

開発者向け(コンシューマー側) — 3ツール

ツール

認証

説明

search_ads

公開

クエリ/キーワード/カテゴリ/地域で広告を検索。関連性スコア付きのランク付け結果を返します。

report_event

開発者キー

インプレッション/クリック/コンバージョンイベントを報告。収益計算をトリガーします。

get_ad_guidelines

公開

広告をユーザーに自然に表示するためのフォーマットガイドラインを取得します。

広告主向け(パブリッシャー側) — 5ツール

ツール

認証

説明

create_campaign

広告主キー

予算、目的、価格モデル(CPC/CPM/CPA)でキャンペーンを作成。

create_ad

広告主キー

クリエイティブテキスト、キーワード、ターゲティング、リンクURLで広告を作成。

get_campaign_analytics

広告主キー

パフォーマンス指標(インプレッション、クリック、コンバージョン、支出、ROI)を取得。

update_campaign

広告主キー

キャンペーンを更新(一時停止/再開、予算調整、ターゲティング変更)。

list_campaigns

広告主キー

すべてのキャンペーンをサマリー統計付きで一覧表示。オプションでステータスフィルター。


価格モデル

支払い方法(広告主)または収益方法(開発者)を選択:

モデル

広告主の支払い

開発者の収益(70%)

課金タイミング

CPC(クリック)

クリックあたり$0.50

$0.35

ユーザーが広告リンクをクリック

CPM(インプレッション)

1,000表示あたり$5.00

$3.50

広告がユーザーに表示されたとき

CPA(コンバージョン)

コンバージョンあたり$10.00

$7.00

ユーザーがアクションを完了(購入、サインアップなど)

予算管理: 総予算+日次上限を設定。予算が尽きると自動一時停止。


APIキーの取得

report_eventや広告主ツールを呼び出すには、APIキーが必要です。

オプションA — Webフォーム(最も簡単):

https://agentic-ads-production.up.railway.app/dev/register にアクセスし、詳細を入力してください。APIキーがすぐに表示されます。

オプションB — API:

curl -X POST https://agentic-ads-production.up.railway.app/api/register \
  -H "Content-Type: application/json" \
  -d '{"name": "My MCP Bot", "email": "me@example.com", "project_description": "A coding assistant"}'

レスポンス:

{
  "developer_id": "...",
  "api_key": "aa_dev_...",
  "mcp_url": "https://agentic-ads-production.up.railway.app/mcp"
}

フィールド

必須

説明

name

はい

プロジェクト名またはボット名

email

はい

連絡先メールアドレス

project_description

いいえ

MCPサーバーの簡単な説明(最大500文字)

Authorization ヘッダーで api_key を使用: Authorization: Bearer aa_dev_...

Railwayに永続ストレージ付きでデプロイ: agentic-ads-production.up.railway.app のライブサーバーはRailway上で動作し、永続ボリュームを使用 — データはデプロイや再起動をまたいで保持されます。セルフホストする場合は、マウントされたボリュームを指す DATABASE_PATH=/data/ads.db を使用してください。


インストール

オプション1: ライブサーバーに接続(最も簡単)

MCPクライアント設定(Claude Desktop、Cursor、Windsurfなど)に追加:

{
  "mcpServers": {
    "agentic-ads": {
      "url": "https://agentic-ads-production.up.railway.app/mcp",
      "transport": "http"
    }
  }
}

ヘルスチェック: https://agentic-ads-production.up.railway.app/health

オプション2: ローカル stdio(開発用)

npm install -g agentic-ads

# Add to MCP config
{
  "mcpServers": {
    "agentic-ads": {
      "command": "npx",
      "args": ["agentic-ads", "--stdio"]
    }
  }
}

オプション3: セルフホスト(本番環境)

git clone https://github.com/nicofains1/agentic-ads.git
cd agentic-ads
npm install && npm run build

# Start HTTP server
PORT=19877 npm run start:http

# Or stdio
npm run start:stdio

フラグ:

node dist/server.js --http --port 19877 --db ./ads.db

フラグ

デフォルト

説明

--http

HTTPサーバーを起動(デフォルトはstdio)

--port N

3000

HTTPポート

--db PATH

agentic-ads.db

SQLiteデータベースパス

--api-key KEY

stdioセッションを事前認証

環境変数:

PORT=19877                     # HTTP server port (alternative to --port)
DATABASE_PATH=/data/ads.db     # SQLite database path (default: agentic-ads.db)
AGENTIC_ADS_API_KEY=aa_dev_... # Developer API key for stdio mode

DBの永続性: DATABASE_PATH を永続ボリューム上のパスに設定します。空のDBで初回実行時、デモキャンペーンが自動的にシードされます。完全なデプロイガイドは DEPLOY.md を参照(無料の永続ストレージにはRailway推奨)。


統合例

Claude Desktop

~/Library/Application Support/Claude/claude_desktop_config.json に追加:

{
  "mcpServers": {
    "agentic-ads": {
      "command": "npx",
      "args": ["agentic-ads", "--stdio"]
    }
  }
}

Cursor / Windsurf

{
  "mcpServers": {
    "agentic-ads": {
      "url": "https://agentic-ads-production.up.railway.app/mcp",
      "transport": "http"
    }
  }
}

カスタムTypeScriptエージェント

import { Client } from '@modelcontextprotocol/sdk/client/index.js';
import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';

const transport = new StdioClientTransport({
  command: 'npx',
  args: ['agentic-ads', '--stdio']
});

const client = new Client({ name: 'my-agent', version: '1.0.0' });
await client.connect(transport);

// Search for ads
const result = await client.callTool({
  name: 'search_ads',
  arguments: {
    query: 'best laptops for coding',
    keywords: ['laptop', 'programming'],
    category: 'electronics',
    max_results: 3
  }
});

console.log(result.content[0].text);
// Returns: { "ads": [ { "ad_id": "...", "creative_text": "...", "relevance_score": 0.87 } ] }

Streamable HTTPセッション管理

ライブサーバーをHTTP経由で呼び出す場合、MCPセッションを手動で管理する必要があります。以下は生の fetch を使用した完全な例です:

const BASE = "https://agentic-ads-production.up.railway.app";
const API_KEY = "aa_dev_..."; // from /api/register

const headers = {
  "Content-Type": "application/json",
  "Accept": "application/json, text/event-stream",
  "Authorization": `Bearer ${API_KEY}`,
};

// 1. Initialize — get a session ID
const initRes = await fetch(`${BASE}/mcp`, {
  method: "POST",
  headers,
  body: JSON.stringify({
    jsonrpc: "2.0", id: 1, method: "initialize",
    params: {
      protocolVersion: "2024-11-05",
      capabilities: {},
      clientInfo: { name: "my-agent", version: "1.0.0" },
    },
  }),
});
const sessionId = initRes.headers.get("mcp-session-id");

// 2. Send initialized notification (required by MCP spec)
await fetch(`${BASE}/mcp`, {
  method: "POST",
  headers: { ...headers, "mcp-session-id": sessionId },
  body: JSON.stringify({
    jsonrpc: "2.0", method: "notifications/initialized", params: {},
  }),
});

// 3. Call tools — pass session ID on every request
const res = await fetch(`${BASE}/mcp`, {
  method: "POST",
  headers: { ...headers, "mcp-session-id": sessionId },
  body: JSON.stringify({
    jsonrpc: "2.0", id: 2, method: "tools/call",
    params: { name: "search_ads", arguments: { query: "running shoes", max_results: 2 } },
  }),
});

// 4. Parse response (SSE format: "event: message\ndata: {...}")
const text = await res.text();
const dataLine = text.split("\n").find((l) => l.startsWith("data:"));
const result = JSON.parse(dataLine.slice(5));
console.log(result.result.content[0].text);

重要なポイント:

  • mcp-session-id ヘッダーは initialize で返され、以降のすべてのリクエストで送信する必要があります

  • 認証(Authorization: Bearer ...)はセッションごとに設定 — そのセッション内のすべてのツール呼び出しが継承します

  • サーバーはSSE(Server-Sent Events)形式を使用 — レスポンスの data: 行を解析します

  • 完全な動作例については examples/demo-mcp-server を参照


アーキテクチャ

┌─────────────────────────────────────────────────────────────┐
│  MCP Server (Node.js 22 + TypeScript)                       │
│  ┌───────────────┐  ┌──────────────┐  ┌─────────────────┐  │
│  │ Tool Registry │  │ Auth & Rate  │  │ Matching Engine │  │
│  │ (8 tools)     │  │ Limiting     │  │ (relevance²     │  │
│  │               │  │ (SHA-256)    │  │ × bid × quality)│  │
│  └───────────────┘  └──────────────┘  └─────────────────┘  │
│  ┌───────────────┐  ┌──────────────┐  ┌─────────────────┐  │
│  │ SQLite (WAL)  │  │ Revenue      │  │ Analytics       │  │
│  │ - Campaigns   │  │ Split Engine │  │ (real-time)     │  │
│  │ - Ads         │  │ (70/30)      │  │                 │  │
│  │ - Events      │  │              │  │                 │  │
│  └───────────────┘  └──────────────┘  └─────────────────┘  │
└─────────────────────────────────────────────────────────────┘
          │                                          │
          │                                          │
  Streamable HTTP (remote)                     stdio (local)

主な機能:

  • プライバシー: ユーザー追跡なし、コンテキストマッチングのみ

  • 関連性: score = relevance² × bidFactor × quality_score(関連性が支配的)

  • 原子性: イベント挿入+統計更新+収益分割を単一のSQLiteトランザクションで実行

  • レート制限: キーごとのスライディングウィンドウ(ツールにより60〜120 req/min)

  • 認証: SHA-256ハッシュ化APIキー、ロールベースアクセス制御

  • テスト: 13ファイルで270テスト、すべて合格


デモ: 完全なフロー

# Clone repo
git clone https://github.com/nicofains1/agentic-ads.git
cd agentic-ads

# Install + build
npm install && npm run build

# Seed a local DB with demo data (generates real API keys)
tsx scripts/seed.ts --db test.db
# Note: seed.ts prints the generated dev/adv keys — use them below

# Run smoke test with real keys from seed output
tsx scripts/smoke-test.ts --db test.db --dev-key aa_dev_... --adv-key aa_adv_...

出力:

✅ Created advertiser: Adidas
✅ Created campaign: Q1 Running Shoes ($500 budget, CPC $0.50)
✅ Created ad: "Ultraboost 24 — 30% off!"
✅ Created developer: TestBot
✅ Searched ads for "running shoes" → 1 result (relevance 0.95)
✅ Reported impression → $0.00 charged (CPC model)
✅ Reported click → $0.50 charged, developer earned $0.35
✅ Analytics: 1 impression, 1 click, $0.50 spent, $0.35 developer revenue

開発者の支払い方法

MCPサーバーがCPC広告のクリックイベントを報告すると、入札額の70%があなたに支払われます — データベース内で原子的に追跡されます。残高が**$10**に達したら、payouts@agentic-ads.com にあなたの developer_id と希望する支払い方法(PayPalまたはPolygon上のUSDC)をメールで送信してください。残高を確認後、5営業日以内に支払いを送金します。ネットワークが拡大した際の自動Stripe支払いはロードマップに含まれています。


FAQ

開発者向け

Q: APIキーを取得するにはどうすればいいですか? A: RESTエンドポイント経由で登録:

curl -X POST https://agentic-ads-production.up.railway.app/api/register \
  -H "Content-Type: application/json" \
  -d '{"name": "Your Name", "email": "you@example.com"}'
# Returns: { "developer_id": "...", "api_key": "aa_dev_...", "mcp_url": "..." }

返された api_key をMCPリクエストの Authorization: Bearer aa_dev_... として使用します。

Q: 広告を表示しなければなりませんか? A: いいえ。表示する広告を自分でコントロールできます。ユーザーに真に価値を提供する場合にのみ広告を表示してください。エージェントの自律性は機能の一部です。

Q: ユーザーが広告を嫌がったらどうしますか? A: get_ad_guidelines のガイドラインに従ってください: レスポンスあたり最大1〜2個の広告、常に「スポンサー」と明示、オプトアウト(「広告なしでお願いします」)を尊重。

Q: これは本番環境で使えますか? A: はい。270のテストに合格、https://agentic-ads-production.up.railway.app でライブ稼働中、MITライセンス。

Q: どのMCPクライアントをサポートしていますか? A: stdioまたはStreamable HTTPをサポートする任意のMCPクライアント。Claude Desktop、Cursor、Windsurf、カスタムエージェントでテスト済み。

広告主向け

Q: 広告を作成するにはどうすればいいですか? A: 広告主APIキーを使用して create_campaign および create_ad MCPツールを使用します。例については smoke-test.ts を参照。

Q: 予算はどのように保護されますか? A: 予算追跡は原子的(SQLiteトランザクション)。予算が尽きるとキャンペーンは自動一時停止。超過支出はありません。

Q: コンバージョンを追跡できますか? A: はい。CPA価格モデルと event_type: 'conversion'report_event を使用します。リンクURLにUTMパラメータを追加してアトリビューションを行います。

Q: どのようなターゲティングオプションがありますか? A: MVPでは、キーワード(完全一致+部分一致)、カテゴリ、地域(国レベル)、言語に対応しています。セマンティックマッチングはフェーズ2で追加予定です。

一般

Q: ユーザーを追跡しますか? A: いいえ。エージェントから匿名化されたキーワードクエリのみを受け取ります。ユーザーID、Cookie、プロファイリングは一切行いません。プライバシーファーストです。

Q: 不正をどのように防止しますか? A: MVPでは、APIキー認証+レート制限+信頼ベースの報告を使用します。フェーズ2では異常検出ヒューリスティックを追加予定です(issue #47参照)。

Q: これはオープンソースですか? A: はい、MITライセンスです。フォークして、セルフホストして、コントリビュートしてください。


ロードマップ

  • MVP — 8つのMCPツール、キーワードマッチング、課金、認証、270のテスト

  • デプロイ済みhttps://agentic-ads-production.up.railway.app で公開中

  • マーケットプレイス掲載 — Anthropic Registry、Smithery、Glama、PulseMCPに提出(第1週)

  • ダッシュボードREST API — 広告主/開発者向けWeb UI(#40

  • 不正検出 — 異常ヒューリスティック(#47

  • セマンティックマッチング — 埋め込みベースの関連性(フェーズ2)

  • A/Bテスト — 広告クリエイティブのバリエーション(#41

  • Stripe支払い — 開発者への自動支払い(フェーズ3)


コントリビューション

GitHub Issuesのワークフローに従います:

  1. あなたのアイデアに関するIssueが存在するか確認する

  2. 存在しない場合:gh issue create --title "あなたのアイデア"

  3. 作業開始前に承認を得る

  4. ブランチ:feature/#N-description

  5. コミット:feat(#N): description

  6. mainへのPR

詳細なガイドラインはCLAUDE.mdを参照してください。


ドキュメント


サポート


ライセンス

MIT — 詳細はLICENSEを参照してください。


これが重要な理由

AIエージェントがウェブを席巻しています。ユーザーはGoogleを検索する代わりにエージェントに質問します。エージェントはウェブサイトの代わりに回答します。

旧来のインターネット: ユーザーがウェブサイトを閲覧 → 広告を表示 → 広告主がユーザーにリーチ

新しいインターネット: ユーザーがエージェントに質問 → エージェントがウェブサイトをスクレイピング → 広告主がユーザーにリーチできない

agentic-adsがこれを解決します。 エージェント経済のための広告レイヤーです。

そして、あなた — MCP開発者 — は仲介者として収益の70%を得られます。

チャンス: 16,000以上のMCPサーバーがあり、ほとんどが収益化されていません。あなたが最初になれます。


Built with Model Context Protocol (MCP) — AIエージェントをツールに接続するためのオープンスタンダード。

ライブデモ: https://agentic-ads-production.up.railway.app

始め方: MCPサーバーを設定に追加し、今週中に最初の収益を得ましょう。

A
license - permissive license
-
quality - not tested
C
maintenance

Maintenance

Maintainers
3hResponse time
Release cycle
1Releases (12mo)
Commit activity
Issues opened vs closed

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • Monetize any MCP server: x402 paywall, pay-per-call billing in USDC on Base, agent marketplace.

  • MCP server connecting AI agents to non-custodial staking data across 130+ networks.

  • Hosted Google Calendar MCP server for AI agents. No self-hosting or Google Cloud setup.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/nicofains1/agentic-ads'

If you have feedback or need assistance with the MCP directory API, please join our Discord server