使用VsCode+Cline搭建一个MCP服务
AI小白,想通过费曼学习法,加深自己的印象,有不足的希望大家指出
想象一下,你只需要在 VS Code 里对 AI 说一句“帮我查一下我桌面上有多少个文件,或者对AI说一句帮我把桌面上的某个文件改一下文件名”,它就能自动调用接口并把你想改的那个文件名修改了,是不是非常酷?这其实就是 MCP(模型上下文协议)的魅力所在。作为 AI 大模型与外部工具交互的“标准插头”,MCP 让大模型真正长出了“手和脚”。今天,我们就用大家最熟悉的 Python 语言,配合 VS Code 里的 Cline 插件,花几分钟时间实现一个简单又实用的 MCP 天气查询功能,体验 AI Agent 的自动化快感!

安装必要工具
确保已安装 Visual Studio Code(VSCode)和 Python 环境。在 VSCode 扩展市场中搜索并安装 Code Runner 和 Python 扩展。
创建名为 mcp-env 的虚拟环境,指定 Python 版本为 3.12
打开:Anaconda Prompt
# 创建名为 mcp-env 的虚拟环境,指定 Python 版本为 3.12
conda create -n mcp-env python=3.12 -y
# 激活虚拟环境
conda activate mcp-env
安装好了虚拟环境以后:
- 打开 VS Code:启动你的 VS Code。(这里一定要信任项目,不然下面的选择解析器没办法选择到环境!)
- 选择解释器:
- 按下快捷键
Ctrl + Shift + P(Windows/Linux)或Cmd + Shift + P(Mac)。 - 在弹出的命令面板中输入
Python: Select Interpreter并回车。 - 在列表中,你应该能看到类似
Python 3.12.x ('mcp-env': conda)的选项。 - 点击选中它。
- 按下快捷键
- 选择调试器:Ctrl+F5(选择:Python Debugger)
- 注意!vscode终端前面一定要是带着我们创建的环境的!否则等于环境没有被激活一定是有(mcp_env)在前面,否则得手动激活环境(终端输入:conda activate mcp_env)
完成以上步骤后,你的 VS Code 才算真正“绑定”了 mcp-env 环境。以后在这个项目里写代码、运行脚本,都会使用这个环境里的 Python 和包。
安装mcp依赖(推荐python -m pip install安装方法,当然pip install mcp也是可以的)
区别在于:
处理多个 Python 版本
如果你的系统中安装了多个 Python 版本(例如 Python 3.10 和 3.12),直接输入 pip install 可能会调用较旧版本的 pip,导致包被安装到了错误的 Python 环境中。而使用 python -m pip install 可以确保包被安装到你当前显式调用的那个 Python 解释器所对应的环境中。
python -m pip install
然后去Cline插件中进行API的配置
打开Cline在设置中填入API和Key(这里我用的是Deepseek)
建议大家别用free免费的模型,会有小问题,去官网充值5块或者10块,即可

实现此功能的Python代码
from mcp.server.fastmcp import FastMCP
import os
# 初始化 MCP 服务
mcp = FastMCP("file-explorer")
# 👇 这里是读取文件功能
# ==========================================
@mcp.tool()
def list_files(folder_path: str) -> str:
"""列出指定文件夹下的所有文件和子文件夹名称"""
try:
# 检查路径是否存在
if not os.path.exists(folder_path):
return f"错误:路径不存在 -> {folder_path}"
# 检查是否是文件夹
if not os.path.isdir(folder_path):
return f"错误:这不是一个文件夹 -> {folder_path}"
items = os.listdir(folder_path)
if not items:
return "该文件夹是空的。"
# 格式化输出
result = [f"📂 目录 '{folder_path}' 包含以下内容:"]
for item in items:
full_path = os.path.join(folder_path, item)
prefix = "📁" if os.path.isdir(full_path) else "📄"
result.append(f"{prefix} {item}")
return "\n".join(result)
except Exception as e:
return f"读取文件夹失败: {str(e)}"
# ==========================================
# 👇 这里是新增的重命名功能
# ==========================================
@mcp.tool()
def rename_file(old_path: str, new_name: str) -> str:
"""重命名桌面上的文件或文件夹
Args:
old_path: 文件的完整绝对路径 (例如: C:\\Users\\TH\\Desktop\\旧名字.txt)
new_name: 想要修改成的新文件名 (例如: 新名字.txt)
"""
try:
# 1. 检查原文件是否存在
if not os.path.exists(old_path):
return f"❌ 错误:找不到文件 -> {old_path}"
# 2. 获取文件所在的父目录
parent_dir = os.path.dirname(old_path)
# 3. 拼接出新文件的完整路径
new_path = os.path.join(parent_dir, new_name)
# 4. 执行重命名操作
os.rename(old_path, new_path)
return f"✅ 成功!已将文件重命名为:{new_name}"
except PermissionError:
return f"❌ 权限不足:无法修改该文件,可能文件正在被占用。"
except Exception as e:
return f"❌ 重命名失败:{str(e)}"
# 启动服务
if __name__ == "__main__":
mcp.run()
调用的cline_mcp_settings.json文件
{
"mcpServers": {
"file-explorer": {
"command": "这个路径是你创建的虚拟环境中python文件的路径要用完整路径",
"args": [
"-u",
"这里面的路径填你file_server.py的路径"
],
"disabled": false,
"autoApprove": []
}
}
}
然后在Cline中进行对话就行,比如我这里让它帮我把桌面上有个文件夹的图片名改一下:

更多推荐


所有评论(0)