关于 mcp-server-with-semantic-kernel
mcp-server-with-semantic-kernel 是一个 Python 项目,介绍如何在 Semantic Kernel 中使用 MCP 服务构建 AI Agent,面向开发者。内容涵盖插件、提示词、记忆及通信方式,README 未说明它具体向 MCP 客户端公开哪些工具。
主要功能
- 01介绍 Semantic Kernel 核心组件
- 02说明插件与提示词模板
- 03讲解记忆和任务编排
- 04对比 Semantic Kernel 与 MCP
- 05说明 SSE 和 stdio 通信方式
适用场景
- 01了解如何将 MCP 服务用于 Semantic Kernel Agent
- 02规划 Agent 的插件、记忆与提示词结构
- 03选择 MCP 工具连接的通信方式
MCP 相关
该项目围绕在 Python Semantic Kernel 中使用 MCP 服务展开,说明了 MCP 的工具接口及 SSE、stdio 通信方式。README 未描述具体对外提供的 MCP 工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
mcp-server-with-semantic-kernel
使用 Python 通过模型上下文协议(MCP)插件构建 Semantic Kernel Agent
在 Python 中将 MCP 服务与 Semantic Kernel 配合使用
什么是 Semantic Kernel?
Semantic Kernel(SK)是 Microsoft 创建的开源工具包,可帮助开发者构建强大的 AI Agent 和应用,让它们能够交流、思考并采取行动。
可以这样理解:
假设你正在构建一个机器人助手。它可以:
- 使用 ChatGPT 或其他 AI 模型进行交流(例如提问或回答)
- 执行任务,例如查看日历、发送电子邮件或总结文档
- 记住以前做过或见过的事情
- 学习并遵循你教给它的工作流
SK 就是这个助手的大脑。它将语言部分(如 ChatGPT)与工具和记忆部分(日历、文件、API 等)连接起来。
SK 的核心组成部分
| 概念 | 入门说明 |
|---|---|
| Kernel | 负责连接所有部分的核心。它与 AI 模型交互并运行你的指令。 |
| 插件 / 技能 | 类似于助手的应用。例如日历插件或电子邮件插件。 |
| 提示词模板 | 预先编写的指令,用来告诉 AI 如何行动。你提供一些变量,它会补全其余内容。例如:“总结以下内容:{{text}}。” |
| 记忆 | 让助手能够“记住”过去的事情,例如以前的对话或数据。 |
| 规划器 / 编排器 | 如果助手需要执行 5 个步骤才能完成某件事(例如规划旅行),这一部分会确定这些步骤。 |
简单示例
假设你正在使用 Semantic Kernel 构建一个“会议助手”:
- 为它提供一个名为 CalendarSkill 的插件,该插件知道如何读取和创建日历事件
- 编写一条提示词:“安排一次与 John 的 30 分钟会议,时间在下周内。”
- Semantic Kernel 会接收你的提示词,将其发送给 AI(如 ChatGPT),判断意图(“创建事件”),然后运行插件来完成操作
因此,SK = AI(理解语言)+ 工具(执行操作)+ 记忆(记住内容)
Semantic Kernel(SK)与模型上下文协议(MCP)的对比
| 特性 | Semantic Kernel(SK) | 模型上下文协议(MCP) |
|---|---|---|
| 定义 | 用于构建智能 AI Agent 的工具包 / 框架 | 用于向大模型提供工具的标准 / 协议 |
| 创建者 | Microsoft | 开放标准(受 OpenAI 工具调用、Claude 工具使用等工具启发) |
| 主要作用 | 让你将 AI 模型与记忆、工具和提示词连接起来 | 让 AI Agent 通过通用格式与工具交互 |
| 可以理解为 | AI Agent 的大脑 + 逻辑 + 应用商店 | 让工具能够与任何 AI Agent 配合使用的接口 / 插头 |
| 是否具有记忆? | 是,SK 可以存储和回忆内容(例如向量记忆) | 否,它本身不处理记忆 |
| 工具使用 | 你在代码中定义并加载“技能”(函数 / 工具) | 工具以 MCP 服务的形式提供,任何 Agent 都可以连接 |
| 语言侧重 | Python / C# SDK | 与语言无关(侧重格式,而非实现方式) |
| 复杂度 | 更高层的抽象(类似完整工具包) | 更底层的协议(类似线缆格式或规范) |
通信方式
1. 服务器发送事件(SSE)
简而言之: SSE 是一种让服务器通过网络向你的应用发送实时更新的方式。
可以这样理解: 你在咖啡店点了一杯咖啡。你把订单交给咖啡师(一个请求),然后不必一直去查看,只需坐下来放松。饮品准备好后,他们会叫你的名字。
工作原理:
- 客户端发送一次请求
- 服务器保持连接打开
- 有数据时,服务器会以流的形式发送
- 客户端实时接收更新
在 MCP 或 AI 应用中: AI 工具通过 MCP 与工具服务交互时,服务可能会逐步流式传输结果,例如部分答案、令牌或日志。
2. 标准输入/输出(stdio)
简而言之: stdio 是计算机上的命令行工具读取输入和写入输出的方式。
工作原理:
- stdin:你向程序输入或发送数据
- stdout:程序输出结果
- stderr:错误会输出到这里(这样就不会与正常输出混在一起)
在 MCP 中: MCP 服务可以作为命令行程序运行。Agent 通过以下方式与它们交互:
- 将 JSON 输入写入 stdin
- 从 stdout 读取工具的响应
通信方式对比
| 特性 | SSE | stdio |
|---|---|---|
| 类型 | Web 协议 | 本地程序通信 |
| 用途 | 从服务流式传输实时数据 | 与命令行工具或子进程交互 |
| Agent 用法 | MCP 工具作为 Web 服务运行时 | MCP 工具是本地进程时 |
| 连接 | 客户端保持 HTTP 连接处于打开状态 | 输入/输出管道(如运行脚本) |
| 示例 | 实时聊天、从 LLM 流式传输令牌 | 读取提示词并输出答案的 Shell 脚本 |
在 AI 工具中(如 MCP):
- 如果工具部署在 Web 服务器上 → 使用 SSE 流式传输响应
- 如果工具是本地二进制文件/脚本 → 使用 stdio 发送/接收数据
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。