【AI技术_工具】用 MCP 把本地工具接入 Claude_Cursor,让 AI 真正摸到你的数据

前言

你有没有遇到过这种场景:你让 Claude 帮你分析一份本地的 CSV 销售数据,或者读取某个目录下的日志文件,结果它一脸无辜地说"我无法访问你的文件"?

问题不在于 Claude 不够聪明,而在于它缺少"手"。大型语言模型默认是纯文本接口,看不到你本地的文件、数据库、API。而 MCP(Model Context Protocol,模型上下文协议) 正是为了解决这个问题而生的标准协议------它让 AI 客户端(如 Claude Desktop、Cursor、VS Code)通过统一的协议调用你本地的工具和服务。

今天这篇博客,我带你从零搭建一个 MCP 服务器,把你的本地文件系统变成一个 AI 可以直接"摸"到的数据源。


一、MCP 到底是什么?大白话解释

你可以把 MCP 理解成 AI 和外部世界之间的"翻译官"

传统模式下,AI 只有一个聊天窗口,你能发的只有文字。有了 MCP 之后,AI 可以:

  1. 读取你的本地文件(日志、配置、数据库)

  2. 调用你写的 Python 脚本

  3. 连接外部 API(天气、股票、Jira 等)

MCP 的核心架构只有三个角色:

角色 职责 举例
Host(客户端) 发起请求,转发给 LLM Claude Desktop、Cursor、VS Code
MCP Server(服务端) 提供工具和能力 你写的文件读取服务器
LLM(大模型) 理解用户意图,调用工具 Claude 3.5 Sonnet

当你在 Cursor 里问"帮我看看昨天的错误日志",MCP 的工作流程如下:

复制代码
你 → Cursor(Cursor) → MCP Server(读取文件) → 返回日志内容 → Claude 分析 → 返回答案

全程对用户透明,就像 AI 天生就有这个能力。


二、环境准备

MCP 推荐使用 Python 生态的 mcp 库,安装非常简单:

bash 复制代码
# 创建专用虚拟环境(推荐)
python3 -m venv ~/mcp-tutorial-venv
source ~/mcp-tutorial-venv/bin/activate

# 安装 MCP SDK
pip install "mcp[cli]"

验证安装成功:

bash 复制代码
mcp --version

确保你的 MCP Host(比如 Claude Desktop)也支持 MCP。目前 Claude Desktop、Cursor、VS Code 原生支持 MCP Server 配置。


三、实操步骤:搭建你的第一个 MCP 文件读取服务器

我们写一个 MCP Server,让 AI 能读取指定目录下的所有 Markdown 文件。

步骤 1:创建服务器代码

新建文件 ~/mcp-tutorial/file_read_server.py

python 复制代码
from mcp.server.fastmcp import FastMCP
from pathlib import Path

# 初始化 MCP 服务器
mcp = FastMCP(
    "LocalFileReader",
    description="读取本地目录下的 Markdown 文件"
)

# 定义第一个工具:读取单个文件
@mcp.tool()
def read_markdown_file(filepath: str) -> str:
    """读取指定的 Markdown 文件内容"""
    try:
        path = Path(filepath)
        if not path.exists():
            return f"❌ 文件不存在: {filepath}"
        if not path.suffix == ".md":
            return f"❌ 只支持 .md 文件,当前后缀: {path.suffix}"
        return path.read_text(encoding="utf-8")
    except Exception as e:
        return f"❌ 读取失败: {e}"

# 定义第二个工具:列出目录下所有 md 文件
@mcp.tool()
def list_markdown_files(directory: str) -> str:
    """列出指定目录下所有 Markdown 文件"""
    try:
        dir_path = Path(directory)
        if not dir_path.exists():
            return f"❌ 目录不存在: {directory}"
        files = sorted(dir_path.glob("**/*.md"))
        if not files:
            return f"📭 目录 {directory} 下没有找到 .md 文件"
        result = f"📂 共找到 {len(files)} 个文件:\n\n"
        for f in files:
            result += f"  - {f.relative_to(dir_path)}\n"
        return result
    except Exception as e:
        return f"❌ 列表失败: {e}"

# 启动服务器
mcp.run()

代码解读:

  • FastMCP 是官方提供的高层封装,比底层 mcp.Server 简洁很多

  • @mcp.tool() 装饰器把一个普通 Python 函数注册为 AI 可调用的"工具"

  • 工具参数用类型注解描述,LLM 会自动理解每个参数含义

  • 返回值是字符串,会直接喂给 LLM 做后续分析

步骤 2:启动服务器

bash 复制代码
# 先激活虚拟环境
source ~/mcp-tutorial-venv/bin/activate

# 启动 MCP 服务器(使用 stdio 传输模式)
python ~/mcp-tutorial/file_read_server.py

stdio 模式是最常见的方式,MCP Host 会像子进程一样启动它,通过标准输入输出通信。

步骤 3:在 Claude Desktop 中配置 MCP Server

打开 Claude Desktop 的配置文件(macOS 路径 ~/Library/Application Support/Claude/claude_desktop_config.json,Windows 路径 %APPDATA%\Claude\claude_desktop_config.json),添加:

json 复制代码
{
  "mcpServers": {
    "localFileReader": {
      "command": "python",
      "args": ["/home/ubuntu/mcp-tutorial/file_read_server.py"],
      "env": {
        "PATH": "/home/ubuntu/mcp-tutorial-venv/bin:$PATH"
      }
    }
  }
}

保存后重启 Claude Desktop,你应该在聊天界面看到一个扳手图标 🔧,点击可以看到已连接的 MCP Server 工具列表。

步骤 4:在 Cursor 中配置(可选)

如果你用 Cursor,配置方式类似。打开 cursor/settings.json

json 复制代码
{
  "cursor.mcpServers": {
    "localFileReader": {
      "command": "python",
      "args": ["/home/ubuntu/mcp-tutorial/file_read_server.py"]
    }
  }
}

步骤 5:测试效果

重启 Host 后,直接问 AI:

帮我列出 /tmp 目录下所有的 .md 文件,然后读取其中一个看看内容。

AI 会自动调用你的 MCP 工具,流程完全自动化:

复制代码
用户提问
  ↓
Claude 识别需要"列文件"+"读文件"
  ↓
自动调用 list_markdown_files("/tmp")
  ↓
自动调用 read_markdown_file("/tmp/xxx.md")
  ↓
整合结果,返回答案

四、进阶技巧:让 MCP 工具更强大

技巧 1:添加资源(Resources)

除了工具(Tool),MCP 还支持资源(Resource)。资源更像"文件接口",适合直接暴露数据源:

python 复制代码
@mcp.resource("docs://README")
def get_readme():
    return Path("/home/ubuntu/project/README.md").read_text()

这样 AI 可以直接引用 docs://README 这个 URI 获取内容,不需要调用函数。

技巧 2:给工具加详细描述

LLM 选择工具时依赖工具的 prompt 描述,写得越详细调用越准确:

python 复制代码
@mcp.tool(description="当用户提到'日志'、'log'、'错误'时使用此工具,会搜索最近 24 小时的错误日志")
def search_error_logs(days: int = 1) -> str:
    # ... 实现

技巧 3:安全沙箱

MCP 服务器本质是一个运行在你本机的程序,调用时务必注意:

风险点 建议
文件路径遍历 限制允许的目录白名单
敏感信息泄露 在返回值中脱敏
外部网络调用 添加请求频率限制

示例:限制读取路径

python 复制代码
ALLOWED_DIRS = ["/home/ubuntu/projects", "/tmp"]

def safe_read(filepath: str):
    real_path = Path(filepath).resolve()
    if not any(str(d).startswith(str(allowed)) for allowed in ALLOWED_DIRS):
        return f"❌ 不允许访问的路径: {filepath}"
    return real_path.read_text()

五、总结

今天我们从零搭建了一个 MCP 文件读取服务器,核心要点回顾:

  1. MCP 是 AI 与外部工具的标准化桥梁,让 LLM 能读写文件、调用脚本、连接 API

  2. 使用 mcp[cli]FastMCP 可以在 30 行代码内创建一个 MCP Server

  3. 配置 Claude Desktop / Cursor 即可将工具接入日常使用

  4. 进阶玩法包括资源暴露、工具描述优化、安全沙箱

下一步建议: 试试把你的 Jira、GitHub Issues、或公司内网 API 通过 MCP 接进来。一旦工具链搭好,你会发现 AI 从"聊天机器人"进化成了真正的"工作助手"。

动手试试,有问题在评论区见 👇

相关推荐
ws2019071 小时前
从零件到核心:AUTO TECH China 2026广州汽车零部件展的产业新叙事
大数据·人工智能·科技·汽车
微硬创新1 小时前
汽车制造产线协同:耐达讯PROFINETDeviceNet网关在机器人通信中的应用
人工智能·物联网·网络协议·自动化·汽车·制造·信息与通信
廋到被风吹走1 小时前
【AI】【Claude】从 Prompt 到 Agent 的完整进阶地图
数据库·人工智能·prompt
数智化管理手记1 小时前
智能财务能替代人工核算吗?智能财务核心功能包含哪些?
大数据·网络·数据库·数据挖掘·精益工程
zandy10111 小时前
地址解析厂商推荐:分行业地址服务能力选型与技术分析
大数据·运维·人工智能
财迅通Ai1 小时前
“光纤传感+AI”双轮驱动加速成长,光格科技步入资产数字化运维快车道
运维·人工智能·科技·光格科技
AOwhisky1 小时前
Python 学习笔记(第六期)——函数:定义、参数传递与作用域
笔记·python·学习·云原生·运维开发·函数·参数传递
名不经传的养虾人1 小时前
从0到1:企业级AI项目迭代日记 Vol.67|能运行,和能商用
人工智能·agent·ai编程·企业ai·多agent协作
金智维科技官方1 小时前
DeepSeek接入企业系统:流程自动化新玩法
大数据·数据库·人工智能