MCP API 集成

Model Context Protocol (MCP) 入门

James Chapman

AI Curriculum Manager, DataCamp

mcp 代码流程 v2

Model Context Protocol (MCP) 入门

API 改进

Model Context Protocol (MCP) 入门

API 改进

API 改进 2

Model Context Protocol (MCP) 入门

API 改进

API 改进 3

Model Context Protocol (MCP) 入门

超时与错误处理

import requests

@mcp.tool()
def convert_timezone(date_time: str, from_timezone: str, to_timezone: str) -> str:
    payload = {"dateTime": date_time, "fromTimezone": from_timezone, "toTimezone": to_timezone}

try: r = requests.post("https://api.opentimezone.com/convert", json=payload, timeout=10)
r.raise_for_status()
data = r.json() converted_time = data.get("dateTime", "N/A") return f"Time in {to_timezone}: {converted_time}"
except requests.exceptions.RequestException as e: return f"Error converting timezone: {e}"
Model Context Protocol (MCP) 入门

API 认证:应做与禁忌

 

  • API 密钥 → 始终在服务器端访问

 

本地 API 示意图

Model Context Protocol (MCP) 入门

API 认证:应做与禁忌

 

  • API 密钥 → 始终在服务器端访问
    • 本地主机:环境变量,.env

 

本地 API 配置

Model Context Protocol (MCP) 入门

API 认证:应做与禁忌

 

  • API 密钥 → 始终在服务器端访问
    • 本地主机:环境变量,.env
    • 远程主机:环境变量,托管密钥

 

远程 API 示意图 1

Model Context Protocol (MCP) 入门

API 认证:应做与禁忌

 

  • API 密钥 → 始终在服务器端访问
    • 本地主机:环境变量,.env
    • 远程主机:环境变量,托管密钥

客户端绝不发送、接收或访问凭据

 

远程 API 示意图 2

Model Context Protocol (MCP) 入门

API 认证:应做与禁忌

 

  • API 密钥 → 始终在服务器端访问
    • 本地主机:环境变量,.env
    • 远程主机:环境变量,托管密钥

客户端绝不发送、接收或访问凭据

❌ 硬编码、放入 URL、写入日志

❌ 作为工具参数或工具结果泄露

 

远程 API 示意图 3

Model Context Protocol (MCP) 入门
import os
import requests

@mcp.tool()
def convert_timezone(date_time: str, from_timezone: str, to_timezone: str) -> str:

headers = {"Content-Type": "application/json"}
api_key = os.environ.get("TIMEZONE_API_KEY") if api_key: headers["Authorization"] = f"Bearer {api_key}"
payload = {"dateTime": date_time, "fromTimezone": from_timezone, "toTimezone": to_timezone} try: r = requests.post("https://api.opentimezone.com/convert", json=payload, headers=headers, timeout=10) r.raise_for_status() data = r.json() converted_time = data.get("dateTime", "N/A") return f"Time in {to_timezone}: {converted_time}" except requests.exceptions.RequestException as e: return f"Error converting timezone: {e}"
Model Context Protocol (MCP) 入门

Vamos praticar!

Model Context Protocol (MCP) 入门

Preparing Video For Download...