项目简介
这个项目是一个使用Node.js和官方Model Context Protocol (MCP) SDK构建的天气信息MCP服务器示例。它演示了如何在Azure Functions上以自定义处理程序(Custom Handler)的方式部署MCP服务器,从而利用Azure Functions的无服务器、按需扩展和安全特性。该服务器暴露了两个核心工具:获取某个州的天气警报和获取指定经纬度地点的天气预报。LLM客户端(如支持MCP协议的Copilot)可以通过JSON-RPC调用这些工具来获取实时天气数据。
主要功能点
- MCP服务器实现: 遵循Model Context Protocol规范,通过Node.js SDK提供标准化的上下文和功能接口。
- 天气预警工具: 提供 'get-alerts' 工具,根据两字母州代码查询美国国家气象局(NWS)的活跃天气警报。
- 天气预报工具: 提供 'get-forecast' 工具,根据经纬度查询美国国家气象局(NWS)的短期天气预报。
- Azure Functions部署: 示范如何将MCP服务器作为Azure Functions的自定义处理程序进行部署,实现无状态、事件驱动的云端托管。
- JSON-RPC通信: 使用JSON-RPC协议与MCP客户端进行通信,确保标准化的请求和响应模式。
安装步骤
- 克隆仓库:
git clone https://github.com/Azure-Samples/mcp-sdk-functions-hosting-node.git cd mcp-sdk-functions-hosting-node - 安装依赖: 在项目根目录运行npm安装命令。
npm install - 安装必备工具 (用于Azure部署和本地运行):
- 注册Azure资源提供程序 (仅在首次部署Azure时需要):
az provider register --namespace 'Microsoft.App'
服务器配置 (供MCP客户端连接使用)
以下是一个MCP客户端连接到此MCP服务器所需的配置示例。你需要将 'command' 和 'args' 中的服务器路径和端口根据实际情况进行调整。
{ "servers": [ { "name": "weather-mcp-server", "command": "npm", "args": ["start"], "endpoint": "http://localhost:3000/mcp", "description": "本地运行的MCP天气服务器", "capabilities": { "tools": { "get-alerts": { "description": "获取某个州的天气警报", "parameters": { "type": "object", "properties": { "state": { "type": "string", "description": "两字母州代码 (例如 CA, NY)", "minLength": 2, "maxLength": 2 } }, "required": ["state"] } }, "get-forecast": { "description": "获取某个位置的天气预报", "parameters": { "type": "object", "properties": { "latitude": { "type": "number", "description": "地点的纬度", "minimum": -90, "maximum": 90 }, "longitude": { "type": "number", "description": "地点的经度", "minimum": -180, "maximum": 180 } }, "required": ["latitude", "longitude"] } } } } } ] }
- 'name': MCP服务器的唯一名称,例如 'weather-mcp-server'。
- 'command': 启动MCP服务器进程的命令。对于本地运行,通常是 'npm'。
- 'args': 传递给 'command' 的参数。'start' 是在 'package.json' 中定义的启动脚本。
- 'endpoint': MCP服务器监听的URL路径。默认本地运行在 'http://localhost:3000/mcp'。部署到Azure后,此URL将变为 'https://{functionapp-name}.azurewebsites.net/mcp'。
- 'description': 服务器的简短描述。
- 'capabilities': 服务器提供的功能声明,包含所暴露的工具 ('tools') 及其详细描述和参数定义。
基本使用方法
- 本地运行服务器:
在项目根目录运行以下命令启动MCP服务器:
服务器将在配置的端口(默认为3000)上监听。func start - 连接MCP客户端 (例如VS Code Copilot):
- 打开VS Code中的 'mcp.json' 文件(通常位于 '.vscode' 目录下)。
- 点击 'local-mcp-server' 上方的“Start”按钮来连接本地服务器。
- 切换到VS Code的Copilot(或Agent)模式。
- 向Copilot提问,例如:“What is the weather in NYC?” 或 “Get weather alerts for California.”
- Copilot将通过调用MCP服务器的相应工具来获取天气信息。
- 部署到Azure Functions (可选): 在项目根目录运行 'azd up' 命令,Azure Developer CLI将自动化创建所需的Azure资源并部署MCP服务器。部署完成后,你将获得一个公共的API端点,可用于远程连接。
信息
分类
AI与计算