使用说明
远程MCP函数(Python)
公开模型上下文协议工具的Azure函数(Python v2装饰器模型) 用于问候、将片段保存到Azure Blob存储中,并按名称检索它们。 Poetry管理依赖关系,Poe任务协调linting、打字、测试和 包装。
[!重要] 始终部署
src.zip由...制作func pack(或scripts/pack_and_validate.py),不是手工制作的档案,而是如此生成的function.json文件存在。
特性
- MCP工具触发器
hello_mcp,save_snippet,以及get_snippet - MCP工具触发器
hello_mcp,save_snippet,get_snippet,abuseipdb_check_ip,以及abuseipdb_report_ip - blob存储中的片段持久性
snippets/{snippetname}.json - 严格的打字、Ruff格式化/linting和边缘情况的pytest覆盖率
- 打包保护脚本,以确保在部署之前可以发现所需的功能
建筑
| 组件 | 目的 |
|---|---|
| src/function_app.py | 声明 FunctionApp、MCP工具模式,并导入用于发现的函数 |
| src/functions/hello_mcp.py | 返回一个简单的问候语 |
| src/functions/save_spippet.py | 通过输出绑定将代码段内容写入blob存储 |
| src/functions/get_snippet.py | 通过输入绑定按名称读取代码段 |
| scripts/pack_and_validate.py | 运行 func pack 并断言所有预期功能都已注册 |
先决条件
- Python 3.11+和诗歌安装
- PATH上的Azure功能核心工具v4(
func) - 的Azure存储连接字符串
AzureWebJobsStorage - 可选:Azurite用于本地存储模拟
快速入门
-
安装依赖项和工具:
poetry install -
激活虚拟环境(如果您在命令前加上前缀,则可选
poetry run):poetry shell -
配置
AzureWebJobsStorage在src/local.settings.json或者你的壳 环境。 -
从启动Functions主机
src:cd src func start
MCP工具
hello_mcp:返回问候字符串。save_snippet:需要参数snippetname和snippet;将内容写入snippets/{snippetname}.json.get_snippet:期待争论snippetname;返回存储的代码段内容。abuseipdb_check_ip:期待争论ip;查询AbuseIPDB的信誉 数据。abuseipdb_report_ip:需要参数ip,categories,以及comment; 向AbuseIPDB报告虐待行为。
保存代码段的示例有效载荷:
{
"arguments": {
"snippetname": "example",
"snippet": "print('hello')"
}
}
[!注意] MCP触发器上下文被视为JSON字符串;无效的JSON返回 错误消息,而不是写入存储。
测试和质量
- 格式和lint:
poetry run poe lint - 类型检查:
poetry run poe typecheck - 测验:
poetry run poe test - 全套房:
poetry run poe check
打包和部署
-
验证并构建包工件:
python scripts/pack_and_validate.py --source src --output artifacts/pack -
部署生成的
artifacts/pack/src.zip到Azure函数(Flex 消耗量或等效物)。部署后,使用以下命令确认功能:az functionapp function list -n <app> -g <resource-group>
配置
- 存储路径:片段存储在
snippets/{snippetname}.json默认情况下 集装箱。 - 日志记录:通过以下方式启用Application Insights采样
host.json. - 扩展包:用途
Microsoft.Azure.Functions.ExtensionBundle.Experimental版本[4.*, 5.0.0).
[!提示] 如果在读取blob时发生本地解码错误,请确保存储的内容 UTF-8编码。
