Azure Functions 模板服务器

提供多语言Azure Functions模板的MCP服务器,支持C#、Java、Python和TypeScript,用于快速开发和部署。

  • by Azure
  • TypeScript
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 Azure/azure-functions-templates-mcp-server

使用说明

Azure函数创建触发器并绑定MCP服务器

档案通知

[!重要] 此存储库已存档,不再进行主动维护。

此存储库的内容已移动到以下位置:

请使用上面的存储库获取最新更新、正在进行的开发和支持。

概述

一个模型上下文协议(MCP)服务器,提供跨4种编程语言的即用型Azure函数模板,其中71个模板涵盖了所有主要的Azure服务绑定和触发器类型。模板包括完整的项目结构、配置文件,并遵循现代编程模式,以实现快速开发和部署。

目录

特性

多语言支持:C#(.NET隔离)、Java(Maven)、Python(v2模型)、TypeScript(Node.js v4)
完整模板:完整的项目结构,包括依赖关系、配置和最佳实践
现代模式:最新编程模型和Azure Functions运行时功能
丰富的类别:Web API、存储、数据库、流媒体、消息传递、AI/ML、分析
工具集成:内置支持VS Code Copilot、MCP Inspector和AI助手
打包分发:模板嵌入服务器,便于部署和离线使用

先决条件

  • Node.js 18+(建议使用LTS):运行MCP服务器所需
  • npm:包管理器(包含在Node.js中)
  • MCP客户端:例如带有副驾驶的VS Code或MCP检查器
  • Git:用于克隆存储库(如果从源构建)

安装

选项1:从npm安装(推荐)

全局安装已发布的包:

npm install -g azure-functions-templates-mcp-server

或者在项目中本地安装:

npm install azure-functions-templates-mcp-server

验证安装:

验证全局安装

npm list -g azure-functions-templates-mcp-server

或验证本地安装

npm list azure-functions-templates-mcp-server

或者检查可执行文件是否在PATH中可用

which azure-functions-templates-mcp-server

运行烟雾测试以验证安装

npm run smoke

或者运行探针测试

npm run probe

选项2:从源代码构建

# Clone and build from source
git clone https://github.com/Azure/azure-functions-templates-mcp-server.git
cd azure-functions-templates-mcp-server
npm install
npm run build

快速开始

运行服务器

如果全局安装:

azure-functions-templates-mcp-server

如果本地安装:

npx azure-functions-templates-mcp-server

源代码构建:

node dist/src/server.js

这将启动等待MCP客户端连接的stdio MCP服务器。服务器使用stdio传输,从不登录到stdout(保留给MCP协议消息)。错误将转到stderr。

测试服务器

npm run smoke

运行一个简单的测试,使用示例请求调用MCP服务器工具。

与MCP检查器一起使用

这 MCP检查员 是MCP服务器的调试和测试工具。要使用MCP检查器测试此服务器,请执行以下操作:

选项1:使用npm包(推荐)

# If installed globally
npx @modelcontextprotocol/inspector azure-functions-templates-mcp-server

# If installed locally  
npx @modelcontextprotocol/inspector npx azure-functions-templates-mcp-server

选项2:使用源代码构建

# Start the inspector with your built server
npx @modelcontextprotocol/inspector node dist/src/server.js

选项3:全局安装检查器

# Install MCP Inspector globally
npm install -g @modelcontextprotocol/inspector

# Run with npm package
mcp-inspector azure-functions-templates-mcp-server

# Or run with source build
mcp-inspector node dist/src/server.js

检查员将:

  1. 将MCP服务器作为子进程启动
  2. 打开web界面(通常在 http://localhost:5173)
  3. 允许您交互式测试所有可用工具

与VS代码一起使用

您可以通过GitHub Copilot或其他MCP兼容扩展将此MCP服务器与VS Code一起使用。以下是几种方法:

选项1:使用npm包(推荐)

  1. 全局安装软件包:

    npm install -g azure-functions-templates-mcp-server
    
  2. 在VS Code mcp.json设置中配置:

    {
      "servers": {
        "azure-functions-create-triggers-bindings": {
          "type": "stdio",
          "command": "azure-functions-templates-mcp-server"
        }
      }
    }
    

选项2:使用本地npm安装

  1. 在项目中本地安装该包:

    npm install azure-functions-templates-mcp-server
    
  2. 在VS Code mcp.json设置中配置:

    {
      "servers": {
        "azure-functions-create-triggers-bindings": {
          "type": "stdio",
          "command": "npx",
          "args": ["azure-functions-templates-mcp-server"]
        }
      }
    }
    

选项3:使用源代码构建

  1. 从源代码构建项目 (见安装部分)

  2. 在VS Code mcp.json设置中配置:

    {
      "servers": {
        "azure-functions-create-triggers-bindings": {
          "type": "stdio",
          "command": "node",
          "args": ["D:\\path\\to\\azure-functions-templates-mcp-server\\dist\\src\\server.js"]
        }
      }
    }
    

    替换 D:\\path\\to\\azure-functions-templates-mcp-server 使用克隆存储库的实际路径。

提高副副本的可发现性

默认情况下,Copilot可能不会自动使用MCP服务器工具。为确保Copilot在使用Azure Functions时使用此服务器,请添加提示指令文件:

选项A:VS代码提示文件(推荐)

创建 .github/copilot-instructions.md 在您的项目中:

When creating, modifying, or adding Azure Functions code, triggers, or bindings:
1. ALWAYS use the `azure-functions-create-triggers-bindings` MCP server tools
2. Start with `get_languages_list` to see supported languages
3. Call `get_project_template` to get project scaffolding files
4. Call `get_azure_functions_templates_list` to browse available triggers and bindings
5. Call `get_azure_functions_template` to get ready-to-use function code
6. Do NOT write Azure Function code from scratch

选项B:VS代码用户提示文件

在VS Code的用户设置目录中创建一个提示文件:

  • 窗户: %APPDATA%\Code\User\prompts\azure-functions.md
  • macOS: ~/Library/Application Support/Code/User/prompts/azure-functions.md
  • Linux: ~/.config/Code/User/prompts/azure-functions.md
---
applyTo: '**/*.{cs,java,py,ts}'
---
When working with Azure Functions code, use the azure-functions-create-triggers-bindings MCP server.
Start with get_languages_list, then get_project_template, then get_azure_functions_templates_list.
Always fetch templates using get_azure_functions_template instead of writing function code manually.

它提供了什么

Azure Functions模板管理的四个可组合工具:

  1. get_languages_list:获取具有运行时版本和功能的支持语言列表
  2. get_project_template:获取具有可配置运行时参数的项目初始化文件(host.json、package.json、pom.xml等)
  3. get_azure_functions_templates_list:获取特定语言的所有可用功能模板,包括描述和类别
  4. get_azure_functions_template:获取特定功能模板的完整源代码,以及所需的应用程序设置和包

支持的语言和模板:

  • C#(.NET隔离工作器):26个模板,包括HTTP、Blob、计时器、服务总线、Cosmos DB、持久函数、MySQL/SQL绑定、MCP工具和资源触发器
  • Java(基于Maven):15个模板,涵盖核心触发器、绑定、持久函数和基于注释的配置的MCP工具触发器
  • Python(v2编程模型):16个模板使用基于现代装饰器的模式,包括blob处理、数据库触发器、流媒体、AI/ML集成和通用触发器支持
  • TypeScript(Node.js v4):14个模板,具有完整的类型安全性,涵盖存储、数据库、流媒体、MCP集成和实时通信场景

每个模板包括:

  • 完整的功能代码 通过适当的绑定和错误处理
  • 配置文件 (host.json、local.se.json等)
  • 项目文件 (requirements.txt、package.json、.csproj、pom.xml等)
  • 特定语言模式 (Python的装饰器,Java的注释,C#的独立worker)
  • 最佳实践 对于每个运行时和编程模型

模板类别:

  • Web API:REST端点和Webhook的HTTP触发器
  • 存储:Blob触发器/绑定、队列处理
  • 数据库:Cosmos DB、SQL Server、MySQL触发器和绑定
  • 流媒体:用于实时数据处理的事件中心
  • 消息传递:服务总线、事件网格、RabbitMQ集成
  • 调度:使用CRON表达式触发计时器
  • 持久函数:工作流的协调器、活动、实体
  • AI/ML:用于AI助手的模型上下文协议(MCP)工具和资源集成
  • 实时:args用于实时更新和通知

非常适合引导新的Azure Functions项目、学习跨语言模式和快速原型制作。

最新动态

运行时版本参数:添加可选 runtimeVersion 参数到 get_project_template 和 get_azure_functions_template Java和TypeScript的工具。自动替换模板中的版本占位符。
Java 8支持:正确地将Java 8转换为Maven兼容 1.8 格式
模板清单已更新:已将模板列表与实际可用模板同步
语言无关描述:从描述中删除了特定语言的实现细节
一致的类别:跨所有语言的统一模板分类
准确计数:更新了模板计数(C#:26,Java:15,Python:16,TypeScript:14)
清洁文档:改进了描述,以提高工具兼容性(VS代码副本、MCP检查器)
现代模式:反映当前的Azure Functions编程模型和最佳实践

模板结构

此MCP服务器允许跨多种编程语言访问Azure Functions模板。每种语言都遵循现代编程模型和最佳实践:

Python模板(v2编程模型)

HttpTrigger/
├── function_app.py         # Main function code with @app decorators
├── host.json              # Function host configuration
├── local.settings.json    # Local development settings
└── requirements.txt       # Python dependencies

TypeScript模板(Node.js v4模型)

HttpTrigger/
├── src/                   # Source code directory
├── package.json           # Node.js dependencies and scripts
├── tsconfig.json          # TypeScript configuration
├── host.json             # Function host configuration
└── local.settings.json   # Local development settings

Java模板(基于Maven)

HttpTrigger/
├── pom.xml               # Maven configuration and dependencies
├── host.json             # Function host configuration
├── local.settings.json   # Local development settings
└── src/                  # Java source code with annotations
    └── main/
        └── java/

C#模板(.NET独立工作器)

HttpTrigger/
├── HttpTriggerCSharp.cs  # Main function code (isolated worker)
└── .template.config/     # Template metadata for tooling
    ├── template.json     # Template definition
    └── vs-2017.3.host.json # Visual Studio configuration

项目脚本

  • npm run build:将TypeScript编译为 dist/
  • npm start:运行已编译的服务器(dist/src/server.js)
  • npm run smoke:带有示例模板请求的测试服务器
  • npm run dev:使用ts节点运行(用于快速迭代)
  • npm run probe:服务器的简单健康检查

目录结构

  • src/server.ts --MCP服务器实现
  • templates/ --Azure功能模板(与服务器打包)
  • dist/ --编译的JavaScript输出
  • tools/smoke.mjs --简单测试客户端

使用示例

工作流:创建新的Azure函数项目

这些工具被设计为按顺序使用:

  1. 发现语言 → get_languages_list
  2. 初始化项目 → get_project_template (带运行时参数)
  3. 浏览模板 → get_azure_functions_templates_list
  4. 添加功能 → get_azure_functions_template (具有所需设置)

发现可用语言

获取支持的语言:

Tool: get_languages_list

返回所有支持的语言,包括运行时详细信息、编程模型和模板计数。

初始化项目

获取Python的项目文件:

Tool: get_project_template
Language: python

获取特定Node.js版本的TypeScript项目文件:

Tool: get_project_template
Language: typescript
runtimeVersion: "20"

获取特定Java版本的Java项目文件:

Tool: get_project_template
Language: java
runtimeVersion: "21"

返回所有应用了指定运行时参数的项目初始化文件(host.json、requirements.txt、package.json、pom.xml等)。

按语言探索模板

获取特定语言的模板:

Tool: get_azure_functions_templates_list
Language: python

返回所有带有描述、类别和用例的Python模板。

获取函数模板

获取完整的函数模板:

Tool: get_azure_functions_template
Language: python
Template: HttpTrigger

返回函数源代码,以及任何必需的应用程序设置和其他包。

特定语言示例

获取特定JDK版本的Java Cosmos DB触发器:

Tool: get_azure_functions_template
Language: java
Template: CosmosDBTrigger
runtimeVersion: "17"

获取C#持久函数编排:

Tool: get_azure_functions_template
Language: csharp
Template: DurableFunctionsOrchestration

获取特定Node.js版本的TypeScript Blob触发器:

Tool: get_azure_functions_template
Language: typescript
Template: BlobTrigger
runtimeVersion: "22"

故障排除

常见问题

服务器未启动

  • 问题:找不到命令或服务器无法启动
  • 解决方案:
    • 验证安装: npm list -g azure-functions-templates-mcp-server
    • 如有需要,请重新安装: npm install -g azure-functions-templates-mcp-server
    • 检查Node.js版本: node --version (要求18+)

MCP客户端中没有可用的工具

  • 问题:MCP客户端不显示Azure功能工具
  • 解决方案:
    • 验证MCP客户端设置中的服务器配置
    • 检查客户端配置中的路径是否为绝对路径
    • 确保 npm run build 如果从源构建成功
    • 首先与MCP检查员进行测试: npx @modelcontextprotocol/inspector azure-functions-templates-mcp-server

模板检索错误

  • 问题:请求模板时出错
  • 解决方案:
    • 验证语言参数是否为以下之一: csharp, java, python, typescript
    • 检查模板名称是否完全匹配(区分大小写)
    • 使用 get_azure_functions_templates_list 查看有效的模板名称

性能问题

  • 问题:响应时间慢
  • 解决方案:
    • 模板与服务器打包在一起,以便快速访问
    • 使用 get_azure_functions_template 只需获取所需的函数代码
    • 项目文件通过以下方式单独获取 get_project_template

调试模式

运行烟雾测试以验证功能:

npm run smoke

使用MCP检查器进行交互式调试:

npx @modelcontextprotocol/inspector azure-functions-templates-mcp-server

支持

贡献

我们欢迎捐款!请参阅 贡献.md 作为指导方针。

贡献者快速入门

git clone https://github.com/Azure/azure-functions-templates-mcp-server.git
cd azure-functions-templates-mcp-server
npm install
npm run build
npm test

开发说明

  • 预留标准:从不添加 console.log 声明;stdout保留用于MCP协议消息
  • 错误处理:所有错误都转到stderr,工具错误使用 isError: true 旗帜
  • 模板打包:模板嵌入包中以供脱机使用
  • 协议遵从:服务器正确实现MCP规范

许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。