Azure功能笔记MCP服务器
基于Azure Functions的MCP(模型上下文协议)服务器实现,用于管理笔记和相关功能。本项目演示了如何使用Azure Functions构建MCP服务器,以云原生方式遵循最佳实践。
______________________________________________________________________
特性
- MCP协议支持:实现模型上下文协议,与GitHub Copilot Chat和其他支持MCP的客户端无缝集成
- Azure功能:建立在。NET 8.0使用最新的Azure Functions运行时
- 基础设施即代码:使用二头肌模板完成基础设施定义
- Azure集成:与Azure服务集成,包括用于监控的应用程序洞察
- 基于角色的访问控制(RBAC):各种Azure资源的访问控制
MCP工具
服务器提供以下MCP工具用于笔记管理:
| 工具名称 | 描述 |
|---|---|
save_note | 保存带有标题、类别、标签和内容的注释。用于任何类型的笔记:会议、任务、想法、代码片段、提醒等。 |
get_note | 按标题检索注释 |
list_notes | 列出所有已保存的笔记及其标题和类别 |
search_notes | 按标签或类别搜索笔记 |
delete_note | 按标题删除注释 |
工具属性
- save_note:
- title (必填):注释的标题或标识符 - category:注释的类别(例如,会议、任务、想法、代码片段、提醒) - tags:逗号分隔的标签用于组织注释 - content (必填):说明的主要内容
- get_note:
- title (必填):要检索的注释的标题
- search_notes:
- query:标签或类别的搜索查询
- delete_note:
- title (必填):要删除的注释标题
______________________________________________________________________
先决条件
对于当地发展:
- Azure开发者命令行界面(azd)
- .NET 8.0 SDK
- Azure功能核心工具
- Azure 订阅
- Visual Studio代码(推荐),包括:
- C#开发工具包扩展 - Azure功能扩展 - 二头肌伸展
______________________________________________________________________
入门指南
地方发展
- 克隆存储库:
git clone
cd azure-functions-mcp-server- 安装依赖项:
dotnet restore- 配置本地设置:
- 复制
local.settings.sample.json到local.settings.json
- 在本地运行项目:
cd NotesMcp
func start与VS Code和GitHub Copilot一起使用
要在VS Code中使用MCP工具,您需要在工作区中配置MCP端点。创建一个 .vscode/mcp.json 根据您的环境配置文件:
地方发展
在本地运行Function App时:
{
"servers": {
"notes-mcp": {
"type": "http",
"url": "http://localhost:7071/runtime/webhooks/mcp"
}
}
}部署
该项目使用Azure Developer CLI(azd)
部署到Azure
- 初始化环境:
azd init- 登录到Azure:
azd auth login- 提供和部署:
azd up此命令将:
- 创建所需的Azure资源
- 部署应用程序代码
- 设置配置
- 输出功能应用程序URL
要删除所有资源,请执行以下操作:
azd down --purge部署后的使用情况
在Azure中使用已部署的Function App时 mcp.json 客户端看起来像这样:
{
"inputs": [
{
"type": "promptString",
"id": "function-key",
"description": "Azure Function App Key",
"password": true
}
],
"servers": {
"notes-mcp": {
"type": "http",
"url": "https:///runtime/webhooks/mcp", //See Function App URL
"headers": {
"x-functions-key": "${input:function-key}"
}
}
}
}例子
- 保存笔记
- 选择要保存在VS Code中的文本 - 打开GitHub Copilot聊天 - 切换到代理模式(单击机器人图标) - 键入以下命令:
Save this selected text as a note titled "git-commands" with category "code-snippet" and tags "git,commands,reference"这将调用 save_note 工具将您选择的文本作为内容。
- 检索笔记
- 在GitHub Copilot Chat(代理模式)中,键入:
Get the note with title "git-commands"这将使用 get_note 提取和显示笔记的工具。
- 列出所有笔记
- 在GitHub Copilot Chat(代理模式)中,键入:
List all my saved notes这将使用 list_notes 显示所有已保存笔记的工具。
- 搜索笔记
- 在GitHub Copilot Chat(代理模式)中,键入:
Search for notes with tag "git"这将使用 search_notes 查找相关笔记的工具。
- 删除注释
- 在GitHub Copilot Chat(代理模式)中,键入:
Delete my note called git-commands这将使用 delete_note 删除注释的工具。
- 列出所有注释(验证)
- 在GitHub Copilot Chat(代理模式)中,键入:
List all my saved notes这将使用 list_notes 显示所有已保存笔记的工具。验证删除后是否不再保存任何内容。
______________________________________________________________________
基础设施
该项目使用二头肌作为基础设施代码,包含以下组件:
main.bicep:主要基础设施模板app/api.bicep:API相关资源app/monitoring.bicep:使用Application Insights进行监控设置rbac/:基于角色的访问控制定义
- appinsights-access.bicep - storage-access.bicep
______________________________________________________________________
指导方针和最佳实践
区域可用性
Azure功能应用程序可用性(包括Flex消费)因地区而异,请验证可用性 这里.
为相关资源(功能应用程序、存储帐户)选择相同的区域,以减少延迟和出口成本。 西欧 如果你在欧洲或欧洲附近,这是一个很好的违约。
成本因素
使用以下方法估算成本 Azure定价计算器主要成本驱动因素:
- Azure功能-消耗或Flex层(调用、内存/时间)
- 存储账户——容量和交易
提示:在生产之前,在订阅中启用成本警报,并在沙盒订阅中测试工作负载。
安全
此项目使用 用户分配的托管身份 用于Azure资源之间的身份验证。
Function App被分配了以下RBAC角色:
- 存储Blob数据所有者
- 应用洞察监控指标发布商
在生产环境中使用时,强烈建议采取以下措施:
- 使用专用终结点+ExpressRoute集成限制入站流量
- 在适用的情况下使用服务端点+防火墙规则
______________________________________________________________________
贡献
- 分叉存储库
- 创建要素分支
- 提交您的更改
- 推到分支
- 创建拉取请求
______________________________________________________________________
