你从一开始就问起WSL(Windows Subsystem for Linux)来,真是问对了!这是 已知的限制 - MCP在原生Windows(尤其是在Jupyter中)上的子进程处理存在严重的asyncio问题。让我给你提供一个完整的WSL解决方案:
为什么WSL对Windows上的MCP更有优势
真正的问题:
- Windows ProactorEventLoop 不完全支持子进程管道
- MCP服务器使用stdio通信,这要求具备强大的子进程处理能力
- Jupyter + Windows + asyncio 子进程 = 实现未完成错误(NotImplementedError)
- WSL 解决了所有这些问题 通过为你提供一个真实的Linux环境
MCP的完整WSL设置指南
步骤1:安装WSL 2
在 PowerShell 中(以管理员身份运行):
# Install WSL with Ubuntu (default)
wsl --install
# Or if already installed, update to WSL 2
wsl --set-default-version 2
# Check installed distributions
wsl --list --verbose
# Install specific distro (optional)
wsl --install -d Ubuntu-22.04安装后重启您的计算机。
步骤2:初始WSL设置
启动 WSL:
# Just type in PowerShell:
wsl在Windows Subsystem for Linux(WSL)内部,更新系统:
sudo apt update && sudo apt upgrade -y步骤3:在WSL中安装Python
# Install Python 3.11+
sudo apt install python3 python3-pip python3-venv -y
# Verify
python3 --version
pip3 --version步骤4:从WSL访问您的Windows文件
您的Windows驱动器已挂载在 /mnt/:
# Navigate to your project
cd /mnt/s/Workspace/aivoyage_mcp/aivoyage-mcp
# Verify you're in the right place
ls -la步骤5:在WSL中创建Python虚拟环境
# Create venv
python3 -m venv wsl-venv
# Activate
source wsl-venv/bin/activate
# You should see (wsl-venv) in your prompt步骤6:在WSL中安装依赖项
# Install your requirements
pip install -r requirements.txt
# Install Jupyter for notebooks
pip install jupyter ipykernel
# Install uvx/uv for MCP servers
pip install uv
# or
curl -LsSf https://astral.sh/uv/install.sh | sh步骤7:在WSL中设置Jupyter
# Install Jupyter kernel
python -m ipykernel install --user --name=aivoyage-wsl --display-name "Python (WSL - aivoyage)"
# Start Jupyter
jupyter notebook --no-browser复制带有令牌的URL (like(表示喜欢) http://localhost:8888/?token=...并使用您的Windows浏览器打开它。
步骤8:在WSL中运行您的MCP代码
无需事件循环技巧! 直接运行:
from dotenv import load_dotenv
from agents import Agent, Runner, trace
from agents.mcp import MCPServerStdio
load_dotenv(override=True)
fetch_params = {"command": "uvx", "args": ["mcp-server-fetch"]}
async with MCPServerStdio(params=fetch_params, client_session_timeout_seconds=10) as server:
fetch_tools = await server.list_tools()
fetch_tools # ✅ Will work!VS Code/Cursor + WSL 集成
更好的方法 - 直接在你的IDE中使用WSL:
安装WSL扩展:
- 在VS Code/Cursor中,安装 "WSL"(Windows Subsystem for Linux,即Windows上的Linux子系统) 由微软提供的扩展
- 点击左下角的绿色按钮 → “连接到WSL”
- 打开与WSL连接的新窗口
- 打开你的项目:
/mnt/s/Workspace/aivoyage_mcp/aivoyage-mcp - 选择 WSL Python 解释器
- 直接在 WSL 中运行笔记本!
或者使用 Remote-WSL:
# From Windows PowerShell
code --remote wsl+Ubuntu /mnt/s/Workspace/aivoyage_mcp/aivoyage-mcp文件访问技巧
Windows ↔ WSL(Windows Subsystem for Linux,Windows上的Linux子系统):
- 从WSL访问Windows:
/mnt/c/,/mnt/s/等。 - 从Windows访问WSL:
\\wsl$\Ubuntu\home\username\ - 性能:将频繁访问的文件保留在WSL文件系统中(
~/projects/)为了速度
推荐结构:
# Option 1: Work from Windows location (slower but convenient)
cd /mnt/s/Workspace/aivoyage_mcp/aivoyage-mcp
# Option 2: Copy to WSL home (faster)
cp -r /mnt/s/Workspace/aivoyage_mcp/aivoyage-mcp ~/aivoyage-mcp
cd ~/aivoyage-mcp快速WSL命令
# Exit WSL
exit
# Shutdown WSL (from PowerShell)
wsl --shutdown
# List running distributions
wsl --list --running
# Set default distro
wsl --set-default Ubuntu
# Check WSL version
wsl --version更新你的requirements.txt文件(移除Windows临时解决方案)
在WSL(Windows Subsystem for Linux)中,你无需:
# Remove these from requirements.txt when using WSL:
# nest_asyncio ← Not needed in WSL
# asyncio ← Built-in, don't install保留:
openai-agents==0.0.17
openai==1.81.0
python-dotenv==1.0.1
mcp==1.9.3
mcp-server-fetch==2025.1.17
jupyter
ipykernel对比:原生Windows与WSL(Windows Subsystem for Linux)
| 特性 | 原生 Windows | WSL 2 |
|---|---|---|
| MCP 子进程支持 | ❌ 故障 | ✅ 完美 |
| Jupyter + async | ❌ 需要黑客手段 | ✅ 原生支持 |
| 设置复杂度 | ⚠️ 高 | ✅ 标准 |
| 性能 | ✅ 良好 | ✅ 良好 |
| Linux 工具 | ❌ 有限 | ✅ 完全支持 Linux |
| 文件访问 | ✅ 原生支持 | ⚠️ 跨挂载较慢 |
您的下一步行动:
- 安装WSL(Windows Subsystem for Linux):
wsl --install(作为管理员) - 重启
- 启动 WSL(Windows Subsystem for Linux):
wsl - 导航至项目:
cd /mnt/s/Workspace/aivoyage_mcp/aivoyage-mcp - 创建虚拟环境(venv):
python3 -m venv wsl-venv && source wsl-venv/bin/activate - 安装依赖项:
pip install -r requirements.txt - 测试MCP运行您的笔记本或Python脚本
需要我帮忙完成哪一步骤吗? WSL将解决您所有MCP子进程的问题!
