构建MCP服务器
相对较新的基于大语言模型(LLM)的AI代理(如GPT-4o、Claude或Gemini)在通用推理和回答广泛问题方面非常熟练。然而,它们通常难以处理特定领域的查询——比如"只给我戴尔设备信息"——因为它们无法访问专有的、内部的或组织级别的数据。
要正确回答这类问题,LLM需要的不仅仅是一个提示:它需要通过可信内部源提供的上下文信息。本文展示了如何借助模型上下文协议(MCP)构建能够访问和使用特定领域上下文的AI代理。它包括自定义MCP服务器创建的代码示例,并演示了MCP主机(本例中为VS Code)如何与服务器通信并使用工具。
以下是使用MCP创建AI代理所需的关键构建模块:
- MCP主机:通常是受MCP支持的IDE(如下例中的VS Code),由任何MCP客户端使用。
- MCP服务器:这是工具所在的地方。它通过MCP协议暴露这些工具,为AI提供上下文数据,以便客户端使用它们。
- MCP客户端:作为MCP主机和MCP服务器之间的链接。它连接到MCP服务器并发现可用的工具。
要更深入理解MCP,请参阅MCP介绍。
1. 创建MCP服务器项目
自定义MCP服务器使用工具提供外部信息。以下是使用C# SDK构建自定义服务器的代码片段。
首先,将ModelContextProtocol包添加到您的C# Web API项目中。然后,将以下代码片段添加到项目的启动文件中。这就是使用模型上下文协议C# SDK创建MCP服务器所需的全部内容。
|
|
AddMcpServer()
方法使此项目能够作为MCP服务器运行。
2. 在MCP服务器上创建MCP工具
每个MCP工具都有元数据——标题和描述。这些元数据帮助LLM通过语义匹配用户提示与工具描述来确定要调用哪个工具。
在上面的代码中,WithToolsFromAssembly()
扫描您的项目,找到任何标记为McpServerTool
的内容,并将这些工具注册到MCP服务器。
|
|
基本上,上面的代码充当LLM的数据提供者,允许它动态从外围设备获取数据——比如ping一个安全API(内部或外部)。MCP服务器将此功能作为MCP工具暴露给LLM。
3. 在VS Code工作区中添加MCP服务器
接下来是什么?在VS Code中打开您的项目,并在.vscode文件夹中添加一个mcp.json文件。该文件基本上是MCP客户端和MCP服务器之间的通信器——它告诉客户端在哪里找到您的服务器以及允许使用哪些工具。以下是mcp.json文件的示例。
|
|
4. 在VS Code中运行MCP服务器
下面的VS Code片段显示了我启动MCP服务器并在GitHub Copilot聊天窗口中输入提示以请求仅获取戴尔设备的位置。MCP服务器随后返回了适当的响应。
好的,我的MCP服务器已经准备就绪并运行。现在,您的MCP客户端——托管在VS Code中的那个——实际上可以与MCP服务器通信。它将GetPeripherals MCP工具暴露给客户端,LLM使用该工具获取相关数据。
下图显示了端到端的流程:
- MCP服务器已经通过托管在VS Code(MCP主机)中的MCP客户端连接。
- 用户通过在GitHub Copilot聊天窗口中输入提示进行交互。
- 用户的提示以及服务器上可用的MCP工具作为上下文信息提供给LLM。
- LLM决定执行哪些工具以获取相关的外部信息。
- 基于检索到的数据,LLM生成信息丰富的响应。
结论
通过使用MCP C# SDK构建自定义MCP服务器并在Visual Studio Code中使用GitHub Copilot运行它,开发人员可以开始创建强大的AI代理。MCP服务器与IDE共享工具,得益于Copilot的智能,AI代理可以自动将用户的提示与正确的工具匹配。一旦触发该工具,它会获取相关数据以帮助LLM准确响应。这种基于MCP架构和模型上下文协议的设置使得将真实世界上下文引入AI交互变得更加容易。它还保持了模块化、可重用和可扩展的特性,简化了任何构建AI驱动应用程序的开发过程。