Skip to main content

MCP服务器用于处理广告投放数据

Project description

广告投放数据平台 MCP 服务

项目概述

这是一个基于 Model Context Protocol (MCP) 的广告投放数据服务器,为 LLM 应用提供智能的广告数据查询和分析能力。通过标准化的MCP协议,LLM可以直接调用广告投放相关的数据查询工具,获取业务洞察和决策支持。

✨ 核心特性

  • 🔧 MCP工具集成:提供广告查询、素材分析、指标推荐等MCP工具
  • 📊 指标工具:提供获取与验证指标的工具(推荐功能暂未启用)
  • 🎯 多维数据查询:支持按时间、媒体、分组等维度查询数据
  • 📈 89个业务指标:涵盖投放、转化、留存、财务等全链路指标
  • 🔗 标准协议支持:完全遵循MCP协议,支持Claude Desktop等客户端
  • ⚡ 异步高性能:基于异步架构,支持并发数据查询

🚀 快速开始

# 1. 克隆项目
git clone <repository-url> && cd mcp

# 2. 设置API Token
export BI_API_TOKEN="your_token_here"

# 3. 安装并运行测试
uv sync && uv run python tests/test_server.py

Claude Desktop集成

{
  "mcpServers": {
    "mcp-ad-server": {
      "command": "uvx",
      "args": ["mcp_ad_server"],
      "env": {"BI_API_TOKEN": "your_token"}
    }
  }
}

⚠️ 重要提示:如果遇到 spawn python ENOENT 错误,请使用完整的 Python 路径(用 which python3 查找)而非 python 命令。Claude Desktop 的 PATH 环境变量与终端不同。

📁 项目结构

mcp/
├── 📄 README.md                    # 项目说明(本文档)
├── 📄 USER_GUIDE.md               # 用户使用手册
├── 📄 DEVELOPMENT.md             # 开发者指南
├── 📄 ARCHITECTURE.md            # 系统架构设计
├── 🚀 run_server.py               # 服务启动脚本
├── 🧪 tests/                      # 测试文件
│   ├── test_server.py                # 集成测试
│   ├── test_config.py                # 配置测试
│   └── test_dotenv.py                # 环境变量测试
│
├── 💻 src/mcp_ad_server/          # 主要源码
│   ├── main.py                       # 服务器主入口
│   ├── config.py                     # 配置管理
│   ├── services/                     # 业务服务层
│   │   └── api_client.py                # BI API客户端
│   ├── managers/                     # 数据管理层
│   │   ├── base.py                      # Manager基础类
│   │   ├── indicator_manager.py         # 指标管理器
│   │   └── propmap_manager.py           # 字段映射管理器
│   ├── tools/                        # MCP工具实现
│   │   ├── ad_query.py                  # 广告查询工具
│   │   ├── material_query.py            # 素材查询工具
│   │   └── indicator_query.py           # 游戏指标查询工具
│   ├── resources/                    # MCP资源实现
│   │   ├── indicator_resources.py       # 指标资源
│   │   ├── mapping_resources.py         # 映射资源
│   │   └── config_resources.py          # 配置资源
│   └── prompts/                      # MCP提示实现(计划中)
│
├── 📊 src/mcp_ad_server/data/    # 内置数据文件(运行时默认读取)
│   ├── indicators/               # 89个指标定义文件
│   ├── groups/                   # 7个指标分组文件
│   └── propmap/                  # API字段映射文件
│
└── 📚 docs/                       # 原始API文档
    └── api/                          # API接口文档
        ├── GetAdCountList/              # 广告数据统计接口
        └── GetMaterialCountList/        # 素材数据统计接口

🛠️ MCP 工具功能

1. query_ad_data - 广告数据查询

查询广告投放效果数据,支持多维度筛选和分组统计。

参数

  • start_date/end_date: 查询时间范围 (YYYY-MM-DD)
  • indicators: 查询指标列表(中文名称)
  • media: 媒体渠道筛选(gdt、tt、bd等)
  • group_key: 分组维度(广告ID、项目ID等)
  • hours_24: 24小时维度查询,支持单天和多天并发查询

返回结构

  • data.columns: 列名列表(已做中文映射)
  • data.rows: 二维数组格式的数据行,对应columns顺序
  • data.total: 当前返回的数据条数
  • data.summary: 汇总数据(如果存在)

2. query_material_data - 素材数据查询

查询广告素材效果和质量数据,支持素材质量筛选。

参数

  • start_date/end_date: 查询时间范围
  • indicators: 查询指标列表
  • creative_users: 创意人筛选
  • producers: 制作人筛选
  • is_low_quality: AD优/低质素材筛选
  • is_inefficient: 低效素材筛选

返回结构:同广告数据查询

3. 游戏指标工具 - 指标验证与查询

基于游戏兼容性的指标验证和查询工具。

可用工具

  • get_available_indicators - 获取指定游戏的可用指标
  • validate_indicators - 验证指标在指定游戏中是否可用

✨ 系统特性

🔧 数据处理特性

  • 自动总计项处理: 智能识别和分离后端返回的总计数据
  • LLM优化数据结构: 提供中文映射的数据格式,便于LLM理解和分析
  • 参数别名兼容: 支持历史参数名向下兼容(如 appidapp_id
  • Pydantic类型安全: 完整的参数验证和数据类型转换

📊 数据返回格式

{
  "success": true,
  "data": {
    "columns": ["日期", "消耗", "新增注册", "新增付费"],
    "rows": [
      ["2024-01-01", 100.5, 50, 5],
      ["2024-01-02", 120.0, 60, 8],
      ["2024-01-03", 80.0, 40, 3]
    ],
    "total": 3,            // 当前返回的数据条数
    "summary": {...}       // 汇总数据(如果后端提供)
  },
  "metadata": {...}        // 查询元数据
}

🔄 版本管理

  • API客户端版本: v0.0.5
  • BI API版本: v0.2.07
  • 语义化版本控制: 主版本兼容性保证

📋 MCP 资源访问

指标相关资源

  • mcp://indicators/{指标名称} - 获取单个指标详细定义
  • mcp://groups/{组ID} - 获取指标组信息
  • mcp://config/groups - 获取所有指标组概览

配置相关资源

  • mcp://propmap/{API名称} - 获取API字段映射关系
  • mcp://config/media - 获取支持的媒体渠道
  • mcp://config/group_keys - 获取支持的分组维度

📊 指标体系架构

目前的业务场景指标组

指标组 核心用途 主要指标示例
投放启动决策 判断是否开始投放新广告 激活率、注册成本、创角成本、3秒播放率
投放效果监控 监控投放中广告实时效果 消耗、点击率、新增注册、新增付费
短期价值评估 评估首日到7日用户价值 首日ROI、7日ROI、新增付费率、新增ARPPU
深度价值分析 评估用户长期价值 累计ROI、留存率、生命周期价值
平台数据对账 核对各平台上报数据 平台充值、平台付费人数、数据差异
终止决策预警 判断是否需要停止投放 成本预警、ROI预警、质量预警
财务核算结算 财务结算相关 分成后ROI、实际消耗、结算金额

🔌 客户端集成示例

Claude Desktop 使用

配置完成后,可直接在Claude Desktop中进行对话查询:

请帮我分析一下2025年1月1-7日腾讯广点通渠道的广告投放效果,
重点关注ROI表现和用户转化情况。

程序化调用

# 使用MCP Python SDK
from mcp import ClientSession

async with ClientSession("stdio", ["python", "run_server.py"]) as session:
    # 查询广告数据
    result = await session.call_tool("query_ad_data", {
        "start_date": "2025-01-01",
        "end_date": "2025-01-07",
        "indicators": ["消耗", "新增注册", "首日ROI"],
        "media": ["gdt"]
    })

    # 获取游戏可用指标
    available_indicators = await session.call_tool("get_available_indicators", {
        "app_id": "59",
        "query_type": "ad_query"
    })

    # 验证指标兼容性
    validation = await session.call_tool("validate_indicators", {
        "indicators": ["消耗", "展现", "点击"],
        "app_id": "59"
    })

🌐 支持的媒体渠道

渠道代码 渠道名称 渠道代码 渠道名称
gdt 广点通 tt 今日头条
bd 百度 bdss 百度搜索
bz B站 zh 知乎
uc UC dx 抖小广告量
sphdr 视频号达人 xt 星图
gg 谷歌 nature 自然量

📚 文档指南

本项目提供完整的文档体系,请根据您的角色选择合适的文档:

角色 推荐文档 用途
最终用户/运营 USER_GUIDE.md 安装使用、功能操作、业务应用
开发者/贡献者 DEVELOPMENT.md 开发环境、编码规范、扩展开发
架构师/技术负责人 ARCHITECTURE.md 系统设计、组件架构、技术决策

🚀 阅读建议

  1. 想要快速使用服务:直接阅读 USER_GUIDE.md 的"快速开始"部分
  2. 想要贡献代码:先阅读 ARCHITECTURE.md 了解设计,再看 DEVELOPMENT.md 学习开发规范
  3. 想要了解技术架构:重点阅读 ARCHITECTURE.md

🔧 技术特点

  • 现代Python架构:基于Python 3.11+
  • 模块化设计:清晰的层次分离,Manager模式管理数据
  • 标准协议支持:遵循MCP协议规范
  • 高性能异步:使用Python 3.11+ TaskGroup实现多天24小时数据并发查询,查询性能提升10-20倍
  • 模块化扩展:清晰的组件注册机制,便于添加新工具和资源
  • 完整测试覆盖:包含单元测试和集成测试

📈 更新日志

  • v0.0.6 (2025-08-14)
    • 参数中文化改造:MCP工具接口全面支持中文参数,提升LLM使用体验
      • 游戏参数从数字ID改为中文名称(如 app_id="59"app="正统三国"
      • 支持中文媒体渠道、投手姓名、广告状态等参数值
      • 新增游戏支持:我的仙门、一起斗消乐、大头系列游戏等
    • 多天24小时查询优化:改进summary数据准确性
      • 废弃手动合并summary逻辑(存在百分比/比率指标计算不准确问题)
      • 通过额外API请求(hours_24=False)获取后端计算的准确汇总数据
      • 添加注释记录未来可返回daily_summaries列表的改进思路
  • v0.0.5 (2025-08-14)
    • 指标验证系统重构和 PropMap 架构优化
    • 指标体系从全局改为游戏类型分组(棋牌/非棋牌)
    • PropMap 文件反向重构,管理器重写,提升可维护性
    • API 客户端验证逻辑优化:支持动态条件性指标注入,基于 group_key 智能添加指标,与前端表现一致
  • v0.0.4 (2025-08-13)
    • 数据处理层重构与版本管理优化;素材数据完善;上传后端接口参考代码;基于代码更新 docs/
    • 对指标错误提供更规范的错误提示
    • 查询结果改为按日期倒序返回,且只输出筛选后的指标
      • 使用 group_key 分组时,会在返回中追加并映射对应的 group_key
  • v0.0.3 (2025-08-12)
    • 清理推荐逻辑冗余代码,统一文件和函数命名规范
    • 迁移数据目录到 src/mcp_ad_server/data 以支持打包分发
    • 实现客户端层数据排序(普通数据按日期倒序,24 小时数据按小时正序)
    • 使用 Python 3.11+ asyncio.TaskGroup 优化多天 24 小时查询并发处理,暂时增加间隔避免瞬间打满后端,后续或可优化。
    • 通过 uvx mcp_ad_server 可在任意机器快速接入 MCP
  • v0.0.2 (2025-08-11)
    • 完善 API 客户端功能:参数别名兼容、自动总计项处理、Pydantic 数据验证
  • v0.0.1 (2025-08-07)
    • 重构文档体系,实现完整 MCP 服务架构
    • 初始化项目结构,整理指标体系
    • 添加 API 响应示例文件(原始提交于 2025-08-05)

🤝 技术支持

如有问题或建议,请联系:

  • 技术问题:钉钉 AI 开发团队
  • 业务咨询:广告投放团队
  • 功能建议:通过内部反馈渠道提交

📋 TODO (低优先级)

  • 指标配置优化:当前card_games/non_card_games结构中可能存在指标重复,可考虑抽取为分层指标集(base + extensions)以简化配置和维护

注意:本项目中的指标分组和推荐算法为测试版本,实际使用时需要与投放团队对接校准业务逻辑。∑

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mcp_ad_server-0.0.6.tar.gz (85.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mcp_ad_server-0.0.6-py3-none-any.whl (112.6 kB view details)

Uploaded Python 3

File details

Details for the file mcp_ad_server-0.0.6.tar.gz.

File metadata

  • Download URL: mcp_ad_server-0.0.6.tar.gz
  • Upload date:
  • Size: 85.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.0

File hashes

Hashes for mcp_ad_server-0.0.6.tar.gz
Algorithm Hash digest
SHA256 9ee6111c625be305125875931ae7dcc284c338ae33b2000032407c6a443ca1af
MD5 4ace2bf52770f5b760ade441c4c56ac5
BLAKE2b-256 e0ddcf9c4fbbce8770fda3add1ec51f15df3acee7275f05960cf89b510afb4df

See more details on using hashes here.

File details

Details for the file mcp_ad_server-0.0.6-py3-none-any.whl.

File metadata

File hashes

Hashes for mcp_ad_server-0.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 db0aa95dfbbbcffd19df56893cb7057611ab2e72c4f385a2dd8ed14c7183de56
MD5 976d0a25bf157a1a7299772d54eb5a12
BLAKE2b-256 543bb820ed31a71f290c60d6b89b6ebff9f3ce40f100a233088611999e6fd1c3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page