使用说明
Google Ads 负向关键词 MCP 服务器
一个用于在Netlify Functions上运行模型上下文协议(MCP)工具服务器的初始仓库。该服务器提供了Google Ads搜索词实用工具,这些工具既可以连接到实时的Google Ads API,也可以在本地开发时回退到确定性的模拟数据。
特点/特性
- ✅ 表示“正确”或“已确认”。 Netlify 函数 入口点位于
/netlify/functions/mcp.ts(从……开始)提供/服务/mcp。 - ✅ 实现了两个MCP工具的使用
@modelcontextprotocol/sdk:fetch_search_terms– 为构建GAQL(Google Analytics Query Language,谷歌分析查询语言)search_term_view并返回实时或模拟的行数据。suggest_negative_keywords– 分析行数据,推荐精确/短语否定关键词,并附上易于理解的原因。
- ✅ 用途
fetch-to-node以适应Netlify的Request/Response用于MCP传输的对象。 - ✅ 共享TypeScript类型,使用Zod进行验证,并为MCP-aware客户端和平凡客户端提供JSON/文本双输出。
入门指南
1. 安装依赖项
npm install
如果你处于离线状态或无法访问 npm 注册表,请在网络连接可用时安装包。
2. 配置环境变量
复制 .env.example 到;朝;对于;在……方面;向 .env 并填写您的Google Ads API凭据。当缺少任何凭据时,服务器会记录一条消息并返回打包的模拟搜索词数据集。
cp .env.example .env
# Edit .env as needed
3. 使用Netlify Dev在本地运行
npm run dev
Netlify Dev 提供以下功能: http://localhost:8888/mcp该函数仅响应遵循MCP HTTP规范的POST请求。
4. 使用MCP工具进行检查
你可以使用以下方法将HTTP端点代理到MCP Inspector中: mcp-remote 适配器;调整器;改编者(根据上下文,此词可有多种翻译)
npx @modelcontextprotocol/inspector npx mcp-remote@next http://localhost:8888/mcp
当部署到Netlify时:
npx @modelcontextprotocol/inspector npx mcp-remote@next https://<your-site>.netlify.app/mcp
项目结构
├── netlify/functions/mcp.ts # Netlify handler registering MCP tools
├── src/
│ ├── googleAds.ts # GAQL builder + live/mock data fetcher
│ ├── types.ts # Shared Row & Candidate interfaces
│ └── util/mcp.ts # Helper to format MCP tool results
├── .env.example # Required Google Ads credentials
├── netlify.toml # Netlify configuration (Node 20 + esbuild)
├── package.json # Scripts & dependencies (TypeScript + linting)
├── tsconfig.json # Strict ESM configuration targeting ES2022
└── README.md # This file
可用脚本
npm run dev– 在本地启动 Netlify Dev。npm run build– 类型检查并生成JS到dist/。npm run typecheck– 运行 TypeScript 而不生成文件。npm run lint– 使用 ESLint 对仓库进行代码检查 +@typescript-eslint。
工具合同
fetch_search_terms
- 输入
{ "customerId": "1234567890", "start": "2024-05-01", "end": "2024-05-07", "campaignId": "optional", "adGroupId": "optional" } - 输出
{ "rows": [ { "searchTerm": "free resume template", "date": "2024-05-01", "campaignId": "1234567890", "adGroupId": "1111111111", "impressions": 120, "clicks": 25, "costMicros": 1750000, "conversions": 0 } ] }
suggest_negative_keywords
- 输入
{ "rows": [ /* output from fetch_search_terms */ ], "minClicks": 5, "maxConvRate": 0.005, "badPhrases": ["free", "job", "jobs", "hiring", "how to", "what is", "review", "reviews"] } - 输出
{ "summary": "Identified 2 negative keyword candidates from 5 rows (minClicks=5, maxConvRate=0.50%).", "candidates": [ { "text": "free resume template", "match_types": ["EXACT", "PHRASE"], "reasons": [ "Low conv-rate (0.00%) on 25 clicks; cost ~$1.75", "Search term contains phrase \"free\"." ] } ] }
这两个工具都会自动为MCP客户端格式化响应,使用纯文本JSON和结构化内容。
部署
- 确保
netlify.toml已承诺/已下定决心。 - 将存储库连接到Netlify。
- 在 Netlify 的用户界面中设置您的环境变量。
- 使用以下方式部署
netlify deploy或者通过CI(持续集成)访问。MCP(可能指某种管理控制面板或服务端点)端点将可用在https://<site>.netlify.app/mcp。
测试说明
该存储库旨在用于无状态的、请求/响应式MCP(可能是指某种通信协议或中间件组件)交互。不需要也不支持长时间保持的SSE(Server-Sent Events)连接。