Windows 平台上基于 MCP 构建“文心一言+彩云天气”服务实战

Windows 平台上基于 MCP 构建"文心一言+彩云天气"服务实战

本文示例将带你在 Windows 操作系统下,使用 Python 和 MCP(Model Context Protocol)框架,结合百度"文心一言"大模型与彩云天气 API,快速搭建一个既能查询天气又能生成中文自然回复的智能服务。


一、为什么选用 MCP

  • 统一上下文:MCP 提供标准化的上下文帧(Context Frame),让多轮会话、工具调用和模型生成之间做到清晰解耦。
  • 可扩展工具:新增、替换外部服务(如天气、翻译、检索)时,无需改动 Agent 核心逻辑,仅注册新工具即可。
  • 可观测与可测:上下文帧全量记录、可序列化到 Redis 或本地文件,方便调试与审计。

二、Windows 环境准备

  1. 安装 Python 3.10+。

  2. 打开 PowerShell 或 CMD,执行:

    powershell 复制代码
    python -m venv .venv
    .\.venv\Scripts\activate
    pip install --upgrade pip
  3. 安装项目依赖:

    powershell 复制代码
    pip install mcp[cli] httpx python-dotenv
  4. 在项目根目录下新建 .env 文件,写入:

    ini 复制代码
    WENXIN_API_KEY=你的文心一言 API Key
    WENXIN_SECRET_KEY=你的文心一言 Secret Key
    CY_TOKEN=你的彩云天气 Token

三、项目目录结构

复制代码
weather-mcp-windows/
├─ .env
├─ .venv/
├─ weather.py
└─ requirements.txt

四、集成"文心一言"大模型

weather.py 文件顶部,导入模块并加载环境变量:

python 复制代码
import os, json, asyncio
import httpx
from dotenv import load_dotenv
from mcp.server.fastmcp import FastMCP

load_dotenv()
WENXIN_API_KEY = os.getenv("WENXIN_API_KEY")
WENXIN_SECRET_KEY = os.getenv("WENXIN_SECRET_KEY")

实现获取访问令牌函数:

python 复制代码
async def get_wenxin_token() -> str:
    url = "https://aip.baidubce.com/oauth/2.0/token"
    params = {
        "grant_type": "client_credentials",
        "client_id": WENXIN_API_KEY,
        "client_secret": WENXIN_SECRET_KEY
    }
    async with httpx.AsyncClient() as client:
        resp = await client.post(url, params=params, timeout=10)
        return resp.json().get("access_token", "")

封装调用文心一言接口:

python 复制代码
async def call_wenxin(prompt: str) -> str:
    token = await get_wenxin_token()
    api = f"https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat?access_token={token}"
    payload = {
        "messages": [{"role":"user","content": prompt}],
        "model": "ernie_bot_turbo"
    }
    async with httpx.AsyncClient() as client:
        resp = await client.post(api, json=payload, timeout=15)
        return resp.json()["result"][0]["content"]

五、接入彩云天气 API

python 复制代码
CY_TOKEN = os.getenv("CY_TOKEN")
CY_API = "https://api.caiyunapp.com/v2.5"

async def get_caiyun_weather(lon: float, lat: float) -> dict:
    url = f"{CY_API}/{CY_TOKEN}/{lon},{lat}/weather.json"
    async with httpx.AsyncClient() as client:
        r = await client.get(url, timeout=10)
        return r.json()

六、定义 MCP 工具

python 复制代码
mcp = FastMCP("weather_mcp_win")

@mcp.tool()
async def query_weather(lon: float, lat: float) -> str:
    """
    调用彩云天气获取指定经纬度的当前天气
    Args:
      lon: 经度
      lat: 纬度
    """
    data = await get_caiyun_weather(lon, lat)
    if data.get("status") != "ok":
        return "天气服务调用失败"
    now = data["result"]["realtime"]
    return f"{now['skycon']},温度 {now['temperature']}°C," \
           f"湿度 {int(now['humidity']*100)}%"

@mcp.tool()
async def describe_weather(natural_prompt: str) -> str:
    """
    基于"文心一言"大模型,对天气情况生成优美文案
    Args:
      natural_prompt: 包含天气信息的简要描述
    """
    prompt = f"请根据以下内容生成一段优美的中文天气描述:{natural_prompt}"
    return await call_wenxin(prompt)

七、启动 MCP 服务(Windows)

weather.py 文件末尾,添加:

python 复制代码
if __name__ == "__main__":
    mcp.run(transport="http", host="127.0.0.1", port=8000)

启动服务:

powershell 复制代码
python weather.py

浏览器访问 http://127.0.0.1:8000/docs,可见自动生成的 OpenAPI 接口文档。


八、示例客户端调用

python 复制代码
import requests, json

# 1. 获取当前天气
resp1 = requests.post(
    "http://127.0.0.1:8000/query_weather",
    json={"lon":116.397, "lat":39.907}
)
weather_brief = resp1.json()["result"]

# 2. 生成中文描述
resp2 = requests.post(
    "http://127.0.0.1:8000/describe_weather",
    json={"natural_prompt": weather_brief}
)

print("简要:", weather_brief)
print("文心一言生成:", resp2.json()["result"])

九、后续扩展思路

  • 上下文持久化:引入 Redis 或 SQLite 存储历史 Context Frame。
  • 增加多模型切换:注册腾讯混元、华为昇思等国内模型工具,按需路由调用。
  • 实时推送:通过 WebSocket 或 Server-Sent Events 向前端推送天气更新。
  • 本地化部署:使用 Windows 容器(Docker Desktop for Windows)自动化运维,结合 IIS 或 Nginx 反代。
  • 面向企业:在企业内网搭建私有化 MCP 服务,使用自研知识库、流程引擎、OCR、文生图等多种工具。

让 MCP 成为你国产大模型与各种业务工具的"中枢神经",清晰管理上下文、快速接入新能力,拥抱结构化智能新时代!

相关推荐
Juchecar5 小时前
解析视觉:大脑如何“辨别”美丑?
人工智能
老蒋新思维5 小时前
紧跟郑滢轩,以 “学习力 +” 驱动 AI 与 IP 商业变革
网络·人工智能·学习·tcp/ip·企业管理·创始人ip·创客匠人
Guheyunyi5 小时前
安防监控系统,如何为你的生活构筑智慧安全屏障?
大数据·人工智能·安全·信息可视化·生活
计算衎5 小时前
python的AI大模型之facebook/nllb-200-distilled-600M的介绍和使用
人工智能·python·facebook·huggingface_hub
小狗照亮每一天5 小时前
【菜狗看背景】自动驾驶发展背景——20251117
人工智能·机器学习·自动驾驶
运筹说5 小时前
运筹说145期:从快递到自动驾驶:启发式算法的智慧幕后
人工智能·自动驾驶·启发式算法
大白IT5 小时前
智能驾驶:从感知到规控的自动驾驶系统全解析
人工智能·机器学习·自动驾驶
FL16238631295 小时前
智慧交通自动驾驶场景道路异常检测数据集VOC+YOLO格式8302张6类别
人工智能·yolo·自动驾驶
拓端研究室5 小时前
专题:2025年AI Agent智能体行业价值及应用分析报告:技术落地与风险治理|附140+ 份报告PDF、数据、可视化模板汇总下载
人工智能·pdf
数据与后端架构提升之路5 小时前
英伟达的 Alpamayo-R1:利用因果链推理赋能自动驾驶模型和数据工程剖析
人工智能·机器学习·自动驾驶