云计算百科
云计算领域专业知识百科平台

5分钟搭建MCP工具服务器:用Model Context Protocol让AI连接一切

前言

你是否遇到过这些问题:

  • 想让AI帮你查数据库,但它只能看代码,看不到实际数据
  • 想让AI直接操作GitHub,但它只能生成命令,无法真正执行
  • 不同AI工具各有各的插件系统,换个工具就要重新配置

Model Context Protocol(MCP) 正是为解决这些问题而生的。

MCP是Anthropic推出的开放标准协议,让AI应用能够以统一的方式连接各种外部工具和数据源。本文将手把手教你搭建自己的MCP工具服务器,让AI真正成为你的「全能助手」。

一、MCP协议核心原理

1.1 为什么需要MCP?

传统的AI工具集成是这样的:

AI应用 → 专用插件A → 专用插件B → 专用插件C
(每个插件独立开发,无法复用)

MCP改变了这个架构:

AI应用 ←→ MCP协议 ←→ MCP服务器A
←→ MCP服务器B
←→ MCP服务器C
(所有服务器使用同一协议,即插即用)

MCP的核心优势:

  • 标准化:一套协议,连接所有工具
  • 可发现性:MCP启动时自动暴露所有可用工具及参数
  • 双向通信:AI不仅能调用工具,还能读取资源、获取提示

1.2 MCP的三种能力

MCP服务器向AI暴露三种能力:

MCP服务器
├── Tools(工具) → AI可以调用的函数
├── Resources(资源) → AI可以读取的数据
└── Prompts(提示) → 预定义的提示模板

二、快速搭建MCP服务器

2.1 环境准备

# Node.js 环境(推荐 v18+)
node –version

# 创建项目
mkdir my-mcp-server && cd my-mcp-server
npm init -y

# 安装 MCP SDK
npm install @modelcontextprotocol/sdk

2.2 创建第一个MCP服务器

创建一个天气查询服务器:

// server.js
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";

// 创建服务器实例
const server = new McpServer({
name: "weather-server",
version: "1.0.0"
});

// 注册天气查询工具
server.tool(
"get_weather",
"查询指定城市的天气信息",
{
city: { type: "string", description: "城市名称,如北京、上海" }
},
async ({ city }) => {
// 模拟API调用
const weatherData = {
city,
temperature: Math.round(Math.random() * 15 + 15),
condition: ["晴", "多云", "小雨"][Math.floor(Math.random() * 3)],
humidity: Math.round(Math.random() * 40 + 40)
};

return {
content: [
{ type: "text", text: JSON.stringify(weatherData, null, 2) }
]
};
}
);

// 启动服务器
const transport = new StdioServerTransport();
server.run(transport);

2.3 在Claude Code中集成

# 添加MCP服务器
claude mcp add weather — npx tsx server.js

# 验证是否添加成功
claude mcp list

现在你就可以这样和Claude对话:

用户:帮我查一下上海的天气

Claude:[自动调用get_weather工具]
返回:上海今天晴,气温23°C,湿度65%

三、实战:搭建文件管理MCP服务器

这是一个更实用的例子,让AI能够读取、搜索、编辑项目文件:

// filesystem-server.js
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { readdir, readFile, writeFile, glob } from "fs/promises";
import { join } from "path";

const server = new McpServer({
name: "filesystem-server",
version: "1.0.0"
});

// 列出目录文件
server.tool(
"list_files",
"列出目录下的所有文件",
{
directory: { type: "string", description: "目录路径" }
},
async ({ directory }) => {
const files = await readdir(directory);
return {
content: [{ type: "text", text: JSON.stringify(files) }]
};
}
);

// 搜索文件内容
server.tool(
"search_files",
"在文件中搜索关键词",
{
pattern: { type: "string", description: "搜索模式,如 *.js" },
content: { type: "string", description: "要搜索的内容" }
},
async ({ pattern, content }) => {
const results = [];
// 简化示例,实际需要遍历文件
results.push({
file: "example.js",
matches: [`第15行: ${content}`]
});
return {
content: [{ type: "text", text: JSON.stringify(results, null, 2) }]
};
}
);

const transport = new StdioServerTransport();
server.run(transport);

四、常用MCP服务器推荐

4.1 官方维护的MCP服务器

服务器功能安装命令
filesystem 本地文件读写 npx -y @modelcontextprotocol/server-filesystem /path
github GitHub API操作 npx -y @modelcontextprotocol/server-github
slack Slack消息发送 npx -y @modelcontextprotocol/server-slack
postgres PostgreSQL数据库 npx -y @modelcontextprotocol/server-postgres
memory 持久化记忆 npx -y @modelcontextprotocol/server-memory

4.2 社区热门MCP服务器

服务器功能适用场景
puppeteer 浏览器自动化 网页截图、数据抓取
sentry 错误追踪查询 Bug排查
figma 设计稿读取 前端开发
notion 笔记读写 个人知识管理

五、MCP协议工作原理图解

5.1 架构图

在这里插入图片描述

┌─────────────────────────────────────────────────────────┐
│ AI 应用 │
│ (Claude Code / Cursor) │
└─────────────────────┬───────────────────────────────────┘
│ MCP协议
┌─────────────────────┴───────────────────────────────────┐
│ MCP Host │
│ (负责管理多个MCP服务器连接) │
└──────┬──────────────┬──────────────┬─────────────────────┘
│ │ │
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ Server │ │ Server │ │ Server │
│ (文件系统) │ │ (GitHub) │ │ (数据库) │
└──────────┘ └──────────┘ └──────────┘

5.2 请求流程

1. 用户提问: "帮我看看这个项目的README"


2. AI分析需要调用readFile工具


3. MCP协议发送请求到filesystem服务器


4. 服务器读取文件,返回内容


5. AI整合结果,返回给用户

六、避坑指南

❌ 常见错误

1. 路径权限不足

# 错误:目录没有读取权限
claude mcp add fs — npx -y @modelcontextprotocol/server-filesystem /root

# 正确:使用有权限的目录
claude mcp add fs — npx -y @modelcontextprotocol/server-filesystem ~/projects

2. Node版本过低

# MCP SDK需要Node 18+
node –version # 确保 >= 18.0.0

3. Windows路径格式错误

# Windows需要使用双反斜杠或正斜杠
claude mcp add fs — npx -y @modelcontextprotocol/server-filesystem C:/Users/Projects

✅ 最佳实践

  • 限制访问范围:始终限制MCP服务器的访问目录,防止越权
  • 敏感信息处理:使用环境变量传递API Key,不要硬编码
  • 错误处理:为每个工具添加try-catch和错误提示
  • 类型定义:使用TypeScript获得更好的类型检查
  • 七、总结

    MCP协议让AI工具集成变得前所未有的简单:

    • 标准化:一套协议连接所有工具
    • 可复用:写一次MCP服务器,所有MCP客户端都能用
    • 生态丰富:官方+社区已有数百个现成服务器

    下一步建议:

  • 尝试官方filesystem服务器,熟悉基本用法
  • 基于本文示例,搭建自己的业务工具服务器
  • 探索社区MCP服务器,找到适合你工作流的工具

  • 相关资源:

    • MCP官方文档:https://modelcontextprotocol.io
    • Claude Code MCP命令:https://docs.anthropic.com/en/docs/claude-code/mcp

    如果本文对你有帮助,欢迎点赞、收藏!有问题欢迎在评论区留言!

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 5分钟搭建MCP工具服务器:用Model Context Protocol让AI连接一切
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!