天气MCP示例

一个基于模型上下文协议(MCP)的学习项目,展示AI模型如何通过标准化协议与外部系统交互,特别是天气数据查询功能。

  • by mohres
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 mohres/weather-mcp-app

使用说明

天气MCP示例-实践学习项目

这个存储库包含我对 模型上下文协议(MCP) -了解MCP如何使AI模型通过标准化协议与外部系统交互的学习实验。

🎯 学习目标

该项目展示了:

  • MCP服务器如何向AI模型公开工具和资源
  • MCP客户端和OpenAI GPT模型之间的集成
  • 通过stdio传输进行实时通信
  • 模式验证和工具调用工作流

🏗️ 项目结构

weather-mcp-app/
├── server/            # MCP server implementation
│   ├── src/
│   │   └── index.ts   # Main server with weather tools
│   └── package.json
├── client/            # MCP client application
│   ├── src/
│   │   └── client.ts  # OpenAI + MCP integration
│   └── package.json
└── README.md 

🚀 快速开始

先决条件

1.克隆和设置

2.设置并运行服务器

cd server
npm install
npm run build
npm run dev

3.使用MCP检查器进行调试(可选)

cd server
npm run build
npx @modelcontextprotocol/inspector node dist/index.js

检查器配置:

  • 传输类型: 工作室
  • 命令: node
  • 参数: dist/index.js

4.设置并运行客户端

cd ../client
npm install

# Create environment file with your OpenAI API key
echo "OPENAI_API_KEY=your_actual_api_key_here" > .env

npm run build
npm run dev

💬 示例用法

运行后,尝试以下查询:

> What's the weather in Aleppo?
> How's the weather in Istanbul today?
> Show me weather data for both supported cities
> What cities do you have weather data for?

🔧 运作原理

MCP服务器(server/)

  • 框架:模型上下文协议SDK
  • 运输:Stdio(标准输入/输出)
  • 工具: getWeatherDataByCityName -返回模拟天气数据
  • 资源: weather://cities -列出支持的城市
  • 验证:用于类型安全的Zod模式

MCP客户端(client/)

  • 整合:OpenAI GPT-4+MCP服务器
  • 流动:用户输入→ GPT-4→ MCP工具→ 天气数据→ 响应
  • 运输:Stdio客户端连接到服务器进程
  • 接口:使用readline的交互式CLI

通信流

📚 学习要点

  1. MCP协议:AI模型访问外部工具的标准化方式
  2. 工具注册:服务器如何向客户端公开可调用函数
  3. 资源暴露:AI模型可用的静态数据
  4. 类型安全:Zod模式确保正确的输入验证
  5. 传输层:流程之间的标准通信
  6. 人工智能集成:将MCP工具转换为OpenAI函数调用格式

📖 我学到了什么

这个实践项目帮助我理解了:

  • MCP在人工智能生态系统中的作用
  • 工具和资源如何以不同的方式工作
  • 模式验证的重要性
  • 人工智能模型与外部系统的集成模式
  • MCP规范的实际实现

📄 许可证

ISC-欢迎将此学习示例用于您自己的MCP探索!