MCP Server 一键搭建:让你的 AI 工具直接读写本地文件

你遇见过这种场景吗?

你在用 Claude Desktop 写代码,想把本地某个配置文件的内容贴进去,结果 Claude 说"我无法访问你的本地文件"。

或者你在 Cursor 里调试,需要实时查看数据库里的数据,但 AI 助手根本不知道你的表结构。

2026年,MCP(Model Context Protocol)协议解决了这个问题。 它是 Anthropic 推出的开放标准,让 AI 工具能通过标准化接口访问你的本地资源——文件、数据库、API,不需要每次重新开发集成。

什么是 MCP?

MCP 由两部分组成:

  • MCP Host:AI 应用本身(Claude Desktop、Cursor、Windsurf 等)
  • MCP Server:提供具体能力的后台服务(文件系统访问、数据库查询、API 调用等)

Host 和 Server 之间通过 JSON-RPC 2.0 通信,传输工具(tools)、资源(resources)和提示词(prompts)。

一个 MCP Server 可以给你的多个 AI 工具共享能力。 配置一次,全平台可用。

准备工作

你需要准备:

  • 一台有 Node.js 18+ 或 Python 3.10+ 的 Linux VPS
  • 基本的 npm 或 pip 使用经验
  • 一个 AI 工具(Claude Desktop、Cursor 或 Windsurf)

先检查环境:

node --version
# 需要 v18.0.0 或更高

npm --version
# 任意现代版本即可

如果没装 Node.js:

# Ubuntu/Debian
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs

# 验证
node --version
npm --version

第一步:用 Docker 快速部署 MCP Server

最快的方式是使用官方的 MCP Docker 镜像,它已经打包好了最常见的工具:

# 创建配置目录
mkdir -p ~/mcp-server
cd ~/mcp-server

创建 docker-compose.yml:

version: "3.8"

services:
  mcp-server:
    image: ghcr.io/anthropics/mcp-server:latest
    container_name: mcp-server
    ports:
      - "3000:3000"
    environment:
      - NODE_ENV=production
      - MCP_SERVER_HOST=0.0.0.0
      - MCP_SERVER_PORT=3000
    volumes:
      - ./data:/app/data
    restart: unless-stopped
    command: >
      mcp-server --transport stdio

启动服务:

docker compose up -d

# 检查容器状态
docker ps | grep mcp-server

看到 Up 状态就说明容器已启动。

第二步:用原生方式部署(推荐)

如果你需要更灵活的控制,可以用官方 SDK 从零搭建:

2.1 初始化项目

mkdir -p ~/my-mcp-server
cd ~/my-mcp-server

# 用 npm 初始化
npm init -y

# 安装 MCP SDK
npm install @modelcontextprotocol/sdk

2.2 创建 MCP Server 代码

新建 server.js:

import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import {
  ListToolsRequestSchema,
  CallToolRequestSchema,
} from "@modelcontextprotocol/sdk/types.js";
import * as fs from "fs/promises";
import * as path from "path";

const server = new Server(
  {
    name: "my-local-server",
    version: "1.0.0",
  },
  {
    capabilities: {
      tools: {},
    },
  }
);

// 定义可用的工具
server.setRequestHandler(ListToolsRequestSchema, async () => {
  return {
    tools: [
      {
        name: "read_file",
        description: "读取本地文件的完整内容",
        inputSchema: {
          type: "object",
          properties: {
            path: {
              type: "string",
              description: "文件的绝对路径",
            },
          },
          required: ["path"],
        },
      },
      {
        name: "list_directory",
        description: "列出目录下的文件和子目录",
        inputSchema: {
          type: "object",
          properties: {
            path: {
              type: "string",
              description: "目录的绝对路径",
            },
          },
          required: ["path"],
        },
      },
    ],
  };
});

// 处理工具调用
server.setRequestHandler(CallToolRequestSchema, async (request) => {
  const { name, arguments: args } = request.params;

  if (name === "read_file") {
    const content = await fs.readFile(args.path, "utf-8");
    return {
      content: [{ type: "text", text: content }],
    };
  }

  if (name === "list_directory") {
    const entries = await fs.readdir(args.path, { withFileTypes: true });
    const result = entries.map((entry) => ({
      name: entry.name,
      type: entry.isDirectory() ? "directory" : "file",
    }));
    return {
      content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
    };
  }

  throw new Error(`未知工具: ${name}`);
});

// 启动服务
async function main() {
  const transport = new StdioServerTransport();
  await server.connect(transport);
  console.error("MCP Server 已启动,等待连接...");
}

main().catch((error) => {
  console.error("启动失败:", error);
  process.exit(1);
});

2.3 启动 MCP Server

node server.js

你会看到输出:MCP Server 已启动,等待连接...

这说明 MCP Server 已经在监听标准输入输出,随时可以接收 AI 工具的请求。

第三步:配置 AI 工具连接 MCP Server

3.1 Claude Desktop 配置

编辑 ~/.config/claude-desktop/config.json(如果没有就创建):

{
  "mcpServers": {
    "my-local-server": {
      "command": "node",
      "args": ["/home/your-username/my-mcp-server/server.js"],
      "env": {}
    }
  }
}

重启 Claude Desktop,工具列表里就会出现 read_file 和 list_directory。

3.2 Cursor 配置

编辑项目根目录的 .cursor/mcp.json:

{
  "mcpServers": {
    "my-local-server": {
      "command": "node",
      "args": ["/home/your-username/my-mcp-server/server.js"],
      "env": {}
    }
  }
}

保存后重启 Cursor,配置就会生效。

3.3 Windsurf 配置

Windsurf 的 MCP 配置方式与 Cursor 相同,使用 .cursor/mcp.json 或项目级配置。

验证部署是否成功

4.1 本地测试 MCP Server

在另一个终端运行:

# 用 echo 模拟 JSON-RPC 请求
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | \
  node /home/your-username/my-mcp-server/server.js

应该返回:

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "tools": [
      {
        "name": "read_file",
        "description": "读取本地文件的完整内容",
        "inputSchema": {
          "type": "object",
          "properties": {
            "path": { "type": "string" }
          },
          "required": ["path"]
        }
      },
      {
        "name": "list_directory",
        "description": "列出目录下的文件和子目录",
        "inputSchema": {
          "type": "object",
          "properties": {
            "path": { "type": "string" }
          },
          "required": ["path"]
        }
      }
    ]
  }
}

4.2 测试工具调用

echo '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"list_directory","arguments":{"path":"/home/your-username"}}}' | \
  node /home/your-username/my-mcp-server/server.js

4.3 在 AI 工具中验证

打开 Claude Desktop,输入:

列出我 home 目录下的文件

如果 AI 助手能正确返回文件列表,说明 MCP Server 工作正常。

常见问题

问题1:AI 工具提示 “MCP Server 连接失败”

可能原因:

  • MCP Server 路径错误
  • Node.js 版本不满足要求(需要 18+)
  • 权限问题:确保 AI 工具能读取 MCP Server 目录

解决方法:

# 检查 Node.js 版本
node --version

# 检查文件权限
ls -la ~/my-mcp-server/

# 测试 MCP Server 是否能独立运行
cd ~/my-mcp-server && node server.js

问题2:工具调用返回 “permission denied”

MCP Server 运行时的用户权限和 AI 工具不一致。

解决方法:

# 检查运行用户
whoami

# 确保文件可访问
chmod 644 ~/my-mcp-server/server.js

问题3:Docker 部署后容器反复重启

检查环境变量和挂载路径:

docker logs mcp-server
docker inspect mcp-server | grep -A 5 "Mounts"

问题4:多工具重复配置

每个 AI 工具都需要单独配置 MCP Server 路径。建议在项目根目录统一存放 MCP Server 代码,然后用相对路径配置:

{
  "mcpServers": {
    "my-server": {
      "command": "node",
      "args": ["./server.js"]
    }
  }
}

总结

MCP 协议是 2026 年 AI 工具生态的基础设施。通过部署一个 MCP Server,你可以让 Claude Desktop、Cursor、Windsurf 等工具共享同一套本地资源访问能力。

核心步骤就三步:

  1. 部署 MCP Server(Docker 或原生方式)
  2. 在 AI 工具中配置连接
  3. 验证工具和响应

配置一次,所有工具都能用。下次升级 AI 工具时,不用再重新开发集成。

你的 VPS 上跑了哪些 MCP Server?评论区聊聊。

这篇文章对你有帮助吗?