TellWorldAI 世界档案
问档案English

首页›实践›实践

实践

MCP 实战:用各语言 SDK 写服务器

用官方 SDK 在多种语言里写 MCP 服务器,并把远程服务器部署到 Azure:先认清资源、提示词和工具,再查版本兼容,最后用 MCP Inspector 测试。

这篇适合谁、读完能做到什么

如果你已经了解 MCP 的基本概念,想动手做一个能用的服务器,并且希望它能部署到云上,这篇适合你。读完你能分清 MCP 服务器的三类核心能力,知道各语言 SDK 大致提供什么,按步骤把一个远程服务器部署到 Azure,并用 MCP Inspector 连接它、调用一个工具。[1]

三类核心能力:资源、提示词和工具

MCP 服务器可以实现三类核心能力,任意组合都可以。[1]

资源(Resources)为用户或 AI 模型提供上下文和数据,例如文档仓库、知识库、结构化数据源和文件系统。[1]

提示词(Prompts)是给用户用的模板化消息和工作流,例如预先定义好的对话模板、引导式的交互方式和专门的对话结构。[1]

工具(Tools)是供 AI 模型执行的函数,例如数据处理工具、外部 API 集成、计算能力和搜索功能。[1]

这三类能力可以按需组合:只需要提供数据,就只实现资源;只需要一个可执行的动作,就只实现工具。[1]

做服务器时,先想清楚要暴露哪一类能力。要提供数据,用资源;要给用户一个固定的操作流程,用提示词;要让模型去执行动作,用工具。三者经常一起出现,比如一个查询订单的服务器,可以同时提供订单数据(资源)、查询工具和“客服回复”模板(提示词)。[1]

各语言 SDK 怎么选

官方提供了多种语言的 SDK。官方 SDK 列表中包括 C#、Java with Spring、TypeScript、Python、Kotlin 和 Go。[1][2]

选择的时候,先看你的团队已经在用什么语言和框架,再看 SDK 是否支持你需要的特性。下面是各语言的概况:[1]

C#

C# SDK 目前处于预览阶段,API 可能会变化。它的官方示例包括一个基础客户端、一个基础服务器、一个带工具注册、认证和错误处理的高级服务器、ASP.NET Core 集成,以及各种工具实现模式。SDK 以 NuGet 包 ModelContextProtocol 发布。[1]

如果你的团队已经在用 .NET,可以直接从 C# SDK 的基础服务器样例开始,再逐步看高级服务器里的认证和错误处理。[1]

Java 与 Spring

Java with Spring SDK 的特点包括 Spring 框架集成、较强的类型安全、响应式编程支持和完善的错误处理。它的仓库说明这个 SDK 需要依赖 Project Reactor,所以在项目里要把这个依赖一并考虑进去。示例位于 samples/java/containerapp 目录。[1]

JavaScript

JavaScript SDK 同时支持 Node.js 和浏览器环境,使用基于 Promise 的 API,可以方便地和 Express 等框架集成,还支持 WebSocket 流式传输。[1]

Python

Python SDK 支持基于 asyncio 的 async/await,工具注册很简单,并且能和常用的机器学习库原生集成。[1]

版本兼容要先查

需要特别注意:对 MCP 2026-07-28 的支持是各 SDK 各自推进的。所以在假设协议兼容之前,先去查每个 SDK 的发布说明,并核对示例里使用的包版本。这一步在选型和升级时都很重要,否则很容易写出一个和客户端对不上的服务器。[1]

把远程服务器部署到 Azure

本篇的远程部署示例来自 Azure 的一个官方示例仓库,它用 Azure Functions 搭建 MCP 服务器,并用 Azure API Management 保护它。[1][3]

准备

先克隆仓库并进入目录:[1]

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 --wait;如果用 Azure PowerShell,运行 Register-AzResourceProvider -ProviderNamespace Microsoft.App,再过一段时间用 (Get-AzResourceProvider -ProviderNamespace Microsoft.App).RegistrationState 检查注册是否完成。[1]

部署

运行 azd up 命令,它会创建 API Management 服务、带代码的函数应用,以及其他需要的 Azure 资源:[1]

azd up

用 MCP Inspector 测试

在一个新的终端窗口里安装并运行 MCP Inspector:[1]

@@shell:c:npx @modelcontextprotocol/inspector@@

Inspector 打开后,把传输类型设为 SSE,把 URL 设为 azd up 输出中的 API Management SSE 端点,然后点击 Connect。连接成功后,列出工具,点击一个工具并运行它。[1]

https://<apim-servicename-from-azd-output>.azure-api.net/mcp/sse

如果以上步骤都正常,你就已经连上了远程 MCP 服务器,并成功调用了一个工具。注意这里用的是 SSE 端点,按照 2026-07-28 的规范,新的远程服务器应当关注 Streamable HTTP,并核对所用 SDK 的版本支持情况。[1]

用 API 管理保护远程服务器

Azure API Management 很适合用来保护 MCP 服务器。做法是在 MCP 服务器前面放一个 API Management 实例,由它处理限流、令牌管理、监控、负载均衡和安全等功能。[1]

在这个示例中,身份认证和授权使用 Microsoft Entra;API Management 作为网关,通过策略(policy)来引导和管理流量;Azure Monitor 记录所有请求,便于之后分析。[1][3]

授权的细节可以参考 MCP 授权规范,它在 modelcontextprotocol.io 上有 2026-07-28 版本的说明。[4]

Azure 上的其他模板

如果你想从模板起步,Azure 提供了用 Azure Functions 搭建远程 MCP 服务器的快速起步模板,分别支持 Python、C# .NET 和 Node/TypeScript。[1]

这些模板提供的安全措施包括用密钥和 HTTPS 保护服务器,支持通过内置认证或 API Management 实现 OAuth,支持借助 Azure 虚拟网络做网络隔离,并且可以本地开发和调试,通过 azd up 部署到 Azure。连接方式上,可以从 VS Code 的 Copilot 代理模式或 MCP Inspector 连接。[1]

如果工具或资源返回的数据量很大,还可以参考一篇讲基于游标(cursor)分页的指南,适用于工具、资源和大数据集。[1]

练习:设计一个 MCP 工作流

练习要求你选一个你熟悉领域里的真实问题,然后做四件事:找出 3 到 4 个有用的工具;画出一张工作流图,说明这些工具如何配合;用你喜欢的语言实现其中一个工具;为它写一个提示词模板,帮助模型更好地使用这个工具。[1]

注意事项

要点是:实现 MCP 方案时,安全、性能和错误处理都要考虑;设计良好的工作流可以用多个工具编排复杂任务。调试和测试也是保证 MCP 应用可靠的关键环节。[1]

本文改编自 Microsoft 开源课程《MCP for Beginners》第 4 课[1],原文以 MIT 许可证发布。

来源

  1. 1
    Practical ImplementationMicrosoft mcp-for-beginners (MIT)
  2. 2
    MCP SDKsModel Context Protocol
  3. 3
    remote-mcp-apim-functions-pythonAzure-Samples (GitHub)
  4. 4
    MCP Authorization specificationModel Context Protocol

引用本页: MCP 实战:用各语言 SDK 写服务器. TellWorld, https://www.tellworld.net/zh/practice/practice-mcp-practical-implementation. 更新于 2026-11-14

相关动态