程序化广告交易管理服务器

一个实现IAB Deals API规范的MCP服务器,用于程序化广告交易的全生命周期管理,支持创建、更新、发送、确认和监控交易状态。

  • by Hypermindz-AI
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 Hypermindz-AI/iab-deals-mcp-server

使用说明

IAB交易MCP服务器

MCP服务器实现IAB Deals API v1.0,用于程序化交易管理。

概述

此MCP服务器提供用于管理以下程序化广告交易的工具 IAB交易API规范它使AI代理能够创建、管理和监控DSP和SSP之间的交易。

特性

  • 9 MCP工具 实现完整的交易生命周期管理
  • 模拟提供者 用于独立演示(无外部依赖)
  • SQLite数据库 为了本地持久性
  • 符合IAB标准 数据模型和状态代码
  • 可扩展 用于真正DSP/SSP集成的提供商架构

快速开始

安装

# Clone the repository
git clone https://github.com/Hypermindz-AI/iab-deals-mcp-server.git
cd iab-deals-mcp-server

# Install dependencies
npm install

# Copy environment file
cp .env.example .env

# Build
npm run build

# Run
npm start

Claude桌面配置

添加到您的Claude桌面配置(~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "iab-deals": {
      "command": "node",
      "args": ["/path/to/iab-deals-mcp-server/dist/index.js"],
      "env": {
        "NODE_ENV": "demo",
        "SEED_DEMO_DATA": "true"
      }
    }
  }
}

或与 npx (出版后):

{
  "mcpServers": {
    "iab-deals": {
      "command": "npx",
      "args": ["iab-deals-mcp"],
      "env": {
        "NODE_ENV": "demo"
      }
    }
  }
}

MCP工具

工具 说明
deals/create 创建处于待处理状态的新交易
deals/update 更新交易属性
deals/send 将交易发送给DSP/SSP审批
deals/confirm 激活已批准的交易
deals/status 获取交易状态和买家座位信息
deals/list 列表处理过滤/分页
deals/pause 暂停当前交易
deals/resume 恢复暂停的交易
providers/list 列出可用的提供商

演示演练

1.列出现有交易

Use the deals/list tool to see sample deals

2.创建新交易

Use deals/create with:
- name: "Q2 Video Campaign"
- origin: "ads.mybrand.com"
- seller: "My Brand Inc"
- adTypes: [2] (Video)
- dealFloor: 25.00
- startDate: "2026-04-01T00:00:00Z"

3.发送给提供商

Use deals/send with:
- dealId: <from step 2>
- providerId: "mock"
- seatId: "buyer-seat-001"

4.检查状态

Use deals/status with the dealId

5.确认交易

Use deals/confirm with the dealId

6.暂停/恢复

Use deals/pause and deals/resume to control delivery

数据模型

交易状态代码(卖方)

代码 状态 描述
0 活动 交易已激活并正在进行中
1 已暂停 交易暂时暂停
2 待定 交易已创建,尚未发送
4 完成 交易已完成

买方状态代码

代码 状态 描述
0 待定 等待提供商响应
1 接受 提供商接受交易
2 拒绝 提供商拒绝了交易
3 已过期 交易在响应前已过期
4 已暂停 提供商的交易已暂停
5 错误 与提供商通信时出错

广告类型

代码 类型
1 横幅
2 视频
3 音频
4 本地

项目结构

iab-deals-mcp-server/
├── src/
│   ├── index.ts           # MCP server entry point
│   ├── config.ts          # Configuration management
│   ├── models/            # Zod schemas and types
│   │   ├── deal.ts
│   │   ├── terms.ts
│   │   ├── inventory.ts
│   │   ├── buyer-seat.ts
│   │   └── provider.ts
│   ├── tools/             # MCP tool implementations
│   │   └── index.ts
│   ├── providers/         # DSP/SSP provider abstraction
│   │   ├── base.ts
│   │   ├── mock.ts
│   │   └── registry.ts
│   └── db/                # Database layer
│       ├── schema.ts
│       ├── database.ts
│       └── seed.ts
├── package.json
├── tsconfig.json
└── README.md

认证

MCP服务器(客户端→ 服务器)

  • 示范模式:不需要身份验证
  • 生产:设置 IAB_DEALS_API_KEY 环境变量

提供者API(服务器→ DSP/SSP)

在环境变量中配置提供程序凭据:

# The Trade Desk
TTD_API_KEY=your-api-key
TTD_PARTNER_ID=your-partner-id

# Google DV360
DV360_SERVICE_ACCOUNT_JSON={"type":"service_account",...}

# FreeWheel
FREEWHEEL_CLIENT_ID=your-client-id
FREEWHEEL_CLIENT_SECRET=your-client-secret

发展

# Development mode with hot reload
npm run dev

# Type checking
npm run typecheck

# Linting
npm run lint

# Run tests
npm test

添加新提供者

  1. 在中创建新文件 src/providers/ (例如。, ttd.ts)
  2. 实施 DealProvider 接口
  3. 注册于 src/providers/registry.ts

例子:

import { BaseDealProvider } from "./base.js";
import type { Deal, BuyerSeat, ProviderResponse } from "../models/index.js";

export class TradeDeskProvider extends BaseDealProvider {
  readonly id = "ttd";
  readonly name = "The Trade Desk";

  isAvailable(): boolean {
    return !!process.env.TTD_API_KEY;
  }

  async sendDeal(deal: Deal, seatId: string): Promise<ProviderResponse> {
    // Implement TTD API integration
  }

  // ... other methods
}

许可证

MIT许可证-请参阅 许可证 了解详情。

贡献

这是IAB技术实验室代理工作组的参考实现。欢迎投稿!

资源


建造于 HyperMindZ IAB技术实验室代理工作组。