MCP进阶:构建你的第一个MCP服务器
引言
在上一篇文章中,我们了解了 MCP 协议的基本概念,学会了如何配置现成的 MCP 服务器。但如果现有的服务器无法满足你的需求呢?比如你想让 AI 访问公司内部的 API、连接特定的数据库,或者实现一个独特的工作流——这时就需要自己动手开发 MCP 服务器了。
好消息是,借助 Python SDK 提供的 FastMCP 框架,创建一个功能完整的 MCP 服务器只需要几十行代码。本文将带你从零开始,系统性地掌握 MCP 服务器开发的完整流程:环境搭建、工具定义、资源暴露、提示词模板,以及测试和发布。
一、开发环境搭建
1.1 为什么选择 Python
MCP 官方提供了两种 SDK:Python SDK 和 TypeScript SDK。对于大多数开发者来说,Python 是更好的入门选择:
| 特性 | Python SDK | TypeScript SDK |
|---|---|---|
| 学习曲线 | 平缓 | 需要了解 Node.js 生态 |
| FastMCP | 原生支持,装饰器 API | 需要使用 Zod 进行验证 |
| 代码量 | 更少 | 相对较多 |
| 社区示例 | 丰富 | 丰富 |
本系列文章将以 Python SDK 为主进行讲解。
1.2 安装 uv 包管理器
uv 是 Astral 公司开发的现代 Python 包管理器,比传统的 pip 快 10-100 倍。MCP 官方推荐使用 uv 来管理项目依赖。
macOS / Linux:
curl -LsSf https://astral.sh/uv/install.sh | sh
Windows:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
验证安装:
uv --version
1.3 创建项目结构
使用 uv 快速初始化项目:
# 创建项目目录
uv init my-mcp-server
cd my-mcp-server
# 添加 MCP 依赖(包含 CLI 工具)
uv add "mcp[cli]"
完成后,项目结构如下:
my-mcp-server/
├── .python-version
├── pyproject.toml
├── README.md
└── hello.py
将 hello.py 重命名为 server.py,我们将在其中编写 MCP 服务器代码。
二、FastMCP 快速入门
2.1 什么是 FastMCP
FastMCP 是 Python SDK 提供的高级 API,它借鉴了 FastAPI 的设计理念,通过装饰器让 MCP 服务器的开发变得极其简洁。
FastMCP 的核心优势:
- 装饰器驱动:用
@mcp.tool()、@mcp.resource()、@mcp.prompt()一键注册能力 - 自动类型推断:基于 Python 类型注解自动生成 JSON Schema
- 零配置启动:内置多种传输协议,一行代码即可运行
- 开发体验友好:支持热重载、自动文档生成
2.2 最简服务器
创建一个最简单的 MCP 服务器只需要 5 行代码:
from mcp.server.fastmcp import FastMCP
# 初始化服务器
mcp = FastMCP("my-server")
# 运行服务器
if __name__ == "__main__":
mcp.run()
这个服务器虽然没有任何功能,但已经是一个合法的 MCP 服务器了。让我们运行它:
uv run server.py
默认情况下,服务器使用 stdio 传输模式,等待从标准输入接收 MCP 消息。
2.3 FastMCP vs 低级 Server API
Python SDK 提供了两套 API:
| 特性 | FastMCP | 低级 Server API |
|---|
扫码添加企业微信,找大熊掌门开通会员

添加后说明想开通的会员类型即可