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

安装好了虚拟环境以后:

  1. 打开 VS Code:启动你的 VS Code。(这里一定要信任项目,不然下面的选择解析器没办法选择到环境!)
  2. 选择解释器
    • 按下快捷键 Ctrl + Shift + P(Windows/Linux)或 Cmd + Shift + P(Mac)。
    • 在弹出的命令面板中输入 Python: Select Interpreter 并回车。
    • 在列表中,你应该能看到类似 Python 3.12.x ('mcp-env': conda) 的选项。
    • 点击选中它
  3. 选择调试器:Ctrl+F5(选择:Python Debugger
  4. 注意!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中进行对话就行,比如我这里让它帮我把桌面上有个文件夹的图片名改一下:

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐