文档教程知识库【免费下载链接】developer-roadmapInteractive roadmaps, guides and other educational content to help developers grow in their careers.项目地址https://gitcode.com/GitHub_Trending/de/developer-roadmap点击查看免费下载导读本文围绕 developer-roadmap 仓库中 AI Agents 学习路线图的核心主题 Creating MCP Servers系统讲解如何从零搭建一个基于 Model Context ProtocolMCP的服务器从语言与 Web 框架选型、REST 端点设计/messages、/state、/health到遵循 MCP Schema 的 JSON 消息交换、会话日志存储、Token 认证与数据过滤、消息大小与请求速率限制再到单元测试、监控与负载测试的完整交付链路。读完本文你将掌握构建一个可复用、可观测、可扩展的 MCP 服务器所需的全部工程要点并能在 AI Agent 项目中直接落地实践。一、MCP 服务器在 AI Agent 体系中的定位1.1 什么是 MCPModel Context ProtocolMCP是一个开放标准它定义了 AI 应用如何以一致的方式连接外部工具、数据源与服务。如仓库文档 model-context-protocol-mcp 所述与其为 Agent 需要的每一个工具都编写自定义集成MCP 提供了一个任何兼容客户端和服务器都能用来通信的通用接口从而无需每次都为新能力编写专属连接代码。这意味着一个遵循 MCP 的服务器可以被不同的 AI 应用复用而不用为每个应用做定制集成。1.2 MCP Server 的角色仓库文档 mcp-servers 指出一个 MCP 服务器使用 Model Context Protocol 向任何兼容客户端暴露一组工具、数据或能力。例如它可以提供文件系统、数据库或第三方 API 的访问能力。而本文要创建的 MCP 服务器有一个更具体的职责——存储并共享 AI Agent 的会话数据。它是 Agent 记忆管理的基础设施Agent 在多个会话、多个工具调用之间的上下文对话历史、状态、元数据都由它统一托管。结合仓库文档 mcp-server 的表述服务器承担着接收 Agent 请求 → 从数据源检索相关上下文 → 以标准化格式返回上下文的中枢职能帮助 Agent 借助外部知识与数据做出更明智的决策。1.3 与 MCP Host、MCP Client 的分工要理解 MCP 服务器先要看清它在完整链路中的位置MCP Host运行 Model Context Protocol 的宿主机或服务负责接收调用、加载 MCP manifest、校验请求并在用户、工具与语言模型之间传递数据见 mcp-hosts。Host 可以运行在笔记本电脑上用于测试也可以部署到云平台以获得规模扩展能力。MCP ClientAI Agent 中与语言模型 API 通信的部分负责收集消息、文件和工具信号按协议打包后发送给模型并在收到回复后解包、校验格式、跟踪 token 用量、过滤私有数据见 mcp-client。MCP Server本文的主角向客户端暴露能力与数据。三者协同Client 发起调用Host 做可信桥接与安全检查Server 提供数据与能力。构建一个 MCP 服务器本质上就是在为这条链路提供数据中枢。二、第一步技术选型——语言与 Web 框架原文档给出的第一步是选择一门语言和一个 Web 框架。这一决定直接决定了后续所有端点、存储与中间件实现的形态。选型时建议考虑以下因素考量维度说明生态成熟度框架是否提供开箱即用的 JSON 序列化、路由、中间件能力并发模型是否便于处理 Agent 的高频并发请求异步/协程或线程模型部署便利性是否能轻松打包为容器镜像、部署到目标平台团队熟悉度与团队既有技术栈的一致性降低维护成本常见组合作为通用实践参考不限定仓库实现Python FastAPI / Flask类型提示友好自带 OpenAPI 文档天然适合 JSON APINode.js Express / Fastify事件驱动、异步友好生态庞大Go Gin / chi编译型、资源占用低适合高吞吐场景。无论选择哪种组合框架都需要满足四项硬性能力定义 REST 路由/messages、/state、/health声明式 JSON 序列化与反序列化中间件机制用于认证、限流、日志、CORS优雅的错误处理与统一响应格式。三、第二步设计三个核心 REST 端点原文档明确要求创建三个 REST 端点/messages、/state、/health。它们是 MCP 服务器对外交换会话数据的门户。3.1/messages——会话消息读写端点负责 Agent 会话消息的写入与读取是数据进出最频繁的端点。写入POST接收来自 Agent 或 Client 的新消息用户消息、模型回复、工具结果等校验后持久化读取GET按会话 ID 拉取历史消息供 Agent 恢复上下文或进行多轮对话。3.2/state——会话状态端点负责会话级状态的读取与更新。状态是与某次会话绑定的键值型上下文例如当前任务进度、已收集的实体、决策中间量它区别于不可变的消息日志是可被覆写的工作区。GET /state按会话 ID 读取当前状态PUT /state整体更新或局部合并状态字段。3.3/health——健康检查端点用于探活与运维监控。负载均衡器、编排平台Kubernetes 的 liveness/readiness probe会周期性调用该端点。典型实现返回{ status: ok, version: 1.0.0, uptime_seconds: 86400, storage: connected }若存储层不可用应返回非 200 状态码便于平台自动重启或摘除实例。3.4 端点设计的共性原则所有端点只交换 JSONContent-Type: application/json路径参数、查询参数与请求体都应做输入校验响应统一封装状态码与错误信息便于 Client 侧解包判断。四、第三步遵循 MCP Schema 的 JSON 消息交换原文档强调每个端点交换的 JSON 都要遵循 MCP Schema。这是 MCP 服务器区别于普通 REST API 的核心——数据格式是协议化的任何兼容客户端都能解析。4.1 核心字段一次会话消息交换至少包含以下字段示意结构实际字段以你所采用的 MCP 规范版本为准{ session_id: sess_9f3c2a1b, role: user, content: 查询最近一周的销售数据, timestamp: 2026-09-29T00:49:38Z, metadata: { tool_calls: [], token_count: 128 } }字段说明session_id会话唯一标识用于将消息归组到同一会话role消息角色如user/assistant/system/toolcontent消息正文timestamp消息产生时间建议使用 ISO 8601 的 UTC 格式便于排序与跨时区解析metadata可选扩展字段如 token 用量、工具调用记录4.2 错误响应格式MCP 服务器应提供统一的错误结构方便 Client 侧解包后检查格式这一点与 mcp-client 文档中描述的 Client 职责呼应{ error: { code: INVALID_SESSION, message: Session ID not found or expired, details: {} } }建议维护一张错误码表如INVALID_JSON、UNAUTHORIZED、RATE_LIMITED、PAYLOAD_TOO_LARGE让 Agent 能据此采取重试、降级或终止策略。4.3 版本兼容协议会演进。建议在请求头或响应体中携带协议/API 版本号服务端对旧版本请求做兼容处理或明确拒绝避免悄悄破坏客户端契约。五、第四步会话日志存储——数据库与内存存储的取舍原文档要求使用数据库或内存存储以会话 ID、角色、时间戳记录会话日志。这三元组是会话日志的最低信息模型。5.1 存储方案选型方案适用场景优缺点内存存储如 Map / 字典 过期策略原型验证、单机测试、低持久性要求读写快、零依赖重启丢数据、无法横向扩展关系型数据库如 PostgreSQL生产环境、需要事务与复杂查询强一致、支持索引与 SQL 分析需要运维键值/文档型数据库如 Redis、MongoDB高吞吐、会话型数据水平扩展容易、天然适配 JSON 文档弱事务5.2 表结构设计关系型数据库示意CREATE TABLE session_messages ( id BIGSERIAL PRIMARY KEY, session_id VARCHAR(64) NOT NULL, role VARCHAR(16) NOT NULL, -- user / assistant / system / tool content TEXT NOT NULL, timestamp TIMESTAMPTZ NOT NULL DEFAULT now(), metadata JSONB ); CREATE INDEX idx_messages_session_ts ON session_messages (session_id, timestamp);session_id timestamp复合索引是检索会话历史的必经路径务必建立role加枚举约束或校验防止脏数据破坏 Agent 的对话理解内存存储实现时应配套TTL过期时间与 LRU 淘汰策略防止会话无界增长拖垮进程。5.3 数据访问层要点所有读写收敛到仓储Repository层便于切换存储后端消息写入采用先校验、后落库的顺序校验失败直接返回协议错误为长会话提供分页读取按timestamp游标分页避免一次返回超大载荷。六、第五步安全——Token 认证与数据过滤原文档要求添加基于 Token 的认证并添加过滤器让 Agent 只能取回自己需要的数据。这是 MCP 服务器上生产前的底线安全措施。6.1 Token 认证推荐使用 Bearer Token 方案中间件校验流程从Authorization: Bearer token提取凭证校验 token 的签名、有效期与吊销状态将解析出的身份agent/租户/会话范围注入请求上下文校验失败返回401 UNAUTHORIZED不泄露任何业务数据。POST /messages HTTP/1.1 Host: mcp.example.internal Authorization: Bearer mcp_live_xxxxxxxxxxxx Content-Type: application/json建议 token 至少携带以下声明sub调用方身份标识Agent ID / 租户 IDscope允许访问的端点或会话范围exp过期时间定期轮换。6.2 数据过滤最小权限认证只解决你是谁过滤解决你能看到什么。实现层面会话级过滤Agent 只能读写自己的session_id关联数据防止越权访问其他会话字段级过滤按角色/权限裁剪返回字段例如隐藏内部metadata或敏感 token 计数查询级过滤对GET /messages的查询参数如role、时间范围做白名单校验防止恶意构造宽泛查询拖垮存储。过滤逻辑应放在数据访问层之前统一执行避免各端点各自实现导致遗漏。七、第六步容量保护——消息大小与请求速率限制原文档要求设置消息大小限制和请求速率限制避免过载。这是保证服务器稳定性的两道闸门。7.1 消息大小限制请求体上限在 Web 框架中间件层统一设置如 1 MB拒绝413 Payload Too Large单条消息上限content字段单独限长如 64 KB防止单条超长消息打爆存储与模型上下文会话消息数上限按会话设置消息总量阈值超过后触发压缩/归档策略。// 请求体超限时的统一响应 { error: { code: PAYLOAD_TOO_LARGE, message: Message content exceeds 64 KB limit, details: { max_bytes: 65536 } } }7.2 请求速率限制实现上可选用令牌桶、滑动窗口或固定窗口算法按每 Agent/每会话/每 IP维度分别限流维度建议限额示意目的单 Agent 全局 QPS如 100 req/s防止单个调用方拖垮服务单会话写入 QPS如 20 req/s防止会话内风暴写入未认证请求极低如 1 req/s减缓探测与滥用超限时返回429 Too Many Requests并在响应头携带Retry-After让 Agent 可以按提示退避重试。八、第七步质量保障——单元测试、监控与负载测试原文档的收尾要求编写单元测试添加监控并运行负载测试以确保稳定性。三者分别回答对不对、好不好、扛不扛得住。8.1 单元测试覆盖范围应包含端点行为/messages、/state、/health的合法/非法请求路径Schema 校验缺字段、类型错误、超限内容均返回协议错误认证与过滤无效 token 被拒、越权会话被过滤存储层写入、读取、分页、过期清理的逻辑正确性错误处理存储不可用时的降级响应与/health探活联动。建议将存储抽象为接口测试时注入内存实现使测试快速且无外部依赖。仓库文档 building-an-mcp-server 强调服务器要格式化 Agent 能理解的响应单元测试正是验证这一契约是否被破坏的最直接手段。8.2 监控生产环境必须能回答三类问题对应三类可观测性指标Metrics请求量、延迟分位数p50/p95/p99、错误率、限流触发次数、存储吞吐日志Logs结构化日志JSON 输出携带session_id、role、status、latency便于按会话回溯问题对敏感字段脱敏后再落日志追踪Tracing贯穿 Client → Host → Server 的请求链路帮助定位瓶颈在协议层、存储层还是模型调用层。/health端点本身应反映存储健康状态让监控系统能第一时间感知依赖故障。8.3 负载测试上线前用负载测试工具如 k6、wrk 等通用工具验证基准测试单实例在目标延迟如 p95 200ms下的最大吞吐峰值模拟模拟 Agent 批量调用大量并发写入同一会话时的表现限流验证确认超限请求被正确拒绝而非拖垮服务恢复验证存储抖动时错误率上升、恢复后自动回落。根据结果确定单实例容量与水平扩展多实例 共享存储的触发阈值并把限流阈值与容量基准对齐。九、在 AI Agents 学习路线图中的位置与延伸阅读本主题位于仓库roadmaps/ai-agents目录是 AI Agents 学习路线图中Agent 记忆与上下文管理环节的关键实践节点。理解本主题前建议先掌握以下关联主题均为本仓库内容可沿 roadmaps/ai-agents/content 目录继续深入Model Context Protocol (MCP) 基础先理解协议本身为何存在、解决什么问题MCP Servers服务器的通用定义与能力边界MCP Hosts理解服务器被谁托管、如何接入MCP Client理解消息如何被客户端打包与解包从而反推服务器端的格式契约What are Tools?理解 Agent 如何借助外部能力完成任务MCP 服务器正是承载这些能力的容器之一。若想从客户端视角对照学习可延伸阅读 Building an MCP Server 与 Building an MCP Client二者互为镜像一个回答如何暴露数据另一个回答如何消费数据。结语创建一个 MCP 服务器并非简单的 CRUD 封装而是一条完整的工程链路协议理解 → 技术选型 → 端点设计 → Schema 约束 → 存储建模 → 安全过滤 → 容量保护 → 质量保障。本文从原文档的七步骨架出发逐层展开了每一步的落地细节与设计考量。当你完成一个同时具备/messages、/state、/health三端点带 Token 认证、数据过滤、限流与监控的 MCP 服务器时它就已经具备了成为 Agent 记忆中枢的基本资格——接下来要做的就是把更多的数据源与工具按同样的协议暴露出来让 Agent 的触角延伸到真实世界。赞分享文档教程知识库【免费下载链接】developer-roadmapInteractive roadmaps, guides and other educational content to help developers grow in their careers.项目地址https://gitcode.com/GitHub_Trending/de/developer-roadmap点击查看免费下载相关推荐Solon-AI MCP服务器构建标准化AI工具生态Solon AI MCP服务器构建标准化AI工具生态 引言AI工具生态的标准化挑战 在当今AI应用蓬勃发展的时代开发者面临着一个核心痛点如何让不同的AI人工智能大模型AI AgentAgent 框架RAGMCP 服务后端RuoYi-AI MCP协议集成构建标准化AI服务的创新实践RuoYi AI MCP协议集成构建标准化AI服务的创新实践 在当今AI技术快速迭代的背景下如何让企业级应用便捷接入智能能力成为开发者面临的关键挑战。RuoAI 应用大模型后端多智能体RAG工作流自动化MCP ClientsFastMCP 资源系统全解析用 Resource 与 ResourceManager 为 MCP 服务器构建数据共享层FastMCP 资源系统全解析用 Resource 与 ResourceManager 为 MCP 服务器构建数据共享层 导读 本文深入讲解 MCP Pyth人工智能AI 应用AI Agent上一篇3步掌握Diablo Edit2暗黑破坏神2存档修改的完整指南下一篇5分钟掌握raylib零依赖跨平台游戏开发的终极入门指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考