mcpField
K
Kadam Ad Network

Kadam Ad Network

本地服务
kadam.net商业与营销03 天前更新

关于 Kadam Ad Network

Kadam Ad Network 的 MCP 服务供广告主和发布者通过 AI 客户端管理 Kadam 账户。工具按角色提供广告系列、创意、受众及分析功能,并区分广告主与发布者目录。

主要功能

  1. 01管理和更新广告系列
  2. 02调整出价和流量来源
  3. 03创建和管理创意
  4. 04配置受众细分
  5. 05查看财务与统计数据

适用场景

  1. 01检查广告系列设置和效果
  2. 02批量调整广告系列出价
  3. 03为多个广告系列创建创意

MCP 相关

向 MCP 客户端提供 Kadam 广告主和发布者操作工具。可用工具目录取决于所提供的 API 密钥或 bearer 角色。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"kadam-official": {
"command": "npx",
"args": [
"-y",
"@kadam-net/mcp-server"
],
"env": {
"KADAM_ADV_API_KEY": "<KADAM_ADV_API_KEY>",
"KADAM_PUB_API_KEY": "<KADAM_PUB_API_KEY>"
}
}
}
}
启动命令npx -y @kadam-net/mcp-server
需要配置的环境变量
KADAM_ADV_API_KEY密钥Advertiser API key from partners.kadam.net -> Profile -> API
KADAM_PUB_API_KEY密钥Publisher API key from pub.kadam.net -> Profile -> API

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@kadam-net/mcp-server0.3.4

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

@kadam-net/mcp-server

npm version npm downloads license node MCP Registry

用于 Kadam 广告网络的 MCP 服务,可通过 AI Agent 管理广告系列、创意素材、受众、网站和分析数据。

基于 Model Context Protocol(MCP)构建。MCP 是连接大模型与外部工具和数据的开放标准。

一键安装

Cursor

在 Cursor 中安装

或手动添加到 .cursor/mcp.json:

{
  "mcpServers": {
    "kadam": {
      "command": "npx",
      "args": ["-y", "@kadam-net/mcp-server"],
      "env": {
        "KADAM_ADV_API_KEY": "your-advertiser-api-key",
        "KADAM_PUB_API_KEY": "your-publisher-api-key"
      }
    }
  }
}
Claude Code
claude mcp add kadam -- npx -y @kadam-net/mcp-server

然后设置环境变量:export KADAM_ADV_API_KEY=your-key

Claude Desktop

下载 Claude Desktop 版本

下载 → 双击 → 安装。或手动添加到 claude_desktop_config.json(Settings → Developer → Edit Config):

{
  "mcpServers": {
    "kadam": {
      "command": "npx",
      "args": ["-y", "@kadam-net/mcp-server"],
      "env": {
        "KADAM_ADV_API_KEY": "your-advertiser-api-key",
        "KADAM_PUB_API_KEY": "your-publisher-api-key"
      }
    }
  }
}
任何 MCP 客户端(通用单行命令)
npx add-mcp @kadam-net/mcp-server
Docker
docker run -i --rm \
  -e KADAM_ADV_API_KEY=your-key \
  kadam/mcp-server:latest
全局安装 npm 包
npm install -g @kadam-net/mcp-server
KADAM_ADV_API_KEY=your-key kadam-mcp-server

配置

变量必填描述
KADAM_ADV_API_KEY二选一从 partners.kadam.net -> Profile -> API 获取的广告主 API 密钥
KADAM_PUB_API_KEY二选一从 pub.kadam.net -> Profile -> API 获取的发布商 API 密钥
KADAM_ADV_API_BASE否广告主 API URL(默认:https://partners.kadam.net/api/v1)
KADAM_PUB_API_BASE否发布商 API URL(默认:https://pub.kadam.net/api)
LOG_LEVEL否日志级别:trace、debug、info、warn、error、fatal(默认:info)

stdio 模式下必须至少提供一个 API 密钥。在 HTTP 模式下,令牌通过 Bearer 身份验证随每个请求传递。

基于角色的目录

工具目录与令牌持有者的角色相匹配。每个会话(在 stdio 模式下为每个进程)服务器会调用一次广告主 API 的 GET /api/v1/access,该 API 会返回 { impersonation: bool }:

令牌持有者impersonation目录
广告主 API 密钥,或仅包含 sub 的账户 JWTfalse75 个工具;create_campaign / update_campaign 不包含仅限经理使用的字段
包含 act.sub 的账户 JWT(代表客户操作的 Kadam 经理)true80 个工具(增加下文标记为“仅限经理使用”的 5 个工具);广告系列写入操作接受 hasCorrectPostback、isDirectTrafficPriority、allowMultiAds
发布商 API 密钥n/a17 个发布商工具;发布商 API 不支持 impersonation

这只是目录提示,不是访问限制:Kadam API 会在每次调用时执行相同规则(客户端令牌会收到 403 / 422)。如果无法访问 /access,会话将使用客户端目录——较小的目录始终可以安全展示。

HTTP 传输(多租户部署)

用于为多个用户提供服务的服务器端部署:

变量必填描述
MCP_TRANSPORT否"stdio"(默认)或 "http"
MCP_HTTP_PORT否HTTP 端口(默认值:8080)
MCP_HTTP_HOST否绑定地址(默认值:0.0.0.0)
KADAM_ADV_DOMAIN否用于 PRM 的广告主域名(默认值:https://partners.kadam.net)
KADAM_PUB_DOMAIN否用于 PRM 的发布商域名(默认值:https://pub.kadam.net)
docker run -d --name kadam-mcp \
  -e MCP_TRANSPORT=http \
  -p 8080:8080 \
  kadam/mcp-server:latest
通过 HTTP 连接(Cursor / Claude)
{
  "mcpServers": {
    "kadam-adv": {
      "url": "https://partners.kadam.net/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_ADV_API_KEY"
      }
    }
  }
}
通过 OAuth 连接(ChatGPT)

在 ChatGPT 设置中,将 https://partners.kadam.net/mcp(广告主)或 https://pub.kadam.net/mcp(发布商)添加为服务器 URL。OAuth 发现、注册和登录会自动完成。

工具(80 个)

广告主工具(63 个)

需要 KADAM_ADV_API_KEY。

词典
工具描述注解
kadam_adv_get_dictionary参考词典:广告系列类型、浏览器、平台、设备、连接、类别、ISP、转化模板、国家、地区、城市只读
广告系列
工具描述注释
kadam_adv_list_campaigns按筛选条件(文件夹、状态、类型、日期、搜索)和分页列出广告系列readOnly
kadam_adv_get_campaign按 ID 获取完整的广告系列配置:落地页 URL、各国家/地区的出价、预算、定向、频次上限、排期、转化设置readOnly
kadam_adv_create_campaign创建广告系列并设置完整定向(国家/地区、设备、操作系统、浏览器、年龄、性别、受众);dryRun: true 仅进行验证—
kadam_adv_update_campaign按 ID 更新广告系列的任意字段—
kadam_adv_set_campaign_status按逗号分隔的 ID 批量更改状态(启用/暂停/归档/恢复);报告每个 ID 的结果idempotent
kadam_adv_delete_campaigns按逗号分隔的 ID 批量删除已归档的广告系列;需要 confirm: true,并报告每个 ID 的结果destructive
kadam_adv_move_campaigns按逗号分隔的广告系列 ID 和目标组 ID,将广告系列移至某个广告系列组idempotent
kadam_adv_copy_campaign将广告系列复制到某个广告系列组:克隆设置和出价,副本以暂停状态开始,并重新进入审核流程。可选切换定价模式、跨格式复制推送 <-> 页面内推送、复制自动规则和各网站出价—
kadam_adv_bulk_replace_urls在广告系列及其创意中查找并替换落地页 URL 片段。仅限管理员(模拟会话);支持 dryRundestructive
kadam_adv_set_campaign_rss为原生广告系列指定 RSS 订阅源以导入创意,或通过空链接停止导入idempotent
kadam_adv_set_easy_start为广告系列启用或关闭 Easy Start(精选网站集)。仅限管理员(模拟会话)idempotent
kadam_adv_get_blocked_traffic_sources获取拒绝投放某广告系列的流量来源,按类别拦截和审核标签拦截分类。仅限管理员(模拟会话)readOnly
kadam_adv_get_traffic_forecast根据昨日竞价,获取某组定向的出价-流量曲线。曲线为空表示无法生成预测,并不代表流量为零readOnly
出价管理
工具说明注释
kadam_adv_update_campaign_bid更新单个广告系列的出价(轻量级,无需完整负载)。如果省略,则沿用当前国家/地区设置幂等
kadam_adv_bulk_update_bids一次性更新多个广告系列的出价(所有广告系列必须使用相同的定价模型)幂等
kadam_adv_block_sites停止或恢复广告系列中的网站(广告位)投放—
kadam_adv_update_site_bids设置单个网站(广告位)的出价:固定值(0.05)、倍数(x1.5)或移除(0)幂等
广告系列文件夹
工具说明注释
kadam_adv_list_campaign_folders列出文件夹及其广告系列数量和预算只读
kadam_adv_get_campaign_folder获取单个文件夹的信息:名称、归档状态和预算只读
kadam_adv_create_campaign_folder创建新文件夹(名称为 1-50 个字符)—
kadam_adv_update_campaign_folder部分更新:重命名和/或更改预算及分配—
kadam_adv_set_campaign_folder_status对逗号分隔的 ID 执行批量操作:启用/暂停广告系列、归档文件夹或恢复文件夹及其广告系列;返回每个文件夹的操作结果幂等
创意
工具描述注解
kadam_adv_list_creatives按广告系列、状态或搜索查询列出创意只读
kadam_adv_create_creative为广告系列创建创意:图片、HTML5 压缩包、iframe、HTML 标签、视频文件或 VAST 标签(需经过审核)—
kadam_adv_update_creative更新创意字段—
kadam_adv_set_creative_status批量更改创意状态:启用/暂停/归档/恢复;返回每个创意的处理结果幂等
kadam_adv_get_creative_test_conversion获取用于测试创意转化跟踪的签名链接(测试点击 + 框架预览)—
kadam_adv_upload_bulk_images为批量创意任务暂存图片(异步,返回一个任务)—
kadam_adv_create_bulk_creatives将暂存图片转为多个广告系列中的创意(异步,返回一个任务)—
kadam_adv_get_bulk_job批量任务状态:暂存图片、拒绝项、每行处理结果—
kadam_adv_copy_creatives将创意复制到其他广告系列(创意 × 目标广告系列数量份副本),原件不变—
kadam_adv_move_creatives将创意移至其他具有相同格式和定价模式的广告系列;创意会丢失各国家/地区出价,并重新进入审核—
kadam_adv_get_creative_blocked_sources拒绝某个创意的流量来源,按类别和审核标签分类。仅限经理使用(模拟身份会话)—
kadam_adv_set_creative_bids替换创意自身按国家设置的出价;未列出的国家/地区使用广告系列出价—
kadam_adv_delete_creatives通过逗号分隔的 ID 批量删除已归档的创意;需要 confirm: true,并报告每个 ID 的处理结果破坏性操作
受众
工具描述注解
kadam_adv_list_audiences列出受众,支持搜索和排序readOnly
kadam_adv_get_audience根据 ID 获取受众详细信息readOnly
kadam_adv_create_audience创建受众(pixel、code、fingerprint 或 S2S)—
kadam_adv_update_audience更新受众设置—
kadam_adv_get_filtered_audience_sources可用作筛选受众来源的受众。仅限 Manager(模拟会话)—
kadam_adv_get_audience_paramspixel/S2S 受众会替换到其代码中的硬编码参数—
kadam_adv_set_audience_params替换 pixel/S2S 受众的硬编码参数—
kadam_adv_delete_audience永久删除受众(需要 confirm: true)destructive
财务与统计
工具描述注解
kadam_adv_list_finance_operations交易历史(存款、扣费、退款)readOnly
kadam_adv_get_stats统一统计 — 通过 reportType 参数提供 3 种报告类型:custom(使用维度/指标映射的报告构建器)、sites(按站点细分)、postbacks(转化日志)readOnly
Publisher 工具(17 个)

需要 KADAM_PUB_API_KEY。

站点(来源)
工具描述注解
kadam_pub_list_sources列出 Publisher 站点及其统计数据readOnly
kadam_pub_create_source添加新站点(启动验证流程)—
kadam_pub_get_source获取站点详细信息readOnly
kadam_pub_update_source更新站点名称—
kadam_pub_set_source_status更改站点状态(active/paused/archived/unarchived)idempotent
广告单元
工具描述注解
kadam_pub_list_ad_units列出站点的广告单元,按格式筛选(native/banner/push/popunder/inpagepush)readOnly
kadam_pub_set_ad_unit_status更改广告单元状态(active/paused/archived/restored)idempotent
用户与统计信息
工具描述注释
kadam_pub_get_user_info获取发布商账户信息和余额readOnly
kadam_pub_get_stats发布商统计信息,包含易读的维度/指标映射readOnly
Kadam 智能变现

除了 Kadam 需求外,还通过外部广告网络销售广告单元的流量。API、代码和报告维度均将其称为普通的 mediation。请先阅读 kadam://reference/mediation;使用 groupBy=network 和 kadam_revenue / mediation_revenue 指标,在 kadam_pub_get_stats 中拆分收入。

工具描述注释
kadam_pub_list_mediation_networks网络目录、已关联账户的网络,以及广告单元当前接入的网络readOnly
kadam_pub_connect_mediation_network将网络接入广告单元(自动解析账户和广告位)—
kadam_pub_update_mediation_network更改地理位置、唯一频次上限、代理策略、标签模板、广告位或账户—
kadam_pub_set_mediation_network_status将连接设为 active / pausedidempotent
kadam_pub_retest_mediation_network重启强制测试流量占比(1-50%);开始新的测量周期—
kadam_pub_disconnect_mediation_network移除连接(需要 confirm)destructive
kadam_pub_update_mediation_network_account轮换网络 API 密钥、重命名或停用账户—
kadam_pub_delete_mediation_network_account移除网络账户(需要 confirm)destructive

资源(9)

Agent 在调用工具前可以读取的静态参考数据:

URI描述
kadam://reference/campaign-types所有广告格式类型及其 ID、功能、定价和创意素材规格
kadam://reference/pricing-modelsCPC、CPM、CPV、CPA Target 的 ID 和描述
kadam://reference/creative-formats各广告系列类型的创意素材要求
kadam://reference/ad-unit-types发布商广告单元格式及其 ID
kadam://reference/site-states发布商网站生命周期状态
kadam://reference/mediation外部广告网络:账户、广告位、连接、测试流量占比、收入拆分
kadam://reference/report-dimensions统计工具可用的维度和指标
kadam://reference/api-overviewKadam API 功能概览

提示词(4 个)

预构建的工作流模板,引导 Agent 完成多步骤操作:

提示词描述参数
kadam_launch_campaign分步创建广告系列(检查类型 -> 创建文件夹 -> 创建广告系列 -> 添加创意素材)type、name、url、budget
kadam_campaign_performance分析广告系列表现并提供优化建议campaignId、period
kadam_optimize_sites分析网站表现并建议调整黑名单/白名单campaignId、minClicks、maxCPA
kadam_account_overview完整的账户概览 — 广告系列、支出、表现最佳项—

架构

src/
├── index.ts                  # Entry point, server instructions, transport
├── config.ts                 # Zod-validated env config with cache
├── errors.ts                 # AuthError class
├── logger.ts                 # Pino structured logging (stderr)
├── output-formatter.ts       # Text formatting + 50KB truncation
├── middleware/
│   └── tool-wrapper.ts       # Auth, error handling, logging middleware
├── api/
│   ├── http-client.ts        # Generic HTTP client with retry/429/timeout
│   ├── partners-client.ts    # Advertiser API (lazy singleton)
│   └── pub-client.ts         # Publisher API (lazy singleton)
├── utils/
│   ├── pagination.ts         # Shared pagination extraction
│   ├── cache-once.ts         # Generic async cache-once utility
│   └── dimension-mapper.ts   # Stats dimension name→ID resolution
├── types/
│   ├── common.ts             # Shared types (ApiListResponse, ReportConfig)
│   ├── advertiser.ts         # Campaign, Creative, Audience types + maps
│   ├── publisher.ts          # Source, AdUnit, PubUser types + maps
│   └── tool-module.ts        # ToolModule interface
├── tools/
│   ├── advertiser/           # 63 tools across 14 modules
│   └── publisher/            # 17 tools across 6 modules
├── resources/                # 9 reference resources
└── prompts/                  # 4 workflow prompts
关键设计决策
  • ToolWrapper 中间件 — 为全部 80 个工具集中处理身份验证、错误格式化和日志记录
  • 惰性单例 API 客户端 — 每个产品使用一个 HttpClient 实例,首次使用时创建
  • 输出截断 — 每个响应硬性限制为 50KB,并通过 maxResults(默认 25,最大 100)防止大模型上下文溢出
  • 易读输出 — 使用格式化表格、对齐的实体和分页元数据,而非原始 JSON
  • 工具注释 — 使用 readOnlyHint、destructiveHint、idempotentHint 指导 Agent 行为
  • 服务说明 — 连接时向大模型发送使用模式和限制条件
  • 维度映射 — 统计工具接受易读名称(“clicks”、“spend”),并在内部将其解析为 API ID
  • 按角色定制的目录 — bearer 原样转发,并在每个会话中通过 GET /access 读取一次其角色(参见“基于角色的目录”)。工具声明 requires: "impersonation",ToolWrapper 会在客户端会话中跳过这些工具;campaigns.ts 仅在模拟身份下将仅限管理员使用的广告系列字段添加到其架构中。此处不实施任何权限控制 — API 仍会对客户端令牌返回 403 / 422 — 因此目录永远不会比密钥的实际权限范围更广;只有在无法访问 /access 时才会更窄

开发

先决条件
  • Node.js >= 18
  • npm
设置
git clone https://github.com/kadam-official/mcp-server.git
cd mcp-server
npm install
cp .env.example .env  # Fill in your API keys
命令
npm run dev             # Watch mode with tsx
npm run build           # Production build with Vite
npm run start           # Run built server
npm run typecheck       # TypeScript check
npm run lint            # ESLint
npm run format          # Prettier
npm test                # Run 82 tests
npm run test:coverage   # Tests with V8 coverage
npm run inspect         # MCP Inspector (visual debugger)
测试

使用 Vitest + MCP SDK InMemoryTransport,在 23 个文件中运行 202 项测试:

  • 单元测试 — 输出格式化器、配置、HTTP 客户端(模拟 fetch)
  • 中间件测试 — ToolWrapper 身份验证、错误格式化、日志记录
  • 集成测试 — 通过内存 MCP 客户端测试包含全部 72 个工具、8 个资源和 4 个提示词的完整服务
  • 工具处理程序测试 — 使用模拟 API 客户端测试每个工具模块
npm test
# Test Files  23 passed (23)
#      Tests  202 passed (202)
MCP Inspector

MCP Inspector 提供用于测试的可视化界面:

npm run build
npm run inspect

部署

Docker
docker build -t kadam-mcp-server .
docker run -i --rm -e KADAM_ADV_API_KEY=... kadam-mcp-server
CI/CD

.gitlab-ci.yml 流水线包括:

  • lint — ESLint + TypeScript 检查
  • test — 使用覆盖率运行 Vitest
  • build — Vite 生产构建
  • publish — npm 发布 + Docker 推送(手动触发)

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。