ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

从多语言 SDK 到 Azure 云端部署:MCP 实战实现完整指南

从多语言 SDK 到 Azure 云端部署: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点击查看免费下载本文是 mcp-for-beginners 开源课程中「Practical Implementation」实战章节的深入指南。它以 Model Context ProtocolMCP官方 SDK 为核心带你走完一条从搭建第一个多语言 MCP ServerResources / Prompts / Tools 三大特性、实现游标分页、到通过 Azure API Management 加固 API再到azd up一键部署云端并用 MCP Inspector 验证的完整链路。读完本文你将掌握 C#、Java with Spring、TypeScript、JavaScript、Python 五种语言的 MCP 实现套路并能独立设计、测试和上线一个生产可用的远程 MCP 服务。实战在 MCP 学习中的位置理解 MCP 的理论与架构固然重要但真正的价值体现在把这些概念用于构建、测试和部署解决实际问题的应用时。这一章正是概念知识与动手开发之间的桥梁无论你是开发智能助手、把 AI 集成进业务流程还是构建数据处理的自定义工具MCP 都提供了一套语言无关的灵活基座配合各主流语言的官方 SDK可以快速完成原型、迭代与跨平台规模化。章节目标Learning Objectives聚焦在五个可量化的能力上使用各种编程语言的官方 SDK 实现 MCP 解决方案系统化地调试与测试 MCP Server创建并使用服务器特性Resources、Prompts、Tools为复杂任务设计高效的 MCP 工作流从性能与可靠性两个维度优化 MCP 实现。官方 SDK 全景与版本兼容提醒MCP 协议迭代较快各语言 SDK 对协议版本例如本仓库多处代码与文档指向的2026-07-28版本的支持是独立推进的。因此动手前务必做两件事查看所用 SDK 的 release notes并核对示例代码中锁定的包版本再假设协议兼容性。官方维护的 SDK 覆盖以下语言C# SDKModelContextProtocolNuGet 包Java with Spring SDK——注意其依赖 Project Reactor 提供响应式编程支持官方讨论见 issue 246TypeScript SDKPython SDKKotlin SDKGo SDK。语言无关的协议设计加上官方 SDK是 MCP 能被 .NET、JVM、Node 和 Python 生态同时采用的根本原因。仓库多语言示例总览本仓库在 04-PracticalImplementation/samples 目录下按语言组织了可直接运行的示例每个示例都演示该语言生态下的关键 MCP 概念与实现模式语言位置示例主题C#samples/csharp.NET Aspire Streamable HTTP 传输 Calculator 工具Java with Springsamples/java/containerappAzure Content Safety 双层安全校验 LangChain4j 调用 MCP 计算器TypeScriptsamples/typescript基于McpServer类的 completion 工具与 search 资源JavaScriptsamples/javascript与 TS 等价的轻量实现Node.jsPythonsamples/pythonFastMCP 服务端 完整客户端tools/resources/prompts此外分页与大结果集指南 单独成文讲解 tools、resources、prompts 的游标分页后面有专节展开。逐语言深入五种实现套路PythonFastMCP 的最小而全示例Python 示例server.py使用高层 APIFastMCP是理解 MCP 三大特性的最佳入门。它用一个文件同时演示了工具、资源和提示词模板from mcp.server.fastmcp import FastMCP mcp FastMCP(Python MCP Demo Server) # 1. 工具Tool模型可执行的函数 mcp.tool() def add(a: int, b: int) - int: Add two numbers together return a b # 2. 资源ResourceURI 寻址的数据与上下文 mcp.resource(greeting://{name}) def get_greeting(name: str) - str: import urllib.parse return fHello, {urllib.parse.unquote(name)}! # 3. 提示词模板Prompt预定义交互模式 mcp.prompt() def review_code(code: str) - str: return fPlease review this code...:\n\n{code}\n if __name__ __main__: mcp.run() # 默认 stdio 传输其中completion工具还对模型参数做白名单校验AVAILABLE_MODELS [gpt-5.1]并对temperature0.01.0、max_tokens给出了带类型与默认值的签名——这就是 MCP 工具 Schema 的 Pythonic 表达方式。服务端文件头的注释同时给出了三种启动/接入方式直接python server.py、用mcp dev server.py交给 MCP Inspector、或mcp install server.py安装进 Claude Desktop。配套的 client.py 展示了对端完整调用链用StdioServerParameters拉起子进程、stdio_client建立管道、ClientSession完成initialize()握手然后依次调用call_tool(add, ...)、call_tool(completion, ...)、read_resource(models://)、read_resource(greeting://{name})与get_prompt(review_code, ...)并对TextContent/TextResourceContents做了结构化提取。这套「启动子进程 → 会话握手 → 调用工具 → 读取资源 → 获取提示词」的流程是所有语言客户端共通的协议骨架。TypeScript类型安全与 Schema 校验TypeScript 示例src/index.ts把服务器封装成ExtendedMcpServer类构造函数内注册工具与资源。它展示了 TypeScript 生态的两个关键实践用 zod 定义工具输入 Schemamodel: z.string(), prompt: z.string(), options: z.object({...}).optional()将运行时校验与类型推导合二为一用ResourceTemplate定义参数化资源new ResourceTemplate(test://{query}, { list: undefined })并在处理器里模拟搜索延迟setTimeout 300ms与 mock 结果基于EventEmitter的观测点request/completion事件让调用方可监控指标这在生产级服务器里是很好的可观测性模式。连接传输层同样简洁new StdioServerTransport()后调用mcpServer.connect(transport)即可通过 stdio 运行。JavaScriptNode.js 生态的轻量落地JavaScript 示例index.js与 TypeScript 版几乎同构但它刻意不依赖 TypeScript 编译直接在 Node.js 中import { McpServer } from modelcontextprotocol/sdk/server/mcp.js资源模板改用纯字符串search://{query}。这印证了文档中对 JavaScript SDK 的描述Node.js 与浏览器均可运行、Promise 化 API、易于与 Express 等框架集成且 WebSocket 支持流式传输。Java with Spring企业级安全样板Java 示例samples/java/containerapp演示了一个真正的生产级组合MCP LangChain4j Azure Content Safety 双层安全校验。其架构是用户在 Web 界面输入计算类自然语言提示输入层筛查提示先送 Azure Content Safety API 分析若任意类别 severity ≥ 2 则拦截并返回警告安全内容交由 LangChain4j通过 MCP 协议调用本地 8080 端口的计算器 MCP ServerSSE 传输输出层筛查Bot 响应再次过 Content Safety不安全则替换为警告返回结果与两次安全分析详情。配置上需要两组环境变量Microsoft Foundry 模型三元组AZURE_OPENAI_ENDPOINT/AZURE_OPENAI_API_KEY/AZURE_OPENAI_DEPLOYMENT以及CONTENT_SAFETY_ENDPOINT/CONTENT_SAFETY_KEY未设置时程序会回退到占位值但安全功能不会真正生效。启动方式为mvn spring-boot:runWeb 界面位于http://localhost:8087。这个例子很好地回答了「企业里如何把内容安全策略织进 MCP 工作流」——双端校验保证无论底层模型是否被审查用户始终接触不到有害内容。C#从本地 stdio 到 Streamable HTTP 再到云端C# 示例samples/csharp/README.md展示了一次完整的传输升级旅程。核心服务器 src/Calculator/Program.cs 只有十几行builder.Services .AddMcpServer() .WithHttpTransport(o o.Stateless true) .WithToolsCalculatorTool(); app.MapMcp(/mcp);代码与之前章节的 stdio 版几乎一致差别仅在于换用ModelContextProtocol.AspNetCore处理 HTTP 请求并把IsPrime改为私有方法说明服务器内部可以有私有成员协议只暴露注册过的工具。示例把服务编排在 .NET Aspire 中AppHost/ServiceDefaults工程Aspire 仪表盘提供了开发期的可观性与一键调试体验虽非运行必需但是良好的工程实践。本地启动命令dotnet watch run --project ./src/AppHost启动后 Aspire 仪表盘会给出 HTTP 地址形如http://localhost:5058/MCP 端点即该地址/mcp。用 MCP Inspector 验证时选择Streamable HTTP传输类型、填入http://localhost:5058/mcp后 Connect即可列出并试运行工具。本地跑通后还可以把 VS Code 的 Copilot Chat 指向这个服务器——把.vscode/mcp.json中calc-mcp的type从stdio改为http、url指向http://localhost:5058/mcp就能直接对 Copilot 提出「3 prime numbers after 6780」这类问题观察它如何选用NextFivePrimeNumbers工具。Core Server FeaturesResources、Prompts、ToolsMCP Server 可以按需实现以下三种特性的任意组合多语言示例在实现层面高度一致Resources资源为用户或 AI 模型提供上下文与数据典型场景包括文档仓库、知识库、结构化数据源和文件系统。Python 示例中的models://、greeting://{name}TypeScript 示例中的test://{query}资源模板都是代表Prompts提示词模板化的消息与工作流用于预定义对话模板、引导式交互模式和专用对话结构。Python 示例的review_code即是一个「把任意代码片段包装成审查请求」的可复用提示词Tools工具供 AI 模型执行的函数覆盖数据处理、外部 API 集成、计算能力与搜索功能。add、completion、CalculatorTool都是例子。掌握这三类原语的注册方式与参数化写法是构建复杂 MCP 工作流如「搜索 → 分析 → 汇总」多工具编排的基础。分页与大数据集MCP 游标分页实战当 MCP Server 面对数千个文件、数据库记录或搜索结果的大数据集时必须用分页来管理内存并保证响应式体验。这一节完整展开 分页指南 的要点。为什么必须分页不分页时巨大响应会带来四类问题内存耗尽一次性加载百万级记录、响应缓慢用户等待全量数据加载、超时错误请求超过超时上限、以及AI 性能退化LLM 面对海量上下文时质量下降。MCP 对此采用游标式分页cursor-based pagination保证分页行为可靠且一致。游标Cursor概念与协议行为游标是一个不透明的字符串标记你在结果集中的位置就像书签。典型交互时序如下支持分页的 MCP 方法如下方法返回内容游标支持tools/list工具定义✅resources/list资源定义✅prompts/list提示词定义✅resources/templates/list资源模板✅服务端实现三种语言对照PythonFastMCP用app.list_tools()注册分页处理器从游标解析起始下标返回切片与nextCursorfrom mcp.server import Server from mcp.types import Tool, ListToolsResult app Server(paginated-server) ALL_TOOLS [Tool(nameftool_{i}, descriptionfTool number {i}, inputSchema{}) for i in range(100)] PAGE_SIZE 10 app.list_tools() async def list_tools(cursor: str | None None) - ListToolsResult: start_index int(cursor) if cursor else 0 # 解码游标 end_index min(start_index PAGE_SIZE, len(ALL_TOOLS)) next_cursor str(end_index) if end_index len(ALL_TOOLS) else None return ListToolsResult(toolsALL_TOOLS[start_index:end_index], nextCursornext_cursor)TypeScript用server.setRequestHandler(ListToolsResultSchema, ...)处理tools/list请求游标解码、切片与 nextCursor 计算逻辑与 Python 一致。JavaSpring MCP用McpMethod(tools/list)Param(cursor)注解声明处理器内部用subList(startIndex, endIndex)切片并返回ListToolsResult(pageTools, nextCursor)。三份代码本质相同解码游标 → 切片取页 → 计算 nextCursor末尾返回 null 表示结束。客户端实现与懒加载模式Python 客户端用 while 循环拉取全部结果直到nextCursor为Noneasync def get_all_tools(session: ClientSession) - list: all_tools, cursor [], None while True: result await session.list_tools(cursorcursor) all_tools.extend(result.tools) if result.nextCursor is None: break cursor result.nextCursor return all_toolsTypeScript 客户端等价写法为do { ... cursor result.nextCursor; } while (cursor);。对于超大数据集采用懒加载模式实现一个PaginatedToolIterator__aiter__/__anext__协议内部维护游标与页缓冲async for tool in PaginatedToolIterator(session)按需取页避免一次性把全部数据装入内存。Resources 的分页资源同样需要分页例如列目录场景按文件名排序后以文件索引作为游标每页 20 条为每个文件构造Resource(uriffile://{filepath}, name..., mimeTypeapplication/octet-stream)最后返回ListResourcesResult(resources..., nextCursor...)。三种游标设计策略策略示例优点缺点索引型简单cursor 50实现简单、无状态增删数据时结果会偏移ID 型稳定cursor item_abc123数据变化时依然稳定需要有序 ID编码状态复杂base64(json.dumps({offset:50,filter:active,sort:name}))可编码多字段复杂状态游标变长、实现复杂最佳实践与常见陷阱四条最佳实践① 选合适的页大小简单元数据 100/页、较重的对象 20/页、复杂内容 5/页② 优雅处理非法游标ValueError/ 越界时重置为起始页③ 可选返回总数通过_meta{total: len(ALL_TOOLS)}支持 UI 进度条④ 覆盖边界用例测试空结果集、单页、非法游标。最典型的反面模式是**「先全量返回再在客户端分页」——load_all_tools()加载一百万条工具的做法必须避免正确做法是在数据源分页**例如db.query_tools(offsetoffset, limitPAGE_SIZE)只加载当前页所需的数据。API 管理用 Azure API Management 加固 MCP Server把 MCP Server 直接暴露给外部客户端会带来速率、安全与观测上的缺口。Azure API ManagementAPIM的定位就是把它放在 MCP Server 前面统一接管你大概率需要的横切能力速率限制rate limiting防止单个客户端打爆服务器令牌管理token management对接 OAuth / Entra 令牌的校验与换发监控monitoring统一记录请求日志负载均衡load balancing把流量分发到多个后端实例安全security网关层的认证授权与策略执行。参考实现是 Azure 官方示例remote-mcp-apim-functions-python其授权流程可概括为三段式认证/授权由 Microsoft Entra 完成APIM 作为网关用 Policies 引导与管理流量Azure Monitor 记录所有请求供进一步分析。协议层面的细节可进一步对照 MCP Authorization 规范2026-07-28版本学习。部署远程 MCP Server 到 Azure一键部署azd up以官方示例仓库remote-mcp-apim-functions-python为例完整部署分三步克隆仓库git clone https://github.com/Azure-Samples/remote-mcp-apim-functions-python.git cd remote-mcp-apim-functions-python注册Microsoft.App资源提供程序Azure CLI 执行az provider register --namespace Microsoft.App --waitAzure PowerShell 则执行Register-AzResourceProvider -ProviderNamespace Microsoft.App稍后用(Get-AzResourceProvider -ProviderNamespace Microsoft.App).RegistrationState确认注册完成。执行 azd 一键部署azd up该命令会完成 API Management 服务、Function App含代码以及其余全部 Azure 资源的预置与部署。用 MCP Inspector 验证远程服务器部署完成后在新的终端窗口启动 MCP Inspectornpx modelcontextprotocol/inspector启动后浏览器会自动打开 Inspector Web 应用地址形如http://127.0.0.1:6274/#resources。随后按序操作将传输类型设为SSE在 URL 栏填入azd up输出中显示的 APIM SSE 端点形如https://apim-servicename-from-azd-output.azure-api.net/mcp/sse点击ConnectList Tools列出全部工具点击某个工具再Run Tool执行。如果以上步骤全部成功说明你已经通过 Azure API Management 网关连接到了远程 MCP Server 并成功调用了一个工具。这套「azd 部署 Inspector 验证」的闭环同样适用于 C# 示例在04-PracticalImplementation/samples/csharp目录下执行azd up拿到 Azure Container Apps 的https://.../mcp端点后把该 URL 分别填入 MCP Inspector选择 Streamable HTTP 传输和 VS Code.vscode/mcp.json的calc-mcp配置中即可{ servers: { calc-mcp: { type: http, url: https://calc-mcp.gentleriver-3977fbcf.australiaeast.azurecontainerapps.io/mcp } } }Azure 上的 MCP Server 快速启动模板remote-mcp-functions系列仓库是面向 Azure Functions 的 MCP Server 快速启动模板Python / C# .NET / Node-TypeScript 三种语言各一份为开发者提供了一整套开箱即用的完整方案本地构建与运行在本地开发、调试 MCP Server一键上云azd up即可部署多客户端接入可被 VS Code 的 Copilot Agent 模式和 MCP Inspector 连接。其关键特性值得在选型时对照安全优先设计用密钥keys与 HTTPS 保护服务器认证选项支持内置认证或经 API Management 的 OAuth网络隔离可借助 Azure 虚拟网络VNET隔离网络无服务器架构基于 Azure Functions 实现弹性、事件驱动执行本地开发完善的本地开发与调试支持简单部署流线化部署到 Azure。模板仓库内含全部配置文件、源代码与基础设施定义可直接作为生产级 MCP Server 的起点。关键要点与自主练习回顾全章五个关键要点值得内化MCP SDK 为各语言提供了实现健壮 MCP 方案的专用工具调试与测试流程是可靠 MCP 应用的关键可复用的提示词模板保证 AI 交互的一致性良好设计的工作流可以用多个工具编排复杂任务而安全、性能与错误处理必须贯穿 MCP 实现始终。建议动手完成一个领域内的实战练习①为你的真实问题识别 34 个有用的工具②画一张工具间交互的工作流图③用你最熟悉的语言实现其中一个工具的基础版本④编写一个帮助模型高效使用该工具的提示词模板。完成后可继续进入 高级主题 章节进一步探索上下文工程、路由、安全与实时流等进阶话题。赞分享教程文档人工智能【免费下载链接】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点击查看免费下载相关推荐mcp-for-beginners 部署实战MCP Server 从本机运行到 Azure Container Apps 云端发布mcp for beginners 部署实战MCP Server 从本机运行到 Azure Container Apps 云端发布 本篇技术指南以 mcp f教程文档人工智能如何快速掌握PaddleOCR从模型训练到移动端部署的完整指南如何快速掌握PaddleOCR从模型训练到移动端部署的完整指南 飞桨PaddleOCR是一个功能强大的多语言OCR工具包支持80种语言识别提供从数据标注人工智能计算机视觉OCR深度学习大模型RAGCANN/cann-bench版本变更记录版本变更记录 V0.2.0 2026 05 07 评分体系切换为 hardware anchored 公式 对齐 bench.tex 评分公式改版单用例性能得人工智能模型评测AI 评测Agent 评测CANNAscend创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表