ARTICLE DETAIL

资讯详情

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

mcp-for-beginners 实战:从客户端连接 Microsoft Learn Docs MCP 服务器,把官方文档直接接入你的工具链

mcp-for-beginners 实战:从客户端连接 Microsoft Learn Docs 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点击查看免费下载导读你是否经常在文档站点、Stack Overflow 和搜索引擎标签页之间来回切换只为了在写代码时找到一条准确的 API 说明本篇文章基于开源课程 mcp-for-beginners 中的案例研究 09-CaseStudy/docs-mcp完整演示如何从你自己的客户端应用连接Microsoft Learn Docs MCP 服务器把官方文档检索直接嵌入控制台、Web 应用乃至 VS Code 编辑器。读完本文你将掌握基于官方 MCP SDK streamable HTTP 的客户端连接方法、microsoft_docs_search工具的调用与流式响应解析以及一套「文档即服务」的三层落地范式命令行检索 → 对话式 Web 应用 → 编辑器内 AI 协同。案例背景为什么要把文档带进开发工作流现代开发早已不只是「写代码」本身更关键的是在对的时间找到对的信息。文档无处不在却很少出现在最需要它的地方——你的工具与工作流内部。本案例的核心理念是将文档检索能力以 MCPModel Context Protocol的形式直接集成进应用从而消除「代码 ↔ 文档」之间的上下文切换context switching实时获取最新、且对上下文敏感的 Microsoft Learn 官方内容为构建聊天机器人、IDE 扩展、Web 仪表盘等更高级的集成打下基础。本案例共包含三个递进场景场景一实现一个交互式控制台客户端实时调用 Docs MCP 并解析流式响应场景二把 Docs MCP 接入 Chainlit 对话式 Web 应用自动生成按周拆解的学习计划场景三则在 VS Code 内通过.vscode/mcp.json配置 MCP 服务器配合 GitHub Copilot 实现不离开编辑器的文档检索与引用插入。学习目标完成本案例后你将掌握MCP 服务器-客户端通信的基础针对文档检索场景实现一个控制台或 Web 应用来连接 Microsoft Learn Docs MCP 服务器使用流式 HTTP 客户端进行实时文档检索在应用中正确记录logging并解读文档响应把 Docs MCP 与 GitHub Copilot 组合成 AI 驱动的文档工作流。MCP 客户端通信基础streamable HTTP 连接范式三个场景虽然形态不同但底层都复用同一套官方 MCP Python SDK 的客户端连接范式核心调用链高度一致。从 scenario1.py 和 scenario2.py 的源码可以看到连接过程由四个固定环节组成from mcp.client.streamable_http import streamablehttp_client from mcp import ClientSession # 1. 建立 streamable HTTP 传输层 async with streamablehttp_client(https://learn.microsoft.com/api/mcp) as (read_stream, write_stream, _): # 2. 在双向流之上创建客户端会话 async with ClientSession(read_stream, write_stream) as session: # 3. 初始化握手 await session.initialize() # 4. 调用工具并取回结果 result await session.call_tool(microsoft_docs_search, {question: ...})关键点说明端点固定为https://learn.microsoft.com/api/mcp无需本地起服务直接连接微软托管的 Docs MCP 服务器即可streamablehttp_client返回的(read_stream, write_stream, _)三元组是 JSON-RPC 双向消息流ClientSession负责协议级会话管理session.initialize()完成能力协商握手之后才能调用工具工具名是microsoft_docs_search参数键在不同实现中有差异详见下文场景一务必与服务器端 schema 对齐。场景一实时文档检索的控制台客户端场景一的目标是写一个应用连接 Docs MCP 服务器调用microsoft_docs_search工具并把流式响应记录到控制台。官方给出的最小可运行示例Python如下import asyncio from mcp.client.streamable_http import streamablehttp_client from mcp import ClientSession async def main(): async with streamablehttp_client(https://learn.microsoft.com/api/mcp) as (read_stream, write_stream, _): async with ClientSession(read_stream, write_stream) as session: await session.initialize() result await session.call_tool(microsoft_docs_search, {query: Azure Functions best practices}) print(result.content) if __name__ __main__: asyncio.run(main())从最小示例到生产级客户端scenario1.py 的完整实现仓库中的完整实现位于 scenario1.py它在最小示例之上补齐了实战必备的四块能力1. 结构化日志logginglogging.basicConfig( levellogging.INFO, format%(asctime)s - %(name)s - %(levelname)s - %(message)s, datefmt%Y-%m-%d %H:%M:%S ) logger logging.getLogger(mcp_client)连接、会话初始化、每次查询执行都通过logger.info(...)记录便于定位问题。2. 交互式多轮查询循环while True: user_query prompt_user() if not user_query: print(Query cannot be empty. Please try again.) continue if user_query.lower() in (exit, quit): print(Exiting client. Goodbye!) break result await session.call_tool(microsoft_docs_search, {question: user_query})prompt_user()用input( )读取用户输入并捕获KeyboardInterrupt/EOFError优雅退出——这对应了原文档要求的「允许用户输入多条搜索查询」的交互式控制台界面。3. 结果解析一个值得注意的实现细节此处调用参数键是{question: user_query}与最小示例中的{query: ...}不同属于服务器 schema 允许的参数别名。而响应内容的解析方式可以从源码中明确看到if hasattr(result, content): for item in result.content: my_list json.loads(item.text) # 每条文本内容是 JSON 数组 for doc in my_list: print(f[Title]: {doc.get(title, No title)}) print(f[Content]: {doc.get(content, No content)})即result.content中每一项的text字段本身是一段 JSON反序列化后得到文档对象列表每个对象含title与content字段。这印证了 Docs MCP 返回「结构化文档列表」而非纯文本的设计。4. 错误处理查询级异常被捕获并提示重试连接级异常网络不通、握手失败会记录Connection error并以退出码 1 终止进程。运行效果与文档预期一致Prompt What is Azure Key Vault? Answer Azure Key Vault is a cloud service for securely storing and accessing secrets. ...运行方式pip install -r requirements.txt # 依赖见 09-CaseStudy/docs-mcp/solution/python/requirements.txt python scenario1.py依赖清单requirements.txt包括mcp官方 SDK、chainlit、semantic-kernel并额外固定werkzeug3.1.6以规避其安全公告CVE-2025-66221 / CVE-2026-21860 / CVE-2026-27199——这是仓库对供应链安全加固的一个实例。场景二基于 Chainlit 的交互式学习计划生成器场景二把 Docs MCP 集成进 Web 开发项目用户在浏览器聊天窗口输入「我要学 AI-102请基于 Learn 给我 6 周学习路线」应用就能返回按周拆解、带官方学习路径的详细计划。原文档中给出的最小示例基于 Chainlit requests 直接 POSTimport chainlit as cl import requests MCP_URL https://learn.microsoft.com/api/mcp cl.on_message def handle_message(message): query {question: message} response requests.post(MCP_URL, jsonquery) if response.ok: result response.json() cl.Message(contentresult.get(answer, No answer found.)).send() else: cl.Message(contentError: response.text).send()生产级实现MCP 作为 Semantic Kernel 插件仓库中的完整实现 scenario2.py 展示了更有工程价值的模式——把 MCP 文档检索封装为 Semantic Kernel 插件由 AI Agent 自主决定何时调用class MCPDocsPlugin: def __init__(self, mcp_server_url): self.mcp_server_url mcp_server_url kernel_function(namesearch_docs, descriptionSearch Microsoft Docs using MCP) async def search_docs(self, question: str) - str: async with streamablehttp_client(self.mcp_server_url) as (read_stream, write_stream, _): async with ClientSession(read_stream, write_stream) as session: await session.initialize() result await session.call_tool(microsoft_docs_search, {question: question}) output [] if hasattr(result, content): for item in result.content: try: my_list json.loads(item.text) for doc in my_list: output.append(f**{doc.get(title)}**\n{doc.get(content)}) except Exception: output.append(item.text) return \n.join(output) if output else No content returned from the search.随后的 Agent 编排逻辑源码可见包括在cl.on_chat_start中构建Kernel注册AzureChatCompletion服务设置FunctionChoiceBehavior.Auto()让模型在需要文档时自动调用search_docs函数创建ChatCompletionAgent名为DocsAgent其指令明确要求「使用 MCPDocs 插件回答 Microsoft Docs 问题并清晰排版答案」cl.on_message中通过async for content in agent.invoke(user_query)流式输出 token实现打字机式的实时回答。这意味着整个链路是用户提问 → 模型规划 → 自动调用 Docs MCP 检索 → 模型基于检索结果组织回答 → 流式渲染到 Web 界面。运行与必需的环境变量chainlit run scenario2.py # 默认地址 http://localhost:8000⚠️ 完整版依赖 Azure OpenAI必须在python目录下的.env文件中配置字段以仓库 solution/python/README.md 为准AZURE_OPENAI_CHAT_DEPLOYMENT_NAME AZURE_OPENAI_API_KEY AZURE_OPENAI_ENDPOINT AZURE_OPENAI_API_VERSION填充你的 Azure OpenAI 资源信息后再启动。仓库文档还提示可通过 Microsoft Foundryai.azure.com快速部署自己的模型。可直接试用的示例查询在聊天窗口输入以下任意一条即可验证应用对不同学习目标与时长的适配能力AI-900 certification, 8 weeksLearn Azure Functions, 4 weeksAzure DevOps, 6 weeksData engineering on Azure, 10 weeksMicrosoft security fundamentals, 5 weeksPower Platform, 7 weeksAzure AI services, 12 weeksCloud architecture, 9 weeks应用会解析主题与周数查询 Docs MCP 获取相关学习资源再组织成按周推进的结构化计划。场景三在 VS Code 编辑器内使用 Docs MCP如果你只想把 Microsoft Learn 文档带进 VS Code而不想写任何代码可以直接在编辑器内配置 MCP 服务器。它让你能够不离开编码环境即可搜索、阅读官方文档在写 README 或课程文件时直接引用文档并插入链接让 GitHub Copilot 与 MCP 协同工作形成 AI 驱动的文档工作流。第一步添加.vscode/mcp.json在工作区根目录创建.vscode/mcp.json写入以下配置完整文件见 mcp.json{ servers: { LearnDocsMCP: { url: https://learn.microsoft.com/api/mcp } } }该配置告诉 VS Code 如何连接到 Microsoft Learn Docs MCP 服务器。第二步至第五步与 GitHub Copilot 协同仓库的 scenario3/README.md 提供了带截图的逐步指南流程如下安装并打开 Copilot Chat在扩展市场安装 GitHub Copilot 扩展从侧边栏打开 Copilot Chat 面板启用 agent 模式并验证工具在 Copilot Chat 中启用 agent 模式随后确认LearnDocsMCP已出现在可用工具列表中——只有这一步通过Copilot Agent 才能真正访问文档服务器发起提问在新聊天中向 agent 提问例如「Im trying to write a study plan for topic X. Im going to study it for 8 weeks, for each week, suggest content I should take.」agent 会通过 MCP 拉取相关文档并直接在编辑器中呈现使用真实问题做活体验证案例中还用了一个来自社区的真实问题如何在 Azure AI Foundry 上部署多智能体解决方案验证了面对复杂、开放式的工程问题时agent 依然能检索并返回相关文档与要点。可直接尝试的示例查询Show me how to use Azure Functions triggers.Insert a link to the official documentation for Azure Key Vault.What are the best practices for securing Azure resources?Find a quickstart for Azure AI services.这类工作流尤其适合技术课程作者、文档编写者以及开发中高频查资料的工程师。关键要点把文档直接集成进工具不只是便利性问题更是生产力的质变。通过从自己的客户端连接 Microsoft Learn Docs MCP 服务器你可以消除代码与文档之间的上下文切换实时获取最新、且感知上下文的官方文档构建更智能、更具交互性的开发者工具。三个场景共同勾勒出一条清晰的进阶路径控制台客户端验证协议与解析→ 对话式 Web 应用叠加 Agent 编排→ 编辑器内集成零代码接入 AI 协同而底层始终是同一套 MCP streamable HTTP 客户端通信机制。延伸阅读案例完整代码与多运行时的解决方案索引09-CaseStudy/docs-mcp/solution场景一/二详细安装与使用说明solution/python/README.md场景三编辑器内集成逐步指南solution/scenario3/README.md原文档的「Additional Resources」一节含 Microsoft Learn Docs MCP 官方仓库、Azure MCP Server 入门、MCP 协议介绍等外部资源请查看 09-CaseStudy/docs-mcp/README.md继续学习 MCP 全栈技能10-StreamliningAIWorkflowsBuildingAnMCPServerWithAIToolkit/README.md赞分享教程文档人工智能【免费下载链接】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 实战案例从客户端直连 Microsoft Learn Docs MCP 服务器把文档检索嵌入你的工具链MCP 实战案例从客户端直连 Microsoft Learn Docs MCP 服务器把文档检索嵌入你的工具链 本篇技术指南以 docs mcp 案例研究教程文档人工智能GitHub Copilot App 接入 MCP 服务器实战从连接 Microsoft Learn 文档服务器到自定义工具mcp-for-beginnersGitHub Copilot App 接入 MCP 服务器实战从连接 Microsoft Learn 文档服务器到自定义工具mcp for beginner教程文档人工智能IT-Tools 加密解密四件套从 JWT 解析到 RSA 密钥生成4 个页面覆盖签名与加解密IT Tools 加密解密四件套从 JWT 解析到 RSA 密钥生成4 个页面覆盖签名与加解密 排查接口时发现参数疑似被改手里一串 JWT 却看不懂里面写开发工具前端上一篇LibreHardwareMonitor 完整指南免费监控 CPU 温度、风扇转速与电压的 5 步上手下一篇PaddleSpeech TTS 快速上手从 CSMSC 数据集的 FastSpeech2 Parallel WaveGAN 训练到推理创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表