第六部分:提升练习 —— 撰写黄金账户管理系统
现在我们知道一个完成MCP的组成了,现在我们来挑战一道进阶题
6.1 任务目标——构建“智能避险管家”
-
问题描述: 随着全球经济波动,用户对实物黄金投资需求激增。你需要为“深智银行(Deep Bank)”开发一个黄金交易中间件。
-
业务需求:
- 数据透明:用户要能随时查看资产账户情况。
- 操作便捷:支持口语化的存取和查询指令。
- 智能辅助:这不只是一个计算器,它需要能根据外部(如世界银行)的通胀数据,主动给出买入/卖出策略建议。
你的任务: 实现一个 MCP 服务器,作为 Agent 连接银行核心系统的“桥梁”。
练习的示例答案存放在
skills\gold-trading.7z和src\cufel_deepagent\mcp\servers\gold_server.7z中,解压即用
6.2 要求
必须包含以下功能:
1. 数据存储和读取
# 初始数据
DATA_FILE = "my_gold_data.json"
GOLD_PRICE = 500.0 # 假设金价
account = {"usd": 10000.0, "gold": 0.0}
def load_data():
if os.path.exists(DATA_FILE):
with open(DATA_FILE, "r") as f:
return json.load(f)
return {"usd": 10000.0, "gold": 0.0}
def save_data(data):
with open(DATA_FILE, "w") as f:
json.dump(data, f, indent=2)
2. Tool (至少实现存取黄金)
# 提示:参考 stock_server.py 中的买入/卖出/查询余额
@mcp.tool()
def deposit_gold(ounces: float) -> str:
"""存入黄金"""
# 你的代码
pass
@mcp.tool()
def withdraw_gold(ounces: float) -> str:
"""提取黄金"""
# 你的代码
pass
@mcp.tool()
def withdraw_money(amount_cny: float, description: str = "") -> str:
"""从黄金账户取款"""
#你的代码
pass
@mcp.tool()
def deposit_money(amount_cny: float, description: str = "") -> str:
"""资金存入黄金账户"""
#你的代码
pass
3. Resource(至少 1 个)
# 提示:返回一个账户仪表盘,包含现金、黄金、总资产
@mcp.resource("bank://dashboard")
def get_dashboard() -> str:
"""获取账户仪表盘"""
# 你的代码
pass
4. Prompt(至少 1 个)
# 提示:定义一个投资决策逻辑
@mcp.prompt()
def investment_decision() -> str:
"""投资决策指导"""
# 你的代码
pass
6.3 参考代码结构
src\cufel_deepagent\mcp\servers
├── __init__.py
└── my_goldbank.py # 你撰写的 MCP 服务器
my_goldbank.py 参考模板:
点击展开:完整模板代码(共54行)
"""我的黄金银行 MCP 服务器"""
import json
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("MyGoldBank")
# 初始数据
DATA_FILE = "my_gold_data.json"
GOLD_PRICE = 500.0 # 假设金价
account = {"usd": 10000.0, "gold": 0.0}
def load_data():
if os.path.exists(DATA_FILE):
with open(DATA_FILE, "r") as f:
return json.load(f)
return {"usd": 10000.0, "gold": 0.0}
def save_data(data):
with open(DATA_FILE, "w") as f:
json.dump(data, f, indent=2)
# ============ Resource ============
@mcp.resource("bank://dashboard")
def dashboard() -> str:
# TODO: 返回账户仪表盘
pass
# ============ Tool ============
@mcp.tool()
def check_balance() -> str:
# TODO: 查询余额
pass
@mcp.tool()
def deposit_gold(ounces: float) -> str:
# TODO: 存入黄金
pass
@mcp.tool()
def withdraw_gold(ounces: float) -> str:
# TODO: 提取黄金
pass
# ============ Prompt ============
@mcp.prompt()
def investment_guide() -> str:
# TODO: 投资指导
pass
if __name__ == "__main__":
mcp.run()
6.4 验证方法
- ❗️必须❗️将你的 MCP 添加到配置:
# src/cufel_deepagent/mcp/mcp.py
MCP_SERVERS_CONFIG = {
# ...
"my_goldbank": {
"command": "python",
"args": ["-m", "你的模块名"],
"transport": "stdio",
}
}
- 启动 Agent 并测试:
请查询我的账户余额
请读取https://www.sge.com.cn/上海黄金交易所网页得到当前黄金价格
请按照当前黄金价格买入 10 盎司黄金
请根据当前金价给我投资建议