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

Remote Server Azure Func

MCP Server

一个基于Azure Functions和.NET构建的远程模型上下文协议(MCP)服务器,通过Open-Meteo API提供实时天气数据。

工具数

1

提示词数

0

GitHub Stars

4

资源数

0
Bicep位置天气ClaudeClaudeVS Code

安装说明

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

作者 / 组织

jpad5

提供方

jpad5

最后核验

2026/5/17 20:23

快速接入

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

详细介绍

远程MCP天气服务器——Azure函数(.NET)

](https://codespaces.new/Azure-Samples/remote-mcp-functions) ![Open in Dev Containers](https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/Azure-Samples/remote-mcp-functions)

遥控器 模型上下文协议(MCP) 服务器构建于 Azure 函数.NET 10 它展示了一个由免费软件驱动的天气工具 开放气象API。不需要API密钥。

使用此模板可以快速构建、调试和将您自己的远程MCP服务器部署到Azure。服务器通过HTTPS和功能密钥的设计进行保护,并支持通过VNET进行可选的网络隔离。

背景——为什么在Azure函数上使用远程MCP?

模型上下文协议(MCP) 使AI助手能够安全地调用外部工具并访问数据。虽然MCP服务器经常运行 本地 (通过 stdio),运行它们 远程地 解锁关键优势:

  • 共享访问 --单个部署的MCP服务器可以为多个客户端和用户提供服务。
  • 服务器端机密 -API密钥、数据库连接和凭据保留在服务器上,从不向客户端公开。
  • 集中更新 --更新工具逻辑一次;所有连接的客户端都会立即收到更改。
  • 企业安全 -利用Azure网络(VNET、专用端点)、托管身份和API管理/入口ID进行身份验证。
  • 可扩展性 --Azure Functions Flex Consumption计划可自动扩展到零和多达100个实例。

远程mcp功能 该集合演示了如何使用两种方法构建这些远程服务器: Azure功能的MCP扩展自托管MCP SDK服务器。此项目使用 MCP扩展 方法。

解决方案设计——MCP扩展与MCP SDK

在Azure Functions上托管MCP服务器有两种不同的方法。了解权衡有助于您为您的场景选择合适的方案。

flowchart TB
    subgraph ExtApproach["MCP Extension for Azure Functions"]
        direction TB
        E1["Your code: tool logic only(McpToolTrigger attribute)"]
        E2["MCP protocol handling: managed by Functions host"]
        E3["Transport: built-in SSE + Streamable HTTP"]
        E1 --> E2 --> E3
    end

    subgraph SDKApproach["Self-hosted MCP SDK"]
        direction TB
        S1["Your code: tool logic + server setup (MCP SDK)"]
        S2["MCP protocol handling: your responsibility"]
        S3["Transport: configured in your SDK setup"]
        S1 --> S2 --> S3
    end

    ExtApproach -.- note1["✅ This project uses this approach"]

    style note1 fill:#d4edda,stroke:#28a745,color:#155724
    style ExtApproach fill:#e7f3ff,stroke:#0078d4
    style SDKApproach fill:#fff3e0,stroke:#f57c00

比较

MCP扩展 (本项目)MCP SDK(自托管)
如何定义工具声明性-- [McpToolTrigger] 函数的属性程序化--在MCP SDK服务器构建器中注册工具
协议处理完全由Azure Functions主机管理您可以配置和管理MCP服务器生命周期
运输内置SSE+流式HTTP /runtime/webhooks/mcp您可以在代码中设置传输(SSE、stdio等)
代码行数最小——只需编写工具逻辑更多设置——服务器初始化、DI、传输配置
灵活性基于公约;非常适合标准工具完全控制服务器行为、中间件和资源
最佳快速开发、标准工具模式、熟悉Azure Functions的团队自定义MCP功能、复杂的服务器逻辑、非Functions托管

为什么这个项目使用MCP扩展

该项目使用 MCP扩展 方法是因为:

  1. 最小样板 --单身 [McpToolTrigger] 属性将任何函数转换为MCP工具。不需要服务器设置、传输配置或协议管道。
  2. 原生函数体验 --遵循与HTTP触发器、定时器触发器等相同的触发器/绑定模式。如果你了解Azure Functions,那么你已经知道如何构建MCP工具。
  3. 生产就绪的基础设施 --该扩展管理会话、传输协商和 /runtime/webhooks/mcp 端点是自动的,所以您可以专注于工具逻辑。

特性

  • MCP工具-- GetWeather:返回任何城市名称或邮政编码的当前天气状况(温度、湿度、风、条件)。
  • 与当地人一起建造 Azure功能MCP扩展 (McpToolTrigger).
  • 用途 开放天气 地理编码+天气API-- 不需要API密钥.
  • 部署在 Azure函数灵活消费 规划经济高效的无服务器扩展。
  • 基础设施即代码 Bicep 通过以下方式进行一次指挥部署 Azure开发者命令行界面 (azd up).
  • 预配置的VS Code MCP客户端配置,用于本地开发。

建筑

flowchart LR
    Client["🖥️ MCP Client\n(VS Code, Claude, etc.)"]
    Functions["⚡ Azure Functions Host\n(.NET Isolated Worker)"]
    Tool["🌤️ GetWeather Tool\n(McpToolTrigger)"]
    API["🌍 Open-Meteo API\n(geocoding + weather)"]

    Client -- "MCP (SSE / HTTP)\nJSON-RPC request" --> Functions
    Functions -- "JSON-RPC response" --> Client
    Functions --> Tool
    Tool -- "HTTP GET" --> API

Azure部署

flowchart TB
    subgraph Azure["☁️ Azure Subscription"]
        RG["📦 Resource Group"]
        subgraph RG
            ASP["📋 App Service Plan\n(Flex Consumption FC1)"]
            FA["⚡ Function App\n(dotnet-isolated v10)"]
            MI["🔑 Managed Identity"]
            SA["💾 Storage Account"]
            AI["📊 Application Insights"]
            LA["📝 Log Analytics"]
            VNET["🔒 Virtual Network\n(optional)"]
        end
    end

    ASP --> FA
    MI --> FA
    MI --> SA
    MI --> AI
    FA --> SA
    FA --> AI
    AI --> LA
    VNET -.-> FA
    VNET -.-> SA

先决条件

要求安装
.净10 SDK下载
Azure功能核心工具v4安装
Azure开发者命令行界面(azd)安装 (v1.23+)
Node.js(适用于Azurite)下载
Azure订阅免费账户

项目结构

├── azure.yaml                       # Azure Developer CLI configuration
├── infra/                           # Bicep infrastructure-as-code
│   ├── main.bicep                   # Main deployment (subscription scope)
│   ├── main.parameters.json         # Deployment parameters
│   ├── abbreviations.json           # Resource naming abbreviations
│   └── app/
│       ├── api.bicep                # Function App (Flex Consumption)
│       ├── rbac.bicep               # Managed identity role assignments
│       ├── vnet.bicep               # Virtual network (optional)
│       └── storage-PrivateEndpoint.bicep
├── src/
│   ├── McpWeatherServer.csproj      # .NET project file
│   ├── Program.cs                   # Functions host entry point
│   ├── WeatherFunction.cs           # MCP tool definition
│   ├── WeatherService.cs            # Open-Meteo API client
│   ├── host.json                    # Functions host configuration
│   └── local.settings.json          # Local dev settings
└── .vscode/
    └── mcp.json                     # VS Code MCP client configuration

快速入门--本地运行

  1. 安装Azurite (本地存储模拟器):
   npm install -g azurite
  1. 开始Azurite 在单独的终端中:
   azurite --silent
  1. 启动Functions主机:
   cd src
   func start
  1. MCP服务器现在运行在:
传输URL
上海证券交易所 http://localhost:7071/runtime/webhooks/mcp/sse
流式HTTPhttp://localhost:7071/runtime/webhooks/mcp
  1. 从VS代码连接:The .vscode/mcp.json 已预先配置--打开Copilot Chat并询问以下内容 _“西雅图的天气怎么样?”_.

部署到Azure

  1. 登录:
   azd auth login
  1. 提供和部署 (创建所有资源并部署代码):
   azd up

系统将提示您输入环境名称和Azure区域。部署大约需要3-5分钟。

  1. 获取已部署的端点:
   azd env get-values

寻找 AZURE_FUNCTION_NAME --您的远程MCP端点将是:

   https://.azurewebsites.net/runtime/webhooks/mcp
  1. 检索功能键 (远程访问需要):
   az functionapp keys list -n  -g  --query "systemKeys.mcp_extension" -o tsv

将其作为查询参数附加: ?code=.

连接MCP客户端

VS代码--本地

已在中配置 .vscode/mcp.json.快跑 func start 并使用Copilot聊天。

VS代码--远程(Azure)

向添加新条目 .vscode/mcp.json:

{
  "servers": {
    "remote-mcp-weather": {
      "type": "http",
      "url": "https://.azurewebsites.net/runtime/webhooks/mcp/sse?code="
    }
  }
}

克劳德桌面版

添加到您的 claude_desktop_config.json:

{
  "mcpServers": {
    "weather": {
      "type": "sse",
      "url": "https://.azurewebsites.net/runtime/webhooks/mcp/sse?code="
    }
  }
}

MCP工具

GetWeather

返回给定位置的当前天气状况。

参数类型说明
locationstring城市名称或邮政编码(例如。, Seattle, 94568, New York)

示例响应:

{
  "Location": "Dublin, California, United States",
  "Condition": "Clear sky",
  "TemperatureC": 16,
  "TemperatureF": 62,
  "HumidityPercent": 64,
  "WindKph": 22,
  "Wind": "22 km/h WNW",
  "ReportedAtUtc": "2026-03-05 05:15:00Z",
  "Source": "open-meteo"
}

Azure资源

与一起部署时 azd up,将创建以下资源:

资源目的
Azure 函数 (灵活消费FC1)托管MCP服务器
存储帐户功能应用程序状态和部署包
应用洞察监测和记录
日志分析工作区集中式日志
用户分配的托管身份安全访问存储和监控
虚拟网络 (可选)具有专用端点的网络隔离

成本

弹性消费计划仅按实际执行时间收费。对于开发和低流量场景,成本很低。看 Azure功能定价 了解详情。

清理

要删除所有Azure资源,请执行以下操作:

azd down

贡献

许可证

此项目根据MIT许可证获得许可——请参阅 许可证.md.

目录标签

目录标签

Bicep位置天气Claude本地部署AzureFunctions天气服务MCP协议.NET实时数据

支持客户端

ClaudeVS Code

接入字段

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

未说明

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

session

工具数量(toolCount,工具数)

1

资源数量(resourceCount,资源数)

0

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

0

权限和风险

未说明session部署方式未说明

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

安装前确认

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

仍需确认:installCommand

来源信息

继续浏览同类 MCP