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 startClaude桌面配置
添加到您的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 deals2.创建新交易
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:
- providerId: "mock"
- seatId: "buyer-seat-001"4.检查状态
Use deals/status with the dealId5.确认交易
Use deals/confirm with the dealId6.暂停/恢复
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添加新提供者
- 在中创建新文件
src/providers/(例如。,ttd.ts) - 实施
DealProvider接口 - 注册于
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
{
// Implement TTD API integration
}
// ... other methods
}许可证
MIT许可证-请参阅 许可证 了解详情。
贡献
这是IAB技术实验室代理工作组的参考实现。欢迎投稿!
资源
______________________________________________________________________
建造于 HyperMindZ IAB技术实验室代理工作组。
