Token导航 LogoToken导航TokenDH.com
MCP Server Function logo
AI代理未说明官方级别未说明来源级核验

MCP Server Function

MCP Server

基于Azure Functions实现的MCP协议服务器,支持与符合MCP标准的语言模型交互,提供自定义业务操作和API代理功能。

工具数

5

提示词数

0

GitHub Stars

0

资源数

0
C#API代理AI代理

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

katarinasvedman

提供方

katarinasvedman

最后核验

2026/5/17 20:19

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

MCP服务器Azure功能

使用Azure Functions和的模型上下文协议(MCP)服务器实现。NET 8.0隔离工作者模型。

概述

此项目将模型上下文协议(MCP)服务器实现为Azure函数,实现了与支持MCP标准的语言模型的交互。该实现使用Azure Functions v4隔离的worker模型,该模型提供了更好的性能、可扩展性和与的兼容性。网8。

特性

  • 实施MCP协议操作:

- list_operations:标准MCP操作,列出所有可用操作 - get_openapi_spec:提供API文件的标准MCP操作 - getBusinessData:检索业务指标和数据的自定义操作 - triggerLogicApp:触发Azure逻辑应用程序的自定义操作 - callInternalApi:将请求代理到内部API的自定义操作

  • 基于Azure Functions v4构建,具有隔离的工作进程
  • 使用。NET 8.0,以提高性能和功能
  • 结构化错误处理和日志记录
  • 使用System进行JSON序列化。文本。JSON
  • 使用二头肌模板的基础设施即代码(IaC)

先决条件

设置和配置

地方发展设置

  1. 克隆存储库
  1. 配置本地设置

local.se.json文件包含在本地运行函数所需的配置。确保它包括:

   {
       "IsEncrypted": false,
       "Values": {
           "AzureWebJobsStorage": "UseDevelopmentStorage=true",
           "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated",
           "DOTNET_ISOLATE_TIMEOUT_SECONDS": "60",
           "LOGIC_APP_ENDPOINT": "https://prod-12.eastus.logic.azure.com:443/workflows/your-logic-app-id",
           "INTERNAL_API_BASE_URL": "https://api.internal.company.com",
           "INTERNAL_API_KEY": "your-api-key-here",
           "MCP_AUTH_ENABLED": "false",
           "MCP_ALLOWED_OPERATIONS": "getBusinessData,triggerLogicApp,callInternalApi,list_operations,get_openapi_spec"
       }
   }
  1. 安装依赖项
   dotnet restore

本地运行

  1. 启动该功能
   func start

该功能将在 http://localhost:7071/api/MCPFunction

  1. 停止该功能

Ctrl+C 在运行该功能的终端中,或 使用以下命令查找PID netstat -ano | findstr :7071 | findstr LISTENING 然后杀了它 taskkill /F /PID

测试

使用JSON文件进行本地测试

该项目包括测试JSON文件,以帮助验证MCP服务器功能:

  1. 测试列表_操作

使用 test-list-operations.json 用于测试标准MCP操作的文件,其中列出了所有可用操作:

   curl -X POST http://localhost:7071/api/MCPFunction -H "Content-Type: application/json" -d @test-list-operations.json
  1. 测试getBusinessData

使用 test-business-data.json 用于测试检索业务数据的文件:

   curl -X POST http://localhost:7071/api/MCPFunction -H "Content-Type: application/json" -d @test-business-data.json
  1. 测试其他操作

您可以按照MCP协议格式为其他操作创建其他测试文件:

   {
     "requestId": "unique-request-id",
     "messageType": "invoke",
     "invokeRequest": {
       "operation": "operationName",
       "parameters": {
         "param1": "value1",
         "param2": "value2"
       }
     }
   }

使用功能键测试已部署的功能

在测试部署到Azure的函数时,您需要在请求中包含函数键:

  1. 在curl请求中使用功能键
   curl -X POST https://your-function-app.azurewebsites.net/api/MCPFunction \
     -H "Content-Type: application/json" \
     -H "x-functions-key: YOUR_FUNCTION_KEY" \
     -d @test-list-operations.json
  1. 替代方案:使用功能键作为查询参数
   curl -X POST "https://your-function-app.azurewebsites.net/api/MCPFunction?code=YOUR_FUNCTION_KEY" \
     -H "Content-Type: application/json" \
     -d @test-list-operations.json
  1. 使用Postman进行测试

- 向您的函数URL创建新的POST请求 - 添加一个 x-functions-key 带有功能键的标题 - 设置 Content-Type 标题到 application/json - 以JSON格式添加MCP请求体 - 发送请求并检查响应

部署到Azure

使用二头肌进行部署(推荐)

此项目包括用于基础架构即代码部署的二头肌模板,遵循Azure最佳实践。

  1. 导航到基础结构目录
   cd infra
  1. 部署到特定的Azure区域(例如瑞典中部)
   # Create resource group (if it doesn't exist)
   az group create --name rg-mcp-function --location swedencentral

   # Validate the deployment with what-if operation (recommended practice)
   az deployment group what-if --name mcp-server-deployment --resource-group rg-mcp-function --template-file main.bicep --parameters main.parameters.json

   # Deploy the infrastructure
   az deployment group create --name mcp-server-deployment --resource-group rg-mcp-function --template-file main.bicep --parameters main.parameters.json
  1. 将功能代码部署到创建的功能应用程序
   # Build the project for release
   dotnet publish -c Release

   # Deploy to Azure Function App (replace FUNCTION_APP_NAME with your deployed function app name)
   func azure functionapp publish FUNCTION_APP_NAME --dotnet-isolated
  1. 检索功能键进行测试
   # List function keys
   az functionapp function keys list --name FUNCTION_APP_NAME --resource-group rg-mcp-function --function-name MCPFunction

二头肌模板细节

二头肌模板(main.bicep)包括:

  • 功能应用程序。NET 8.0隔离工作运行时
  • 应用服务计划(消费或专用)
  • 功能执行存储帐户
  • 监控应用洞察
  • 日志分析工作区
  • 用户分配的托管身份用于安全身份验证

可定制的关键参数:

  • location:用于部署的Azure区域(默认:swedencentral)
  • environmentName:资源的名称前缀
  • appServicePlanSku:应用服务计划的SKU(Y1、B1、S1)
  • mcpAuthEnabled:是否启用MCP身份验证
  • mcpAllowedOperations:逗号分隔的允许操作列表

使用Azure CLI进行部署(替代方案)

  1. 在Azure中创建功能应用程序
   az login
   az group create --name mcp-server-rg --location eastus
   az storage account create --name mcpserverfunc --location eastus --resource-group mcp-server-rg --sku Standard_LRS
   az functionapp create --resource-group mcp-server-rg --consumption-plan-location eastus --runtime dotnet-isolated --functions-version 4 --name mcp-server-function --storage-account mcpserverfunc --os-type Windows
  1. 设置功能应用程序设置
   az functionapp config appsettings set --name mcp-server-function --resource-group mcp-server-rg --settings "LOGIC_APP_ENDPOINT=https://prod-12.eastus.logic.azure.com:443/workflows/your-logic-app-id" "INTERNAL_API_BASE_URL=https://api.internal.company.com" "MCP_AUTH_ENABLED=true" "MCP_ALLOWED_OPERATIONS=getBusinessData,triggerLogicApp,callInternalApi,list_operations,get_openapi_spec"

对于API密钥等敏感设置,请使用Azure密钥保管库:

   az keyvault create --name mcpserver-kv --resource-group mcp-server-rg --location eastus
   az keyvault secret set --vault-name mcpserver-kv --name "InternalApiKey" --value "your-api-key-here"
   az functionapp identity assign --name mcp-server-function --resource-group mcp-server-rg
   # Grant the function access to Key Vault
   $principalId=$(az functionapp identity show --name mcp-server-function --resource-group mcp-server-rg --query principalId --output tsv)
   az keyvault set-policy --name mcpserver-kv --object-id $principalId --secret-permissions get list
   # Add Key Vault reference to Function App settings
   az functionapp config appsettings set --name mcp-server-function --resource-group mcp-server-rg --settings "INTERNAL_API_KEY=@Microsoft.KeyVault(SecretUri=https://mcpserver-kv.vault.azure.net/secrets/InternalApiKey/)"
  1. 发布函数
   func azure functionapp publish mcp-server-function

使用Azure DevOps或GitHub操作进行部署

使用以下命令创建CI/CD管道:

  • Azure DevOps Azure功能管道模板
  • GitHub操作Azure函数工作流

生产部署注意事项

区域选择

  • 瑞典中部地区福利:

- 针对欧洲数据驻留要求的强大合规产品 - 可持续发展重点,可再生能源使用量高 - 北欧和北欧用户的低延迟访问 - 配备最新基础设施的现代化Azure数据中心

安全最佳实践

  • 通过设置启用MCP身份验证 MCP_AUTH_ENABLED=true 生产中
  • 将敏感信息(如API密钥)存储在Azure密钥保管库中
  • 使用托管身份与其他Azure服务进行身份验证
  • 使用Application Insights监控功能执行
  • 定期更新依赖关系以解决安全漏洞
  • 启用仅HTTPS访问您的功能应用程序
  • 使用最低TLS版本1.2
  • 禁用对功能应用程序的FTP访问

监控和卓越运营

  • 启用Application Insights以进行全面监控
  • 设置异常功能行为警报
  • 配置日志保留的诊断设置
  • 使用资源标签进行更好的资源管理
  • 为管理访问实施适当的RBAC
  • 定期备份功能应用程序配置

故障排除

常见问题

  1. 系统。网。找不到基本体程序集

运行时可能会出现这种情况。NET 8使用进程内模型运行。解决方案是使用此项目中配置的隔离工作进程模型。

  1. 函数未在本地启动

确保你有权利。global.json中指定的NET SDK版本:

   {
     "sdk": {
       "version": "8.0.115"
     }
   }
  1. 身份验证或授权失败

检查你的 MCP_AUTH_ENABLED 设置并确保在Azure中配置了正确的身份验证。

  1. 二头肌展开错误

- 使用以下工具检查棉绒错误 az bicep build --file main.bicep - 验证资源名称约定和唯一性 - 确保使用正确的参数类型 - 使用假设操作在部署前验证更改 - 常见的二头肌错误包括: - 在不正确的位置使用函数(例如,utcNow()只能在参数默认值中使用) - 变量引用无效 - 缺少参数或表达式

  1. 功能关键问题

如果在测试部署的功能时收到401未经授权的错误,请确保在请求中包含功能键,无论是作为 x-functions-key 标题或作为 ?code= 查询参数。

贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 进行更改
  4. 运行测试
  5. 提交拉取请求

许可证

\[指定发布此项目的许可证\]

目录标签

目录标签

C#API代理AI代理MCP协议本地部署AzureFunctions语言模型交互业务数据获取

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

session

工具数量(toolCount,工具数)

5

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明session部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP