第四部分:练习 —— 配置宏观经济分析 MCP + Skill
-
问题描述: 你现在是一家跨国企业的战略分析师。在平时的业务中经常需要分析国家间的 GDP 增长趋势有何异同?这种趋势是否预示着某种宏观周期?然后向Leader进行汇报。
-
技术痛点:
- 手动查阅世界银行数据太慢。
- 单纯调用接口返回的 JSON 数据(Raw Data)汇报效率低。
- 你需要为你的blog撰写的智能体添加一个能力,既能自动获取数据,又能按照专业分析师的逻辑输出对比报告。
-
技术路径:
- 配置worldbank MCP 以获得读取世界各国宏观数据相关的工具
- 撰写 Skill 来传递 MCP 中工具的正确使用方式 和 分析方式
练习的示例答案存放在
skills\macro-economic-analysis.7z,解压即用
4.1 任务目标
配置wordbank MCP 并创建 skills/macro-economic-analysis/SKILL.md,让 Agent 能够自动使用 worldbank MCP 获取数据,进行中美 GDP 走势对比。
4.1 配置 World Bank MCP
参考文档:docs/WORLD-BANK-MCP.md(包含所有工具的详细说明)
确保 MCP 已配置
文件:src/cufel_deepagent/mcp/mcp.py
MCP_SERVERS_CONFIG = {
# ... 其他配置
"worldbank": {
"command": "npx",
"args": ["worldbank-mcp"],
"transport": "stdio",
},
}
4.2 撰写Skill
步骤 1:创建目录
mkdir -p skills/macro-economic-analysis
touch skills/macro-economic-analysis/SKILL.md
步骤 2:填写 SKILL.md 内容
参考项目文件 skills\macro-economic-analysis
SKILL.md 核心结构:
点击展开:完整 SKILL.md 示例(共38行)
---
name: macro-economic-analysis
description: 当用户需要分析国家宏观经济数据(GDP、CPI、通胀等)时使用此技能。
---
## 工作流程
当需要分析宏观经济时,请按以下步骤:
1. 使用 `search-indicators` 搜索正确的指标代码
2. 使用 `get-economic-data` 获取数据(设置 years=10)
3. 解析 JSON 结果,提取年份和数值
4. 对比分析两国数据
5. 输出 Markdown 格式报告
| 工具名 | 功能 | 示例参数 |
|-------|------|---------|
| `get-country-info` | 获取国家详细信息 | `{"countryCode": "CN"}` |
| `search-indicators` | 搜索经济指标 | `{"keyword": "GDP"}` |
| `get-economic-data` | 获取经济数据 | `{"countryCode": "CN", "indicator": "GDP_GROWTH"}` |
| `get-social-data` | 获取社会数据 | `{"countryCode": "CN", "indicator": "POPULATION"}` |
**常用指标代码**:
- `GDP` - 国内生产总值(美元)
- `GDP_GROWTH` - GDP 增长率(%)
- `GDP_PER_CAPITA` - 人均 GDP(美元)
- `INFLATION` - 通胀率(%)
- `UNEMPLOYMENT` - 失业率(%)
## 注意事项
- 国家代码:中国=CN,美国=US
- 默认查询 10 年数据
- GDP 单位是美元,注意转换展示
步骤 3:验证
重启 Agent,进入交互模式,输入:
uv run main.py -i
请查找合适的 skill,分析中国和美国近10年的GDP走势对比
预期输出:一份包含数据表格、趋势分析的 Markdown 报告 具体示例见教学视频
🔥 进阶挑战:不仅要看,还要存 你的 Leader 提出了新要求:他不需要阅读 Markdown 报告,而是需要你直接提供包括2015-2025 年中美 GDP 数据的 Excel 表(xlsx 格式), 请尝试修改 Skill 或 Prompt,让 Agent 仅输出纯净的 JSON 数据,并利用 tool 转换为 xlsx 格式
💡 点击查看:你可能会遇到的问题
你会发现什么?
- Agent 经常会在 JSON 外面包裹 "Here is the data..." 这样的废话。
- 有时 JSON 的 Key(键名)会不稳定,一会儿叫 "gdp",一会儿叫 "value"。
结论:让擅长聊天的 LLM 做"填表"工作非常痛苦。这就是为什么我们需要下一讲的"结构化输出(Structured Output)"技术。