OliOlli MCP服务器
🚀 增强型MCP服务器 -Microsoft Copilot Studio MCP模板的高级实现,为企业AI助手升级了全面的笑话和天气功能。
🎥 现场演示
请参阅OliOlli MCP服务器与Microsoft Copilot Studio集成的运行情况: 🎬 在YouTube上观看完整演示→
📺 视频展示:天气预报、笑话集成和智能参数启发在Microsoft Copilot Studio中实时工作
�🌟 是什么让这个特别?
此服务器基于 微软复制品工作室❤️ 主控程序 模板,但通过以下方式得到了显著增强:
- 🎭 完成Joke API集成 -Chuck Norris的笑话分类+爸爸的笑话
- 🌤️ 高级气象服务 -实时条件、历史数据和预测
- 🤖 复杂的参数提取 -智能对话提示与Zod验证
- 🔧 生产就绪基础设施 -带有环境变量的Azure容器应用部署
- 📚 企业文档 -Copilot Studio和Claude Desktop的完整集成指南
- ✅ 综合测试套件 -本地和Azure部署的自动验证
基于: Microsoft Copilot Studio MCP模板 -针对真实企业场景进行了增强
❓ 什么是MCP?
模型上下文协议(MCP) 是一种开放协议,规范了应用程序如何向LLM提供上下文,由 Anthropic.MCP提供了一种将AI模型连接到不同数据源和工具的标准化方法。MCP允许制造商将现有的知识服务器和API无缝集成到Copilot Studio中。
目前,Copilot Studio仅支持工具。要了解有关当前功能的更多信息,请参阅 aka.ms/mcsmcp存在一些已知问题和计划中的改进。这些已列出 这里.
🆚 模板与增强实施
Microsoft的基本模板 提供了基本的MCP结构和Copilot Studio集成模式。
OliOlli增强 添加了生产就绪功能:
- ✅ 真正的API集成 (WeatherAPI.com,Chuck Norris API,Dad Jokes API)
- ✅ 智能参数处理 通过对话启发
- ✅ 企业错误处理 和验证
- ✅ Azure生产部署 有环境变量
- ✅ 综合文档 和测试套件
🎯 增强功能
🎭 笑话工具
- 查克·诺里斯的笑话:随机笑话和特定类别的笑话
- 老爸笑话:来自icanhazdadjoke.com的随机爸爸笑话
- 分类:获取Chuck Norris笑话类别
🌤️ 天气工具
- 当前天气:实时天气状况
- 天气历史:历史天气数据
- 天气预报:多日天气预报
⚙️ 先决条件
- 已安装Visual Studio代码(链接)
- Git已安装(链接)
- Docker已安装(链接)
- 已安装Azure Developer CLI(链接)
- Azure订阅(已添加付款方式)
- GitHub账号
- Copilot Studio试用版或开发人员帐户
- 天气API关键 从 WeatherAPI.com (免费版可用)
🚀 快速入门指南
选项1:直接使用此增强型服务器
- 克隆此存储库:
git clone https://github.com/ushakrishnan/OliOlli-ChitChat-MCP.git
cd OliOlli-ChitChat-MCP- 设置环境:
npm install
echo "WEATHER_API_KEY=your_api_key_here" > .env> ⚠️ 安全说明:永远不要承诺你的 .env 文件或API密钥。这 .env 文件已在 .gitignore 为了防止这种情况发生。
- 在本地运行 或 部署到Azure (见下文各节)
选项2:从Microsoft模板开始并添加增强功能
如果你想自己构建这个增强功能:
选项2:从Microsoft模板开始并添加增强功能
如果你想自己构建这个增强功能:
- 从Microsoft的模板开始:
- 首选 微软的MCP模板 - 点击 Use this template → Create a new repository - 按照基本设置说明进行操作
- 添加此仓库中的增强功能:
- 复制增强版 src/server.ts 与天气和笑话集成 - 添加 tests/ 用于综合测试的文件夹 - 更新 infra/resources.bicep 有环境变量 - 复制 docs/ 包含详细集成指南的文件夹
🏃♀️ 在本地运行
- 跑
npm install
├── docs/#文档1。跑 npm run build && npm run start
├── dist/#编译输出
- 跑
npm run build && npm run start
Terminal view after building and starting the server
- 选择
PORTS位于Visual Studio代码终端的顶部
Image of VS Code where the terminal is open and the PORTS tab is highlighted
- 选择绿色
Forward a Port按钮
Image of VS Code where the PORTS tab is open and the green button is highlighted
- 进入
3000作为端口号(这应该与您在步骤5中运行命令时看到的端口号相同)。您可能会被提示登录GitHub,如果是这样,请这样做,因为这是使用端口转发功能所必需的。
- 右键单击刚刚添加的行并选择
Port visibility>Public使服务器公开可用
- 按住Ctrl键并单击
Forwarded address,应该类似于:https://something-3000.something.devtunnels.ms
- 选择
Copy在以下弹出窗口中复制URL
View of the PORTS setup with highlighted the port, the forwarded address and the visibility
- 打开您选择的浏览器,将URL粘贴到地址栏中,键入
/mcp在它后面按下回车键
如果一切顺利,您将看到以下错误消息:
{"jsonrpc":"2.0","error":{"code":-32000,"message":"Method not allowed."},"id":null}别担心,这个错误消息没什么好担心的!
🌎 部署到Azure
\[!重要\] 如所列 先决条件,the Azure开发者命令行界面 需要在您的机器上安装此部件。
如果您尚未登录Azure Developer CLI,请确保登录。
azd auth login将Weather API键设置为环境变量:
# Windows (PowerShell)
$env:WEATHER_API_KEY="your_api_key_here"
# Linux/Mac
export WEATHER_API_KEY="your_api_key_here"\[!警告\]\ 运行后azd up,您将在Azure上运行一个公开可用的MCP服务器。理想情况下,你不希望这样。一定要跑azd down完成实验室后,从Azure订阅中删除所有资源。学习如何跑步azd down通过前往 本节.
在终端中运行以下命令:
azd up对于唯一的环境名称,请输入 mcsmcplab 或者类似的东西。选择要使用的Azure订阅,并为该位置选择一个值。之后,部署服务器需要几分钟的时间。完成后,您应该能够转到末尾列出的URL并添加 /mcp 到该URL的末尾。
您应该再次看到以下错误:
{"jsonrpc":"2.0","error":{"code":-32000,"message":"Method not allowed."},"id":null}项目结构
OliOlli/
├── src/
│ └── server.ts # Main MCP server
├── infra/ # Azure infrastructure (Bicep)
├── tests/ # Test scripts
├── docs/ # Documentation
├── dist/ # Compiled output
├── azure.yaml # Azure Developer CLI config
├── package.json # Dependencies
├── tsconfig.json # TypeScript config
├── Dockerfile # Container configuration
└── .env # Environment variablesAPI终点
POST /mcp-MCP协议端点GET /health-健康检查
可用工具
| 工具 | 说明 | 参数 |
|---|---|---|
get-chuck-joke | 随机Chuck Norris笑话 | 无 |
get-chuck-joke-by-category | Chuck Norris的笑话分类 | category (字符串) |
get-chuck-categories | 列出笑话类别 | 无 |
get-dad-joke | 随机爸爸笑话 | 没有 |
get-current-weather | 当前天气 | location (字符串) |
get-weather-history | 历史天气 | location (字符串), date (年-月-日) |
get-weather-forecast | 天气预报 | location (字符串), days (1-10,默认值:3) |
测试
从运行测试脚本 tests/ 文件夹:
# Test weather functionality
node tests/test-weather.js
# Test parameter elicitation
node tests/test-elicitation.js整合
Copilot工作室
使用已部署的服务器终结点:
地方发展: https://your-devtunnel-url.devtunnels.ms/mcp\ Azure部署: https://your-app-name.azurecontainerapps.io/mcp
Claude桌面版
请参阅中的综合集成指南 docs/COPILOT_STUDIO_GUIDE.md
GitHub副本(VS代码)
请参阅中的集成说明 docs/ 文件夹,逐步设置。
� 基础模板的主要增强功能
此实现演示 生产就绪的MCP图案:
| 增强 | 描述 | 文件 |
|---|---|---|
| 真正的API集成 | 来自WeatherAPI.com的实时天气数据 | src/server.ts |
| 参数提取 | Zod验证的对话提示 | src/server.ts |
| 智能错误处理 | 通过用户友好的消息显示优雅的失败 | src/server.ts |
| Azure环境变量 | 安全的API密钥管理 | infra/resources.bicep |
| 综合测试 | 本地和Azure验证脚本 | tests/ 文件夹 |
| 企业文档 | 复制粘贴就绪集成指南 | docs/ 文件夹 |
| 签名筛选 | 绕过Copilot Studio内容过滤器 | src/server.ts |
👨💻 使用增强型MCP服务器
在Visual Studio代码/GitHub副本中
这个增强的服务器提供了7个生产就绪工具(4个笑话工具+3个天气工具),具有智能参数启发功能。
安装说明:
- 按下其中之一
ctrl+shift+P(Windows/Linux)或cmd+shift+P(Mac)和类型MCP
- 选择
MCP: Add Server...
- 选择
HTTP (HTTP or Server-Sent Events)
- 将服务器的URL粘贴到输入框中(确保
/mcp最后包括在内)
- 按
Enter
- 例如,输入服务器的名称
JokesMCP
- 选择
User Settings将MCP服务器设置保存在用户设置中
这将向您的 settings.json 文件。它应该看起来像这样: settings.json file
- 打开
GitHub Copilot
- 从……转变
Ask到Agent
- 确保
JokesMCP选择工具图标时,将选择服务器操作:
- 问以下问题:
Get a chuck norris joke from the Dev category这应该会给你这样的回应:
现在您已经添加了增强 OliOlli MCP 服务器到Visual Studio代码!
在Microsoft Copilot Studio中
增强的服务器包括用于Copilot Studio集成的企业就绪功能。
导入连接器
- 首选https://make.preview.powerapps.com/customconnectors(确保您处于正确的环境中)然后单击 +新的自定义连接器.
- 选择
Import from GitHub
- 选择
Custom作为 连接器类型
- 选择
dev随着 分支
- 选择
MCP-Streamable-HTTP随着 连接器
- 选择
Continue
- 更改 连接器名称 适当的东西,比如
Jokes MCP
- 更改 描述 适当的东西
- 粘贴您的根URL(例如
something-3000.something.devtunnels.ms或something.azurecontainerapps.io)在 主机 领域
- 选择 创建连接器
\[!警告\]\ 您可能会在创建时看到警告和错误——它应该很快就会得到解决——但您现在可以忽略它。
- 关闭连接器
创建代理并将MCP服务器添加为工具
- 首选https://copilotstudio.preview.microsoft.com/
- 选择右上角的环境选择器
- 选择正确的环境(
Get new features early开关已打开)
- 选择
Create在左侧导航中
- 选择蓝色
New agent按钮
- 选择
Configure左侧的选项卡
- 将名称更改为
Jokester
- 添加以下内容
Description
A humor-focused agent that delivers concise, engaging jokes only upon user request, adapting its style to match the user's tone and preferences. It remains in character, avoids repetition, and filters out offensive content to ensure a consistently appropriate and witty experience.- 添加以下内容
Instructions
You are a joke-telling assistant. Your sole purpose is to deliver appropriate, clever, and engaging jokes upon request. Follow these rules:
* Respond only when the user asks for a joke or something related (e.g., "Tell me something funny").
* Match the tone and humor preference of the user based on their input—clean, dark, dry, pun-based, dad jokes, etc.
* Never break character or provide information unrelated to humor.
* Keep jokes concise and clearly formatted.
* Avoid offensive, discriminatory, or NSFW content.
* When unsure about humor preference, default to a clever and universally appropriate joke.
* Do not repeat jokes within the same session.
* Avoid explaining the joke unless explicitly asked.
* Be responsive, witty, and quick.- 选择
Continue在右上角
Click continue to create agent
- 启用生成式人工智能
Orchestration
- 禁用一般知识
Knowledge章节
- 选择
Tools在顶部菜单中
- 选择
Add a tool
- 选择
Model Context Protocol选项卡,用于过滤所有模型上下文协议服务器(请参阅下面屏幕截图中的数字1)
- 选择
Jokes MCP服务器(见下图中的数字2)
- 通过选择以下选项创建新连接
Not connected和 创建新连接
- 选择
Create
- 选择
Add to agent将工具添加到代理中
- 选择
refresh icon在Test your agent窗格
- 在
Test your agent窗格发送以下消息:
Can I get a Chuck Norris joke?这将向您显示运行此操作需要额外权限的消息。这是因为操作向导中的用户身份验证。
- 选择
Connect
这将打开一个新窗口,您可以在其中管理此代理的连接。
- 选择
Connect旁边的JokesMCP
- 等待连接创建,然后选择
Submit
- 连接现在应该已连接,因此状态应设置为
Connected
- 关闭浏览器中的“管理连接”选项卡
现在你应该回到小丑特工屏幕了。
- 选择
refresh icon在Test your agent窗格
- 在
Test your agent窗格发送以下消息:
Can I get a Chuck Norris joke?现在,这将显示Chuck Norris的笑话,而不是额外的权限。如果不是这样,你可能错过了 先决条件 环境需要 get new features early 打开。
- 在
Test your agent窗格发送以下消息:
Can I get a Dad joke?这将展示一个爸爸的笑话。
这就是在微软Copilot Studio中工作的笑话MCP服务器。
❌ 删除Azure资源
要在完成实验室后删除Azure资源,请在终端中运行以下命令:
azd down此命令将显示将要删除的资源,然后要求您确认。与……确认 y 并且资源将被删除。这可能需要几分钟,但最后你会看到一个确认:
💡 已知问题和计划改进
Microsoft Copilot Studio中的MCP存在一些已知问题和计划改进。它们列在 这篇Microsoft学习文章.
🗣️ 反馈
希望你喜欢这个实验室。请花时间填写我们的 反馈表 告诉我们如何改进!
🚀 贡献
该项目欢迎各方提供意见和建议。大多数捐款要求您同意 贡献者许可协议(CLA)声明您有权并实际授予我们 使用您贡献的权利。有关详细信息,请访问https://cla.opensource.microsoft.com.
当您提交拉取请求时,CLA机器人将自动确定您是否需要提供 CLA并适当地装饰PR(例如,状态检查、评论)。只需按照说明进行操作 由机器人提供。您只需使用我们的CLA在所有存储库中执行一次此操作。
该项目采用了 微软开源行为准则. 有关更多信息,请参阅 行为准则常见问题 或 联系 opencode@microsoft.com 如有任何其他问题或意见。
™️ 商标
此项目可能包含项目、产品或服务的商标或徽标。授权使用Microsoft 商标或徽标必须遵守 微软商标和品牌指南. 在本项目的修改版本中使用Microsoft商标或徽标不得造成混淆或暗示Microsoft赞助。 任何使用第三方商标或徽标的行为均受这些第三方政策的约束。
