Integrating Model Context Protocol (MCP) Tools with Semantic Kernel: A Step-by-Step Guide

Integrating Model Context Protocol (MCP) Tools with Semantic Kernel: A Step-by-Step Guide

将模型上下文协议 (MCP) 工具与 Microsoft Semantic Kernel 集成,以构建 AI 驱动的工作流程。 这个 C# 项目将 MCP 服务器连接到 Semantic Kernel,使 LLM 能够无缝调用外部工具。 提供示例代码,供开发人员探索使用 .NET 进行 AI 编排。

LiteObject

开发者工具
访问服务器

README

将模型上下文协议 (MCP) 工具与 Semantic Kernel 集成:分步指南

本仓库演示了如何将模型上下文协议 (MCP) 工具与 Microsoft Semantic Kernel 集成,从而实现 AI 模型与外部数据源或工具之间的无缝交互。通过遵循本指南,您将学习如何连接到 MCP 服务器,将 MCP 工具转换为 Semantic Kernel 函数,并利用大型语言模型 (LLM) 进行函数调用——所有这些都在一个可重用和可扩展的框架内完成。

什么是模型上下文协议 (MCP)?

模型上下文协议 (MCP) 是一种开放标准协议,旨在标准化应用程序如何向 AI 模型提供上下文。它充当通用连接器,允许 LLM 以一致的方式与各种数据源(例如,API、数据库或服务)进行交互。可以将 MCP 视为一座桥梁,增强 AI 的互操作性、灵活性和上下文理解能力。

在这个项目中,我们使用 MCP 来公开 Semantic Kernel 可以使用的工具,从而实现具有实际应用的 AI 驱动工作流程,例如自动化、数据检索或系统集成。

为什么将 Semantic Kernel 与 MCP 一起使用?

Microsoft Semantic Kernel 是一个强大的 SDK,可简化 AI 代理的构建和复杂工作流程的编排。通过集成 MCP 工具,您可以:

  • 通过 MCP 服务器使用外部功能扩展 Semantic Kernel。
  • 使 LLM 能够根据用户提示动态调用函数。
  • 促进 AI 模型与非 Semantic Kernel 应用程序之间的互操作性。
  • 通过用于工具集成的标准化协议简化开发。

本仓库提供了一个将这些技术结合使用的实际示例,并附带示例代码,可帮助您入门。

先决条件

在深入研究代码之前,请确保您具备以下条件:

  • .NET SDK(建议使用 8.0 或更高版本)。
  • 有效的 OpenAI API 密钥(或另一个与 Semantic Kernel 兼容的 LLM 提供商)。
  • ModelContextProtocol NuGet 包。
  • 熟悉 C# 和 Semantic Kernel 的基本概念。
  • (可选)用于测试的 MCP 服务器,例如用于演示目的的示例 "Everything" MCP 服务器

分步指南

本节将引导您完成将 MCP 工具与 Semantic Kernel 集成的过程,如本仓库中所实现的那样。

步骤 1:设置您的项目

  1. 克隆此仓库:

    git clone https://github.com/LiteObject/mcp-with-semantic-kernel.git
    cd mcp-with-semantic-kernel
    
  2. 恢复依赖项:

    dotnet restore
    
  3. 使用环境变量或用户机密配置您的 OpenAI API 密钥(或其他 LLM 凭据):

    dotnet user-secrets set "OpenAI:ApiKey" "your-api-key"
    dotnet user-secrets set "OpenAI:ChatModelId" "gpt-4o"
    

步骤 2:连接到 MCP 服务器

该项目包含使用 ModelContextProtocol 包连接到 MCP 服务器的代码。 MCP 客户端从服务器检索可用工具,然后 Semantic Kernel 可以使用这些工具。

示例代码(请参阅 mcp-with-semantic-kernel/src/Program.cs):

using ModelContextProtocol;

var mcpConfig = new McpServerConfig
{
    Id = "everything",
    Name = "Everything",
    TransportType = TransportTypes.Sse,
    Location = "http://localhost:8931"
};

var mcpClient = await McpClientFactory.CreateAsync(mcpConfig);
var tools = await mcpClient.ListToolsAsync();

此代码段建立与 MCP 服务器(例如,“Everything”演示服务器)的连接并获取其可用工具。

推荐服务器

Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
MCP Package Docs Server

MCP Package Docs Server

促进大型语言模型高效访问和获取 Go、Python 和 NPM 包的结构化文档,通过多语言支持和性能优化来增强软件开发。

精选
本地
TypeScript
Claude Code MCP

Claude Code MCP

一个实现了 Claude Code 作为模型上下文协议(Model Context Protocol, MCP)服务器的方案,它可以通过标准化的 MCP 接口来使用 Claude 的软件工程能力(代码生成、编辑、审查和文件操作)。

精选
本地
JavaScript
@kazuph/mcp-taskmanager

@kazuph/mcp-taskmanager

用于任务管理的模型上下文协议服务器。它允许 Claude Desktop(或任何 MCP 客户端)在基于队列的系统中管理和执行任务。

精选
本地
JavaScript
mermaid-mcp-server

mermaid-mcp-server

一个模型上下文协议 (MCP) 服务器,用于将 Mermaid 图表转换为 PNG 图像。

精选
JavaScript
Jira-Context-MCP

Jira-Context-MCP

MCP 服务器向 AI 编码助手(如 Cursor)提供 Jira 工单信息。

精选
TypeScript
Linear MCP Server

Linear MCP Server

一个模型上下文协议(Model Context Protocol)服务器,它与 Linear 的问题跟踪系统集成,允许大型语言模型(LLM)通过自然语言交互来创建、更新、搜索和评论 Linear 问题。

精选
JavaScript
Sequential Thinking MCP Server

Sequential Thinking MCP Server

这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。

精选
Python
Curri MCP Server

Curri MCP Server

通过管理文本笔记、提供笔记创建工具以及使用结构化提示生成摘要,从而实现与 Curri API 的交互。

官方
本地
JavaScript