article
README
🚀 Microsoft Copilot Studio 中的 Jokes MCP 服务器详解
本实验将帮助您在 Microsoft Copilot Studio 中设置 Jokes MCP Server,与 Copilot 交互获取笑话,并深入理解 MCP 服务器在 Copilot Studio 中的工作原理。通过完成实验,您可以在 Copilot Studio 集成并运行 Jokes MCP Server,还能使用不同命令从多个来源获取各类笑话。
🚀 快速开始
实验目标
本实验将指导您完成以下步骤:
- 在 Microsoft Copilot Studio 中设置 Jokes MCP Server
- 与 Copilot 进行交互以获取笑话
- 理解 MCP 服务器如何在 Copilot Studio 中工作
通过本实验,您将能够:
- 在 Copilot Studio 中集成并运行 Jokes MCP Server
- 使用不同的命令从多个来源获取笑话(包括 Chuck Norris、爸爸和妈妈的笑话)
实验环境
基础要求
- Copilot Studio:需要 Microsoft 365 或 Visual Studio 订阅
- Jokes MCP Server:基于 TypeScript SDK 构建
推荐工具
- Node.js 和 npm:用于运行和构建服务器
- Git:用于代码版本控制
📦 安装指南
实验步骤
第一部分:在 Copilot Studio 中设置 Jokes MCP 服务器
步骤 1:创建新实验
- 打开 Microsoft Copilot Studio。
- 点击“新建实验”按钮,选择一个空白项目。
步骤 2:集成 Jokes MCP Server
- 在实验中添加一个新的模块,命名为
jokes-mcp-server。 - 将以下代码粘贴到该模块的编辑器中:
// jokes-mcp-server.ts
import { Agent } from '@modelcontextprotocol/typescript-sdk';
const agent = new Agent();
agent.on('input', async (input) => {
if (input.toLowerCase().includes('chuck norris')) {
return getChuckNorrisJoke();
} else if (input.toLowerCase().includes('dad joke')) {
return getDadJoke();
} else if (input.toLowerCase().includes('yo mama')) {
return getYoMamaJoke();
}
});
async function getChuckNorrisJoke() {
// 实现从 chucknorris.io 获取笑话的逻辑
}
async function getDadJoke() {
// 实现从 icanhazdadjoke.com 获取笑话的逻辑
}
async function getYoMamaJoke() {
// 实现从 yomama-jokes.com 获取笑话的逻辑
}
步骤 3:配置 MCP 代理
- 在 Copilot Studio 中,导航到“设置” > “模型和代理”。
- 添加一个新的代理,指定为
jokes-mcp-server模块。
💻 使用示例
基础用法
第二部分:测试 Jokes MCP 服务器
测试命令
在 Copilot Studio 的聊天界面中输入以下内容:
- Chuck Norris 笑话
/get-chuck-joke
- 爸爸笑话
/get-dad-joke
- Yo Mama 笑话
/get-yo-mama-joke
预期输出
- Chuck Norris 笑话示例:
“为什么 Chuck Norris 不需要 GPS?因为他知道每个方向都是他的名字。”
- 爸爸笑话示例:
“为什么数学书总是很悲伤?因为它有太多的问题!”
- Yo Mama 笑话示例:
“为什么 Yo Mama 的聚会总是很安静?因为她只邀请了她自己和她的影子!”
高级用法
第三部分:高级功能
步骤 1:查看笑话来源
输入以下命令以获取所有可用的笑话来源:
/sources
步骤 2:自定义笑话来源
- 在
jokes-mcp-server.ts中添加新的笑话源。 - 更新代理配置以支持新的来源。
示例:添加“猫狗”笑话源
// jokes-mcp-server.ts
async function getCatDogJoke() {
// 实现从 catdog-jokes.com 获取笑话的逻辑
}
🔧 技术细节
第四部分:故障排除和优化
常见问题
-
无法获取笑话
- 检查网络连接。
- 确保目标笑话网站没有限制访问。
-
错误信息
- 查看控制台日志以获取详细错误信息。
- 确保所有 API 请求都已正确实现。
性能优化
- 添加错误处理:
async function getChuckNorrisJoke() {
try {
// 获取笑话的逻辑
} catch (error) {
console.error('获取 Chuck Norris 笑话时出错:', error);
return '抱歉,无法获取当前笑话。';
}
}
- 实现缓存机制以提高性能:
let lastChuckJoke: string | null = null;
async function getChuckNorrisJoke() {
if (lastChuckJoke) return lastChuckJoke;
// 获取新笑话并更新 lastChuckJoke
}
📚 详细文档
附加信息
工具和资源
- Node.js 和 npm:用于运行和构建服务器。
- Git:用于代码版本控制。
已知问题和改进计划
-
当前限制
- 目前仅支持三个笑话来源。
- 笑话数量有限,建议定期更新内容。
-
未来改进
- 添加更多笑话来源(如程序员、学校等)。
- 实现笑话分类和过滤功能。
贡献指南
-
如何贡献代码
- 提交拉取请求到
jokes-mcp-server仓库。 - 确保代码符合 TypeScript 标准。
- 提交拉取请求到
-
如何报告问题
- 在 GitHub 仓库中创建新议题。
- 提供详细错误信息和复现步骤。
📄 许可证
- 本指南中的所有内容均受 Microsoft 许可协议约束。
- 笔记本代码和文档版权归作者所有,转载请注明出处。
商标信息
- Microsoft、Copilot Studio 和相关徽标是微软公司的注册商标。
扫码联系在线客服