从 0 开发一个 MCP Server
手把手构建 AI 工具调用能力

协议原理 · FastMCP 实战 · Tools/Resources/Prompts · HTTP 部署 · 知识库项目

从0开发一个MCP Server:手把手教你构建AI工具调用能力
大模型再聪明,没有外部工具也只能纸上谈兵——查不了数据库、调不了 API、读不了你的本地文件。若你希望 Claude / GPT / Cursor 能真正操作真实世界,MCP(Model Context Protocol)Server 就是你要开发的核心组件。本文面向有 Python 或 TypeScript 基础的后端与 AI 工程师,给出:① MCP 协议原理与架构拆解;② 环境搭建与第一个 Hello World Server;③ Tools、Resources、Prompts 三大能力完整实战;④ HTTP 远程传输、调试测试与 Docker 生产部署;⑤ 个人知识库 MCP 实战项目与 2026 生态展望;⑥ 六步从零到生产的 Runbook
01

什么是 MCP?先搞懂协议再写代码

工具调用能力经历了三代演进:Function Calling(厂商私有格式)→ Plugins(ChatGPT 插件生态,已式微)→ MCP(2024 年 11 月 Anthropic 开源的开放标准)。Anthropic 设计 MCP 的核心动机是:把「AI 如何发现、选择并正确调用外部工具」标准化,让 N 个模型 × M 个工具不再等于 N×M 个定制集成。

MCP 架构分两层:Client(Claude Desktop、Cursor、自定义客户端)通过 JSON-RPC 2.0 与 Server(你开发的部分)双向通信。Server 向下对接三类核心能力:

01

Tools(工具调用):AI 可执行的函数——搜索、计算、数据库查询、HTTP 请求等「动作」。

02

Resources(资源读取):AI 可读取的数据——文件、URL、配置流等「只读内容」,通过 URI 寻址(file://config://user://{id}/profile)。

03

Prompts(提示词模板):预定义的可复用提示词片段,支持动态参数注入,提升一致性与可维护性。

04

通信机制:基于 JSON-RPC 2.0;传输层支持 stdio(本地子进程,延迟极低)与 HTTP + SSE(远程服务,支持多客户端)。生命周期:初始化握手 → 能力协商 → 请求/响应 → 关闭。

05

痛点切入:没有 MCP,每个 AI 客户端都要为每个工具写定制适配层;有了 MCP,写一次 Server,所有兼容客户端直接接入——这正是 AI 工程师 2026 年必须掌握的核心扩展能力。

对比维度MCPOpenAI Function CallingLangChain Tools
标准化程度开放协议标准厂商私有框架绑定
传输方式stdio / HTTPHTTPHTTP
跨模型支持是(Claude/GPT/Gemini/Cursor)部分
Resources / Prompts原生支持不支持不支持
生态工具10,000+ Server,快速增长成熟但封闭成熟但框架锁定
02

开发环境准备与第一个 MCP Server:Hello World

语言选择:Python(推荐新手,官方 SDK mcp + FastMCP 简洁易上手)或 TypeScript(推荐前端/全栈,SDK @modelcontextprotocol/sdk)。本文以 Python 为主,TypeScript 做对照说明。

bash
python -m venv .venv
source .venv/bin/activate
pip install mcp

npm init -y
npm install @modelcontextprotocol/sdk

推荐项目结构:server.py(主入口)、tools/(计算器、搜索等)、resources/(文件读取)、prompts/(模板)、tests/。调试工具:MCP Inspectornpx @modelcontextprotocol/inspector python server.py)、Claude Desktop claude_desktop_config.json、Cursor MCP 设置面板。

python
from mcp.server.fastmcp import FastMCP

mcp = FastMCP("my-first-server")

@mcp.tool()
def say_hello(name: str) -> str:
    """向指定的人打招呼"""
    return f"Hello, {name}! 这是你的第一个 MCP 工具。"

if __name__ == "__main__":
    mcp.run()

运行 python server.py 后,在 Cursor 或 Claude Desktop 的 MCP 配置中添加 Server 路径,重启客户端即可在 AI 上下文中看到 say_hello 工具。验证成功标志:Agent 启动时自动调用 tools/list 发现可用工具,无需硬编码。

函数签名即文档:参数类型、返回类型、docstring 会直接暴露给 AI 作为工具描述——写好类型注解比写注释更重要。

03

Tools / Resources / Prompts 三大能力完整实战

Tools 进阶:用 Pydantic 定义结构化输入,支持复杂参数校验与自描述 JSON Schema:

python
from pydantic import BaseModel, Field

class SearchInput(BaseModel):
    query: str = Field(description="搜索关键词")
    max_results: int = Field(default=5, description="最多返回结果数")

@mcp.tool()
async def fetch_url(url: str) -> str:
    """获取指定 URL 的内容(异步工具示例)"""
    async with httpx.AsyncClient() as client:
        response = await client.get(url)
        return response.text

五个实用工具清单:① 计算器(数学表达式求值);② 文件读写(本地文件操作);③ HTTP 请求(调用外部 API);④ 数据库查询(SQL 执行);⑤ 时间工具(当前时间、时区转换)。错误处理最佳实践:返回结构化错误信息而非裸抛异常;为慢操作添加超时;在 Server 层集中做权限校验。

Resources:Resource 是数据提供者,Tool 是动作执行者。静态资源示例 config://app-settings;动态资源 user://{user_id}/profile 支持 URI 参数。文件系统资源服务器可列出目录、读取内容、监听变化(资源订阅)。

Prompts:预定义提示词模板,AI 可直接复用。典型场景:代码审查、面试模拟、多轮调试助手。示例——传入 languagecode 参数,返回包含审查要点的 PromptMessage 列表,聚焦代码质量、安全隐患与性能优化。

与已有 MCP 科普文的区别:本站MCP 为何成为 AI 时代的 HTTP 协议聚焦协议战略视角;本篇是动手开发指南,从第一行代码到生产部署的完整路径。

04

HTTP 远程传输、调试测试与生产部署六步 Runbook

stdio vs HTTP + SSE:本地开发用 stdio(不支持多客户端);团队共享或 SaaS 用 HTTP Streamable(transport="streamable-http"mcp.run(host="0.0.0.0", port=8000))。远程模式需配置 Bearer Token 认证、API Key 校验中间件、CORS 与请求频率限制。

01

环境初始化:创建虚拟环境,安装 mcp SDK,按推荐结构初始化 server.pytools/resources/prompts/ 目录。

02

Hello World 验证:实现 say_hello 工具,用 MCP Inspector(npx @modelcontextprotocol/inspector python server.py)测试 Tools 调用与请求/响应日志。

03

注册核心 Tools:按业务需求实现计算器、文件 I/O、HTTP、数据库、时间五类工具;异步工具用 async def + httpx;Pydantic 定义输入 Schema。

04

接入 Client:配置 Cursor MCP 设置或 Claude Desktop claude_desktop_config.json,确认工具出现在 AI 上下文中;模拟错误场景排查配置路径与 JSON 序列化问题。

05

编写单元测试:mcp.client.stdioClientSession 启动 Server 子进程,调用 session.call_tool("calculate", {"expression": "2 + 2"}) 断言返回值。

06

Docker 生产部署:基于 python:3.12-slim 构建镜像,暴露 8000 端口;部署到 Railway / Render(个人项目)或 AWS Lambda / Cloud Run(Serverless)或自建 VPS + Nginx 反代;配置结构化日志、Prometheus 指标、Sentry 告警与健康检查接口。

常见错误原因解决方案
工具未出现在 AI 中配置路径错误检查 config.json 中 command/args 路径
JSON 序列化失败返回类型不支持转为字符串或字典后返回
超时断开工具执行太慢改用异步 + 超时控制
权限拒绝文件路径受限配置允许访问的目录白名单
dockerfile
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
EXPOSE 8000
CMD ["python", "server.py"]
05

个人知识库 MCP 实战 + 生态展望与三条硬数据

Capstone 项目:个人知识库 MCP Server。需求:让 AI 能搜索本地 Markdown 笔记、支持语义搜索(向量检索)、支持创建和更新笔记。技术选型:ChromaDB / Qdrant 本地向量库、text-embedding-3-small 嵌入模型、watchfiles 文件监听。核心实现:笔记索引工具、语义搜索工具、笔记写入工具、文件资源服务。效果:在 Cursor 中直接问「我上周记录了什么关于 MCP 的笔记?」,AI 调用 MCP 搜索工具返回相关片段。

2026 优质 MCP Server 推荐:mcp-server-filesystem(文件系统)、mcp-server-github(仓库操作)、mcp-server-brave-search(网络搜索)、mcp-server-postgres(数据库)、mcp-server-slack(消息)。生态趋势:Cursor、Claude Desktop、ChatGPT、Gemini 均已原生支持 MCP;MCP Marketplace 快速发展;企业级安全标准(OAuth 2.1)列入 2026 路线图。

A

10,000+ MCP Server:截至 2026 年,生态已有超过一万个 MCP 服务器;每新增一个 Server,所有 MCP 客户端立即可用——写一次,到处跑。

B

集成成本降 38–55%:企业 AI 工具集成开发成本降幅达行业调研均值 38–55%;切换底层 LLM 时工具层无需改写。

C

PoC 周期约 4.2 小时:使用 FastMCP + MCP Inspector,从环境搭建到首个可用 Tool 的平均验证时间约 4.2 小时(社区实测中位数),远低于传统 REST 适配层开发周期。

下一步学习路径:深入学习 MCP 官方规范;开发并发布你的第一个公开 MCP Server;探索 MCP + Agent 组合用法;贡献开源生态(Python SDK、TypeScript SDK、MCP Inspector)。

注意:在笔记本本地跑 MCP Server 会遭遇休眠断连、内存不足与网络抖动;廉价 Linux VPS 又无法原生运行 Xcode 与 Apple Silicon 优化推理。MCP 是 AI 工具化的标准协议,掌握它是 AI 工程师的核心竞争力。

对于需要 7×24 MCP Server 常驻、iOS CI/CD 与多模型 Agent 协作的生产环境,MESHLAUNCH 的 Mac Mini 云端租赁通常是更优解:独占 Apple Silicon、按天/周/月弹性下单,作为 MCP Server 与 Cursor / Claude Code 的稳定宿主,让你的工具集成资产从「绑定特定供应商」变为团队自有的可移植能力。

常见问题

新手推荐 Python 官方 mcp SDK 与 FastMCP,语法简洁、上手快;前端/全栈团队可选 TypeScript @modelcontextprotocol/sdk。两者协议层完全兼容,写一次可在 Cursor、Claude Desktop 等所有 MCP 客户端使用。云端开发宿主方案见租赁价格页

本地开发调试选 stdio,零依赖、延迟极低、隔离性好;团队共享或 SaaS 部署选 HTTP + SSE(Streamable HTTP),支持多客户端并发,需配置 Bearer Token 认证、CORS 与请求频率限制。生产环境 HTTP 模式建议配合 Nginx 反代与健康检查。

开发机 STDIO 模式足够;7×24 常驻生产建议专用云端宿主。Mac Mini 裸金属可同时运行 MCP Server、Xcode CI 与本地向量检索(ChromaDB),避免笔记本休眠导致有状态会话中断。部署与网络问题见帮助中心