MCP for Beginners 课程指南:从零构建跨语言 Model Context Protocol 应用

发布时间:2026/10/3 2:15:32
MCP for Beginners 课程指南:从零构建跨语言 Model Context Protocol 应用 教程文档人工智能【免费下载链接】mcp-for-beginnersThis open-source curriculum introduces the fundamentals of Model Context Protocol (MCP) through real-world, cross-language examples in .NET, Java, TypeScript, JavaScript, Rust and Python. Designed for developers, it focuses on practical techniques for building modular, scalable, and secure AI workflows from session setup to service orchestration.项目地址https://gitcode.com/GitHub_Trending/mc/mcp-for-beginners点击查看免费下载Model Context ProtocolMCP是一个开放、标准化的接口协议用于让大语言模型LLM以统一方式与外部工具、API 和数据源交互。本指南以开源课程 mcp-for-beginners 为骨架系统梳理 MCP 的核心概念、2026-07-28 规范要点、学习路径、首个服务器与客户端的跨语言实现以及安全最佳实践。读完本文你将掌握 MCP 的 Host/Client/Server 架构、tools/resources/prompts 三类原语、stdio 与 Streamable HTTP 两种传输方式并能用 C#、Java、TypeScript、JavaScript、Python 或 Rust 独立搭建、测试和部署一个 MCP 服务器。MCP 是什么AI 应用之间的通用翻译器MCP 解决了生成式 AI 应用集成碎片化的问题。在没有 MCP 之前让模型对接工具往往需要为每一对工具-模型编写定制代码不同厂商的 API 各不相同任何更新都可能导致集成失效工具越多扩展性越差。MCP 提供了一套统一的规则就像 USB 接口让任意设备都能连接电脑一样让任意 AI 模型都能以标准化方式连接任意工具与服务。标准化带来的收益非常明确收益说明互操作性InteroperabilityLLM 可与不同厂商的工具无缝协作一致性Consistency跨平台、跨工具行为统一可复用性Reusability一次构建的工具可用于多个项目与系统加速开发Accelerated Development通过标准化、即插即用的接口降低开发时间需要说明的是MCP 虽以开放标准自居但并无计划通过 IEEE、IETF、W3C、ISO 等标准组织对其进行标准化。MCP 架构Host、Client 与 Server 三角色MCP 遵循客户端-服务器模型一个 Host 应用可以同时连接多个 ServerMCP Hosts运行 AI 模型的应用如 Claude Desktop、Visual Studio Code、Claude Code、IDE 或自研 AI 工具。Host 负责编排模型、管理客户端连接、控制用户界面、执行安全策略与用户授权。MCP ClientsHost 内为每个 MCP Server 创建的协议连接组件负责发送 JSON-RPC 2.0 请求、发现服务能力、执行工具调用、处理通知与响应。MCP Servers轻量级程序通过标准化协议暴露特定能力工具、资源、提示词可本地运行也可远程部署。完整架构交互可见 00-Introduction/README.md 中的 mermaid 图用户请求经 Client 进入 HostHost 调用 AI 模型模型发出工具调用请求由 Host而非模型直接通过 MCP 协议与各个 Server 通信——例如 Web 搜索工具、计算器工具、数据库访问工具、文件系统工具——最终把结果格式化为模型可理解的响应并回传给用户。Host 内部还包含 Tool Registry工具注册表、Authentication鉴权、Request Handler请求处理器、Response Formatter响应格式化器等关键组件。服务器三大核心原语Server PrimitivesMCP Server 可以暴露以下三种原语的任意组合详见 01-CoreConcepts/README.mdResources资源供 AI 应用消费的上下文数据如知识库、文件、数据库、外部 API 响应或实时动态内容。资源用 URI 标识通过resources/list发现、resources/read读取例如file://documents/project-spec.md、database://production/users/schema、api://weather/current。Prompts提示词可复用的模板用于结构化模型交互与工作流支持变量替换通过prompts/list发现、prompts/get获取。例如Generate a {{task_type}} for {{product}} targeting {{audience}} with the following requirements: {{requirements}}。Tools工具模型可调用的可执行函数是 MCP 生态中的动词。每个工具拥有独立名称、描述和 JSON Schema 参数校验通过tools/list发现、tools/call执行并支持readOnlyHint、destructiveHint等行为注解。TypeScript 中的典型定义如下server.tool( search_products, { query: z.string().describe(Search query for products), category: z.string().optional().describe(Product category filter), max_results: z.number().default(10).describe(Maximum results to return) }, async (params) { // Execute search and return structured results return await productService.search(params); } );客户端侧原语与信息流客户端还可以暴露 Elicitation请求用户输入/确认、Sampling请求客户端 LLM 生成补全等能力。需要特别注意在 2026-07-28 规范中Sampling 与 Roots 已标记为 Deprecated——新实现应直接集成 LLM 提供商 API或通过工具参数、资源 URI、服务器配置传递目录/文件。Logging 同样被弃用stdio 传输建议改用 stderr、结构化可观测性建议改用 OpenTelemetry。一次完整的 MCP 信息流为Host 发起连接stdio/WebSocket 等传输→ 能力协商 → 用户请求 → 资源/工具使用 → Server 执行并返回结构化结果 → 模型整合生成响应 → Host 呈现给用户。两层协议架构数据层Data Layer基于 JSON-RPC 2.0 定义消息结构、语义与交互模式包含生命周期管理、服务端/客户端原语、实时通知采用日期版本号YYYY-MM-DD进行协议版本协商。传输层Transport LayerSTDIO 用于本地子进程通信零网络开销适合本机 MCP ServerStreamable HTTP 用于远程服务器HTTP POST 发送消息可选 SSE 服务端流式推送支持 Bearer Token、API Key 等标准 HTTP 认证推荐使用 OAuth 进行基于令牌的认证。传输层抽象使同一套 JSON-RPC 2.0 消息格式可以无缝切换本地与远程服务器。2026-07-28 规范无状态协议与扩展框架当前协议修订版本为MCP Specification 2026-07-28日期版本号格式 YYYY-MM-DD。这是 MCP 发布以来最大的一次修订课程在 01-CoreConcepts/mcp-2026-07-28.md 中给出了完整解读核心变化包括1. 协议层无状态化。移除了initialize/initialized握手SEP-2575与Mcp-Session-Id协议级会话SEP-2567。协议版本、客户端信息、客户端能力移入每个请求的_meta字段新增server/discover方法用于客户端按需获取服务器能力。每个请求自包含任何服务器实例都可以处理水平扩展不再需要粘性路由与共享会话存储。请求示例POST /mcp HTTP/1.1 MCP-Protocol-Version: 2026-07-28 Mcp-Method: tools/call Mcp-Name: search Content-Type: application/json {jsonrpc:2.0,id:1,method:tools/call, params:{name:search,arguments:{q:otters}, _meta:{io.modelcontextprotocol/protocolVersion:2026-07-28, io.modelcontextprotocol/clientInfo:{name:my-app,version:1.0}, io.modelcontextprotocol/clientCapabilities:{}}}}无状态协议不意味着服务器不能有状态推荐模式与 HTTP API 一致——由一次工具调用铸造显式句柄如basket_id模型在后续调用中以普通参数传回该句柄。2. 可路由、可缓存、可追踪。Streamable HTTP 必须携带Mcp-Method与Mcp-Name头SEP-2243负载均衡器/网关可不解析 JSON 体直接按操作路由tools/list与资源读取结果携带ttlMs/cacheScope缓存元数据SEP-2549_meta中规范了 W3C Trace Contexttraceparent、tracestate、baggage以支持 OpenTelemetry 分布式追踪SEP-414。3. 扩展成为一等公民。扩展通过反向 DNS ID 标识在能力映射中协商独立于核心规范版本发布。随本版本发布的两个官方扩展是 MCP Apps服务器渲染的沙箱 iframe 交互式 HTML 界面与 Taskstasks/get、tasks/update、tasks/cancel驱动的持久化执行包装tasks/list已移除。4. 鉴权加固与弃用清单。客户端必须按 RFC 9207 校验授权响应中的iss参数Dynamic Client Registration 被弃用新实现应使用 Client ID Metadata Documents。被弃用的核心特性及替代方案特性推荐替代Roots工具参数、资源 URI 或服务器配置Sampling直接集成 LLM 提供商 APILoggingstdio 用 stderr结构化可观测性用 OpenTelemetryDynamic Client RegistrationClient ID Metadata Documents5. 工具 Schema 升级。工具inputSchema/outputSchema升级为完整 JSON Schema 2020-12支持oneOf/anyOf/allOf组合、条件与$ref/$defs引用缺失资源的错误码由 MCP 自定义的-32002改为 JSON-RPC 标准的-32602Invalid Params。课程中部分实操示例仍显式锁定2025-11-25版本这是为了等待 SDK 跟进新 API应视为遗留兼容性指导。课程学习路径总览本课程的完整结构见根目录 README.md 的课程表按阶段划分基础阶段模块 0-2模块 0MCP 入门——00-Introduction/README.md模块 1核心概念——01-CoreConcepts/README.md含 1.1 节 2026-07-28 变更解读模块 2安全——02-Security/README.md含 CIMD/DCR 授权对照示例 02-Security/samples/cimd-dcr-auth/README.md构建阶段模块 3第一个服务器、客户端、LLM 客户端、VS Code 集成、stdio 服务器、HTTP Streaming、Microsoft Foundry Toolkit、测试、部署、高级服务器用法、简单鉴权与 RBAC、MCP Hosts 配置Claude Desktop、Cursor、Cline 等、MCP Inspector 调试、Sampling 兼容课、MCP Apps共 15 个实操指南入口见 03-GettingStarted/README.md。进阶阶段模块 4-5分页、Azure 集成、多模态、OAuth2、Root Contexts、路由、Scaling、安全加固、Web Search、实时流式、Entra ID 认证、Foundry 集成、上下文工程、自定义传输、协议特性进度通知、取消、资源模板、对抗式多智能体推理等见 04-PracticalImplementation/README.md 与 05-AdvancedTopics/README.md。精通阶段模块 6-12社区贡献、早期采纳经验、最佳实践、案例研究、Foundry Toolkit 动手实验室以及一个完整的 13 实验室 PostgreSQL 集成动手路径 11-MCPServerHandsOnLabs/README.md 和 Copilot App 中的 MCP 工具实践 12-tooling/README.md。构建你的第一个 MCP 服务器以 TypeScript 为例一个最小但完整的 MCP 服务器需要 SDK 与 Zod 依赖、服务器实例、工具、资源和提示词以及 stdio 传输连接完整代码见 03-GettingStarted/01-first-server/README.md// index.ts import { McpServer, ResourceTemplate } from modelcontextprotocol/sdk/server/mcp.js; import { StdioServerTransport } from modelcontextprotocol/sdk/server/stdio.js; import { z } from zod; // Create an MCP server const server new McpServer({ name: Calculator MCP Server, version: 1.0.0 }); // Add an addition tool server.tool( add, { a: z.number(), b: z.number() }, async ({ a, b }) ({ content: [{ type: text, text: String(a b) }] }) ); // Add a dynamic greeting resource server.resource( greeting, new ResourceTemplate(greeting://{name}, { list: undefined }), async (uri, { name }) ({ contents: [{ uri: uri.href, text: Hello, ${name}! }] }) ); // Start receiving messages on stdin and sending messages on stdout const transport new StdioServerTransport(); server.connect(transport);项目初始化与依赖安装mkdir calculator-server cd calculator-server npm init -y npm install typescript -g npm install modelcontextprotocol/sdk zod npm install -D types/node typescriptpackage.json的 scripts 中加入build: tsc与start: npm run build node ./build/index.jsSDK 版本参考仓库样例如modelcontextprotocol/sdk^1.16.0、zod^3.25.76。构建运行npm run build。其他语言的对应实现同一套逻辑在各语言中的实现方式代码均可从 03-GettingStarted/samples 目录获取PythonFastMCPpip install mcp[cli]后用mcp.tool()装饰函数即可注册工具。仓库样例 03-GettingStarted/samples/python/mcp_calculator_server.py 更展示了面向 2026-07-28 的底层实现通过server/discover处理器返回supportedVersions同时声明2026-07-28与2025-11-25双版本、capabilities与instructions并使用_DefaultVersionStream为无版本握手连接注入_meta中的协议版本与客户端能力用_SupportedVersionsStream在协议版本不支持时返回-32022错误并附带支持列表。.NETdotnet add package ModelContextProtocol --prerelease后在Program.cs中通过Host.CreateApplicationBuilder注册AddMcpServer().WithStdioServerTransport().WithToolsFromAssembly()工具用[McpServerToolType]标注类型、[McpServerTool]标注方法日志统一输出到 stderr。JavaSpring Boot通过 Spring Initializr 创建项目在pom.xml引入spring-ai-starter-mcp-server-webflux用Tool(description ...)注解服务方法即可暴露工具。Rustrmcpcargo add rmcp --features server,transport-io用#[tool_router]与#[tool_handler]实现服务器#[tool(description ...)]注册工具通过stdio()传输启动。用 MCP Inspector 测试MCP Inspector 是可视化的调试测试工具可自动发现服务器能力、交互式测试工具执行、查看元数据与 Schema。TypeScript 服务器直接运行npx modelcontextprotocol/inspector node build/index.jsPython 服务器则推荐npx modelcontextprotocol/inspector mcp run server.pymcp dev server.py会自动启动 Inspector 并配置代理会话令牌。Java 服务器运行后在 Inspector 界面选择 SSE 传输、填入http://localhost:8080/sse并连接即可在 Tools 列表中调用add并看到结果。Rust 服务器还可使用 CLI 模式npx modelcontextprotocol/inspector cargo run --cli --method tools/call --tool-name add --tool-arg a1 b2。编写客户端客户端用于以编程方式发现并调用服务器功能。TypeScript 的最小客户端完整示例见 03-GettingStarted/02-client/README.mdimport { Client } from modelcontextprotocol/sdk/client/index.js; import { StdioClientTransport } from modelcontextprotocol/sdk/client/stdio.js; const transport new StdioClientTransport({ command: node, args: [server.js] }); const client new Client({ name: example-client, version: 1.0.0 }); await client.connect(transport); // List invoke server features const prompts await client.listPrompts(); const resources await client.listResources(); const tools await client.listTools(); const result await client.callTool({ name: example-tool, arguments: { arg1: value } });核心思路是实例化传输stdio 需要指定启动服务器的 command/args→ 实例化客户端 → 列出并调用 prompts/resources/tools。Python 侧对应StdioServerParametersstdio_clientClientSession并通过session.list_tools()、session.call_tool(add, arguments{a: 1, b: 7})交互.NET 使用StdioClientTransport与McpClient.CreateAsync用CallToolAsync调用工具Java 使用WebFluxSseClientTransport连接http://localhost:8080用client.callTool(new CallToolRequest(...))调用Rust 客户端在Cargo.toml加入rmcpfeatures 含client、transport-child-process通过TokioChildProcess启动兄弟项目服务器并调用call_tool。仓库的 solution 目录提供了每种语言的完整可运行工程。MCP 安全最佳实践安全是本课程的第二大主题02-Security/README.md遵循微软 Secure by Design 原则。MCP 面临传统安全问题安全编码、最小权限、供应链安全之外的新威胁MCP 特有威胁间接提示注入Indirect Prompt Injection攻击者把恶意指令嵌入文档、网页、邮件或数据源被 AI 处理时触发非预期动作可能导致数据泄露与隐私破坏。工具投毒Tool Poisoning篡改工具描述、参数定义等元数据Rug Pull式动态修改已批准的工具使其执行恶意动作。远程 MCP Server 风险更高因为工具定义可在用户批准后被更新。会话劫持会话 ID 被盗导致冒充与未授权调用。要求使用加密安全的非确定性会话 ID、绑定用户身份如user_id:session_id格式、严格生命周期管理且绝不能依赖会话做认证。Confused Deputy 问题服务器作为客户端与第三方服务之间的认证代理时静态客户端 ID 可能被滥用。要求动态注册客户端必须显式获取用户同意、遵循 OAuth 2.1 最佳实践并使用 PKCE。Token 透传Token PassthroughMCP 服务器不得接受任何非明确签发给本服务器的令牌并转发给下游 API。必须校验令牌 audience 声明、使用短生命周期令牌与安全轮换。OWASP MCP Top 10包括 Token 管理不当MCP01、权限蔓延导致提权MCP02、工具投毒MCP03、软件供应链攻击MCP04、命令注入MCP05、意图流颠覆MCP06、认证与授权不足MCP07、审计与遥测缺失MCP08、影子 MCP 服务器MCP09、上下文注入与过度共享MCP10。仓库提供了配套的 azure-content-safety-implementation.md、mcp-security-best-practices.md、mcp-security-controls.md 等专门文档。核心安全控制细粒度权限系统让用户控制可访问的服务器/工具/资源、基于 OAuth/API Key 的安全认证与令牌管理、按 Schema 严格输入校验、完整审计日志远程连接使用 HTTPS 与 MCP 授权模型本地 stdio 服务器依赖进程隔离与可信配置。官方 SDK 与示例项目课程覆盖六种语言的官方 SDK见 03-GettingStarted/README.md 的 SDK 列表C# SDK、Java SDK与 Spring AI 协作维护、TypeScript SDK、Python SDKFastMCP、Kotlin SDK、Swift SDK、Rust SDK、Go SDK。注意 SDK 对 2026-07-28 的支持按语言独立推进运行示例前应核对包版本与 SDK 发布说明。仓库自带两档示例基础计算器示例C#、Java、JavaScript、Python、TypeScript、Rust见 03-GettingStarted/samples与进阶实现C#、Java with Spring、JavaScript、Python、TypeScript见 04-PracticalImplementation/samples。以 TypeScript 计算器为例add/subtract/multiply/divide四个工具均通过server.tool注册divide在除数为零时返回isError: true的错误结果代码见 03-GettingStarted/samples/typescript/README.mdPython 样例则在divide中抛出ValueError处理零除。如何高效使用本课程克隆与稀疏检出仓库包含 50 语言翻译体积较大。若只想本地学习推荐稀疏检出只拉取课程内容而排除translations与translated_imagesgit clone --filterblob:none --sparse https://github.com/microsoft/mcp-for-beginners.git cd mcp-for-beginners git sparse-checkout set --no-cone /* !translations !translated_images学习指南study_guide.md 提供了可视化课程地图、各目录详解、示例项目使用指引以及针对不同水平的学习路径建议。变更日志changelog.md 跟踪课程内容的新增、结构调整、功能改进与文档更新。前置知识至少掌握 C#、Java、JavaScript、Python 或 TypeScript 之一理解客户端-服务器模型与 API熟悉 REST 与 HTTP 概念AI/ML 背景可选。配套实操每个章节都包含概念讲解、多语言可运行代码、练习与进阶资源仓库还提供 Java/.NET/JavaScript/TypeScript/Python 计算器示例作为补充练习03-GettingStarted/README.md 的 Practicing 小节。总结MCP 通过统一的标准消除了 AI 模型与外部工具/数据之间的定制集成成本其客户端-服务器架构支持可扩展、模块化的 AI 应用。2026-07-28 规范把协议推向无状态化确立了扩展框架并明确了 Roots、Sampling、Logging 的弃用路线新项目应遵循这些替代模式。本课程以六种语言的真实代码贯穿从会话搭建到服务编排的完整旅程无论你选择从模块 0 开始系统学习还是直接克隆示例项目动手实践都能以最小摩擦完成从理解 MCP 到独立构建、测试、安全加固与部署 MCP 服务器的进阶。赞分享教程文档人工智能【免费下载链接】mcp-for-beginnersThis open-source curriculum introduces the fundamentals of Model Context Protocol (MCP) through real-world, cross-language examples in .NET, Java, TypeScript, JavaScript, Rust and Python. Designed for developers, it focuses on practical techniques for building modular, scalable, and secure AI workflows from session setup to service orchestration.项目地址https://gitcode.com/GitHub_Trending/mc/mcp-for-beginners点击查看免费下载相关推荐Model Context Protocol开发者指南从零开始构建MCP客户端Model Context Protocol开发者指南从零开始构建MCP客户端 Model Context ProtocolMCP是一个开源协议它让AI人工智能AI Agent工具调用从零构建你的第一个 MCP 服务器mcp-for-beginners 跨语言实战指南从零构建你的第一个 MCP 服务器mcp for beginners 跨语言实战指南 本指南带你完整走一遍 Model Context ProtocolMC教程文档人工智能palera1n 越狱终极指南从 checkm8 漏洞到 DFU 实操一步步解锁你的旧设备palera1n 越狱终极指南从 checkm8 漏洞到 DFU 实操一步步解锁你的旧设备 抽屉里的 iPhone 7 系统停在 iOS 15一半 AppCLI固件上一篇终极lboot配置教程TOML文件编写与多系统引导设置下一篇utdnsmasq与传统dnsmasq对比性能与安全性提升实测创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考