MCP 是什么?一文带你从原理到实战,轻松上手使用与开发

📅 2026/7/31 20:42:04
MCP 是什么?一文带你从原理到实战,轻松上手使用与开发
1. 什么是 MCPMCPModel Context Protocol模型上下文协议是 Anthropic 于 2024 年底推出的一种开放协议旨在标准化 AI 模型与外部数据源、工具之间的通信方式。你可以把它理解为 AI 世界的「USB-C 接口」——通过统一的协议让大语言模型能够方便地连接数据库、文件系统、API 服务等各种外部资源。在 MCP 出现之前每个 AI 应用接入外部工具都需要定制开发接口五花八门维护成本极高。MCP 的出现改变了这一局面它定义了客户端、服务器和工具之间的标准交互方式让开发者只需实现一次协议就能让模型访问任意兼容 MCP 的资源。2. MCP 的核心架构MCP 采用客户端-服务器架构包含三个核心角色MCP Host宿主运行 AI 模型的应用如 Claude Desktop、Cursor、VS Code 等负责发起请求并展示结果。MCP Client客户端在 Host 内部与 MCP Server 建立连接的组件负责协议通信。MCP Server服务器暴露工具、资源和提示词的独立服务可以是本地进程也可以是远程服务。一次典型的调用流程如下Host 中的 AI 模型收到用户指令判断需要调用外部工具。Client 通过 MCP 协议向 Server 发送工具调用请求。Server 执行实际操作如查询数据库、调用 API并返回结构化结果。Client 将结果回传给模型模型据此生成最终回复。3. MCP 的三大核心原语MCP 协议定义了三种核心原语理解它们是开发 MCP Server 的基础3.1 Tools工具工具是模型可以调用的函数例如「查询天气」「发送邮件」「执行 SQL」。每个工具都有名称、描述和参数定义JSON Schema模型根据描述决定何时调用。3.2 Resources资源资源是暴露给模型读取的数据例如文件内容、数据库记录、API 响应。资源通过 URI 定位支持只读访问适合让模型获取上下文信息。3.3 Prompts提示词提示词是可复用的交互模板定义了用户与模型之间的标准对话模式。例如「代码审查」「周报生成」等固定流程可以封装为提示词供用户一键触发。4. 环境准备在开始实战之前请确保你的开发环境满足以下要求Node.js 18 或更高版本推荐 20Python 3.10 或更高版本用于 Python SDK 示例一个支持 MCP 的客户端如 Claude Desktop、Cursor 或 VS Code安装 MCP 官方 SDK# 安装 TypeScript SDK npm install modelcontextprotocol/sdk 安装 Python SDK pip install mcp5. 实战一用 TypeScript 开发一个天气查询 MCP Server下面我们通过一个完整的示例演示如何用 TypeScript 开发一个天气查询 MCP Server。这个 Server 暴露一个get_weather工具接收城市名参数返回模拟的天气数据。5.1 初始化项目mkdir mcp-weather-server cd mcp-weather-server npm init -y npm install modelcontextprotocol/sdk zod5.2 编写 Server 代码创建server.ts文件import { McpServer } from modelcontextprotocol/sdk/server/mcp.js; import { StdioServerTransport } from modelcontextprotocol/sdk/server/stdio.js; import { z } from zod; // 创建 MCP Server 实例 const server new McpServer({ name: weather-server, version: 1.0.0, }); // 注册一个工具查询天气 server.tool( get_weather, 根据城市名称查询当前天气, { city: z.string().describe(城市名称如 北京、上海) }, async ({ city }) { // 这里可以替换为真实的天气 API 调用 const weatherData { city, temperature: 25, condition: 晴, humidity: 40, }; return { content: [ { type: text, text: JSON.stringify(weatherData, null, 2), }, ], }; } ); // 启动 Server使用标准输入输出传输 const transport new StdioServerTransport(); await server.connect(transport); console.error(Weather MCP Server 已启动);5.3 编译并运行npx tsc server.ts --outDir dist --module NodeNext --target ES2022 node dist/server.js此时 Server 会在标准输入输出上监听 MCP 请求。你可以通过 MCP Inspector 或支持 MCP 的客户端连接测试。6. 实战二用 Python 开发一个数据库查询 MCP Server接下来我们用 Python 开发一个数据库查询 Server演示如何通过 MCP 让模型安全地执行 SQL 查询。6.1 安装依赖pip install mcp sqlite36.2 编写 Server 代码创建db_server.py文件import sqlite3 from mcp.server.fastmcp import FastMCP 创建 MCP Server mcp FastMCP(db-server) 初始化数据库 conn sqlite3.connect(:memory:) cursor conn.cursor() cursor.execute(CREATE TABLE users (id INTEGER, name TEXT, age INTEGER)) cursor.executemany( INSERT INTO users VALUES (?, ?, ?), [(1, Alice, 30), (2, Bob, 25), (3, Charlie, 35)], ) conn.commit() mcp.tool() def query_users(min_age: int 0) - str: 查询用户列表可按最小年龄过滤 cursor.execute(SELECT * FROM users WHERE age ?, (min_age,)) rows cursor.fetchall() return \n.join(str(row) for row in rows) mcp.tool() def get_user(user_id: int) - str: 根据 ID 查询单个用户 cursor.execute(SELECT * FROM users WHERE id ?, (user_id,)) row cursor.fetchone() return str(row) if row else 用户不存在 if name main: mcp.run()6.3 运行 Serverpython db_server.py这个 Server 暴露了两个工具query_users和get_user模型可以根据用户问题自动选择合适的工具并传入参数。7. 在客户端中配置和使用 MCP Server开发完 Server 后我们需要在客户端中配置才能使用。以 Claude Desktop 为例编辑配置文件claude_desktop_config.json{ mcpServers: { weather: { command: node, args: [/path/to/dist/server.js] }, database: { command: python, args: [/path/to/db_server.py] } } }重启客户端后模型就能自动发现并调用这些工具。例如你可以直接问「北京今天天气怎么样」模型会调用get_weather工具并返回结果。8. MCP 的传输方式与安全考虑MCP 支持两种主要传输方式stdio标准输入输出适用于本地进程客户端直接启动 Server 子进程通过标准输入输出通信配置简单。HTTP/SSEServer-Sent Events适用于远程服务Server 部署在服务器上客户端通过 HTTP 请求访问支持跨网络调用。在使用 MCP 时需要注意以下安全事项权限控制Server 应实现最小权限原则只暴露必要的工具和数据。输入校验对模型传入的参数进行严格校验防止注入攻击。审计日志记录所有工具调用便于追踪和排查问题。敏感数据保护避免在工具返回结果中泄露密钥、密码等敏感信息。9. MCP 的生态与未来展望MCP 自发布以来生态发展迅速。目前已有大量官方和社区维护的 Server覆盖数据库、文件系统、浏览器自动化、开发工具、云服务等众多领域。主流 AI 客户端如 Claude Desktop、Cursor、VS Code、JetBrains 等都已原生支持 MCP。MCP 的出现让 AI 应用从「对话机器人」向「智能体Agent」演进迈出了关键一步。未来随着协议不断完善和生态持续壮大MCP 有望成为 AI 与外部世界交互的事实标准让开发者能够以更低的成本构建强大的 AI 应用。10. 总结本文从概念、架构、核心原语到实战开发系统介绍了 MCP 协议。我们通过 TypeScript 和 Python 两个完整示例演示了如何开发 MCP Server 并在客户端中配置使用。MCP 的核心价值在于标准化和复用一次开发处处可用。无论你是 AI 应用开发者还是技术爱好者掌握 MCP 都将为你的 AI 开发之路打开新的可能。建议你动手实践本文的示例并尝试接入真实的 API 或数据库体验 MCP 带来的开发效率提升。