大家好,今天我想分享一下我把一个 MCP 架构的天气服务项目,从远程开发机完整迁移到本地 Windows 电脑并成功运行的全过程。这个过程中踩了不少坑,希望我的经验能帮到大家少走弯路。

项目背景

这是一个典型的前后端分离项目:

  • 服务端:Node.js 编写,负责提供天气数据接口
  • 客户端:Python 编写,负责提供交互查询能力
  • 目标:在本地 Windows 环境完整部署并运行,实现 get_weather Beijing 这样的天气查询功能

本地环境准备

在开始之前,我们需要确保本地环境满足基本要求:

  1. Node.js:我推荐安装 LTS 版本(18.x / 20.x),版本太旧会导致依赖不兼容
  1. Python:需要 3.8 及以上版本,确保能运行现代 Python 代码
  1. PowerShell 执行策略:默认策略会阻止脚本运行,需要临时调整

PowerShell
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser -Force

 服务端部署(Node.js)

这是最容易踩坑的部分,因为服务端需要编译才能运行。

1. 进入服务端目录

PowerShell
cd "C:\Users\lx\Desktop\mcp_tutorial\mcp-server\weather"

⚠️ 注意npm 相关命令必须在这个目录下执行,因为这里才有 package.json 文件。

2. 安装依赖

PowerShell
npm install

我在这里遇到了两个问题:

  • 问题 1EBADENGINE 警告,提示 Node.js 版本过旧

解决:升级 Node.js 到 LTS 18.x 以上

  • 问题 2E401 错误,提示 npm 登录凭证过期

解决:执行 npm logout 后重新安装

3. 编译源码

PowerShell
npm run build

编译完成后,会在当前目录生成 build 文件夹,里面就是编译好的可运行 index.js 文件。这一步非常重要,直接运行源码会因为 ES6 语法兼容问题报错。

客户端部署(Python)

客户端的坑主要集中在虚拟环境和路径问题上。

1. 进入客户端目录

PowerShell
cd "C:\Users\lx\Desktop\mcp_tutorial\mcp-client"

2. 安装依赖

PowerShell
pip install uv openai

3. 启动客户端与服务端

PowerShell
uv run client_interns1.py ..\mcp-server\weather\build\index.js

⚠️ 注意:Windows 路径用反斜杠 \,所以这里是 ..\mcp-server...,而不是开发机上的斜杠 /

我在这里遇到的问题:

  • 问题 1无法加载.venv模块 错误

解决:这是 PowerShell 执行策略限制导致的,执行前面提到的策略调整命令即可

  • 问题 2:启动后长时间无响应

解决:这是 uv 工具在自动创建虚拟环境,耐心等待即可,或者手动创建虚拟环境再启动

✅ 验证运行

启动成功后,终端会出现 Query: 提示符,这时就可以输入查询指令了:

Plain Text
get_weather Beijing

如果一切正常,终端会返回北京的天气信息,这就说明整个服务已经成功运行了!

退出与清理

  • 停止服务:在运行中的终端按 Ctrl + C
  • 清理虚拟环境(可选):直接删除 .venv 文件夹

优化建议

  1. 脚本化启动:把所有步骤整合为一个 .ps1 脚本,以后双击就能一键启动
  1. 固定端口:在服务端配置中固定端口,避免端口冲突
  1. 增加日志:在服务端增加日志输出,便于定位运行时问题

总结

整个过程虽然踩了不少坑,但最终还是成功把项目从开发机迁移到了本地。核心要点就是:

  1. 分清服务端和客户端的目录,不要在错误的目录执行命令
  1. 服务端必须编译后才能运行,直接运行源码会报错
  1. Windows 和 Linux 的路径分隔符不同,注意区分
  1. PowerShell 的执行策略会影响虚拟环境的激活,需要提前调整

希望我的经验能帮到大家,如果有问题欢迎在评论区交流!

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐