一个简单的服务,使用模型上下文协议(MCP)为多个城市(包括福冈、东京、大阪、莫斯科和纽约)提供天气信息。
192 查看 · 2026-07-07 更新
简介
一个简单的服务,使用模型上下文协议(MCP)为多个城市(包括福冈、东京、大阪、莫斯科和纽约)提供天气信息。
简介
一个简单的服务,使用模型上下文协议(MCP)为多个城市(包括福冈、东京、大阪、莫斯科和纽约)提供天气信息。
MCP 天气服务
此仓库提供了一个使用模型上下文协议 (MCP) 的简单天气信息服务。可以获取多个城市(如福冈、东京、大阪、莫斯科、纽约等)的天气信息。
许可证
本项目在 MIT许可证 下发布。
目录
先决条件
运行此项目需要以下软件:
- Node.js (版本 18 或更高)
- npm (通常随Node.js一起安装)
- Git
安装方法
安装Node.js和npm
- 从Node.js官方网站下载并安装安装程序。
- 安装完成后,在终端中执行以下命令以验证安装:
bash node -v npm -v
安装Git
- 从Git官方网站下载并安装安装程序。
- 安装完成后,在终端中执行以下命令以验证安装:
bash git --version
项目设置
创建新项目
- 创建一个新的目录,并进入该目录:
bash mkdir my-weather-mcp cd my-weather-mcp
- 初始化npm项目:
bash npm init -y
- 安装必要的包:
bash npm install @modelcontextprotocol/sdk axios zod typescript @types/node https-proxy-agent npm install --save-dev ts-node
- 创建TypeScript配置文件:
bash npx tsc --init
- 编辑
tsconfig.json文件如下:
json { "compilerOptions": { "target": "ES2022", "module": "NodeNext", "moduleResolution": "NodeNext", "esModuleInterop": true, "outDir": "./build", "strict": true, "skipLibCheck": true, "forceConsistentCasingInFileNames": true }, "include": ["src/**/*"], "exclude": ["node_modules"] }
- 编辑
package.json文件中的脚本部分如下:
json "scripts": { "build": "tsc && node -e "import('fs').then(fs => fs.default.chmodSync('build/index.js', 755))"", "start": "node build/index.js", "inspect": "npx @modelcontextprotocol/inspector build/index.js", "dev": "ts-node src/index.ts" }
- 创建项目的目录结构:
bash mkdir -p src test
克隆现有项目
如果您想使用现有的项目,请按照以下步骤克隆:
bash git clone https://github.com/terisuke/my-weather-mcp.git cd my-weather-mcp npm install
使用方法
构建与运行
要构建并运行项目,请使用以下命令:
bash npm run build && npm run start
使用检查器
要使用MCP检查器测试天气服务,请执行以下命令:
bash
npm run build && npm run inspect当检测器启动后,您可以通过浏览器访问 http://127.0.0.1:6274 来与天气服务进行交互。
获取天气信息
使用检测器,您可以获取以下城市的天气信息:
- 福冈
- 东京
- 大阪
- 莫斯科
- 纽约
也可以指定其他城市,但需要确保这些城市名称能够被 Open-Meteo API 识别。
开发指南
文件结构
my-weather-mcp/ ├── build/ # 编译后的JavaScript文件 ├── src/ # TypeScript源代码 │ └── index.ts # 主应用程序代码 ├── test/ # 测试文件 ├── package.json # 项目设置 ├── tsconfig.json # TypeScript配置 └── README.md # 本文件
代码修改
- 编辑
src/index.ts文件以添加或修改功能。 - 要测试更改,请运行以下命令:
bash npm run build && npm run inspect
- 确认更改正常工作后,提交更改。
上传到GitHub
创建首个GitHub仓库
- 访问 GitHub 并创建账户或登录。
- 点击右上角的“+”按钮并选择“New repository”。
- 输入仓库名(例如:
my-weather-mcp),根据需要添加描述。 - 设置仓库为公开或私有,并点击“Create repository”。
初始化本地仓库并推送
- 在本地项目目录中初始化Git仓库:
bash git init
- 将更改添加到暂存区:
bash git add .
- 提交更改:
bash git commit -m "初次提交:实现MCP天气服务"
- 添加远程仓库(使用GitHub仓库URL):
bash git remote add origin https://github.com/用户名/my-weather-mcp.git
- 将更改推送到远程仓库:
bash git push -u origin main
向现有仓库推送更改
- 将更改添加到暂存区:
bash git add .
- 提交更改:
bash git commit -m "更改内容说明"
- 将更改推送到远程仓库:
bash git push
创建拉取请求
- 访问GitHub上的仓库页面。
- 点击“Pull requests”标签页,然后点击“New pull request”按钮。
- 选择基础分支和比较分支。
- 点击“Create pull request”按钮。
- 输入拉取请求的标题和描述,然后点击“Create pull request”按钮。
故障排除
常见问题及解决方案
ERR_PACKAGE_PATH_NOT_EXPORTED 错误
此错误发生在 @modelcontextprotocol/sdk 包的导入路径不正确时。请按如下方式修正:
typescript // 错误的导入 import { McpServer } from "@modelcontextprotocol/sdk"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/transports";
// 正确的导入 import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
网络连接错误在API调用过程中如果发生网络错误,请检查代理设置。可以通过设置环境变量 HTTP_PROXY 或 HTTPS_PROXY 来使用代理:
bash export HTTP_PROXY=http://代理服务器:端口 export HTTPS_PROXY=https://代理服务器:端口
其他问题
如果问题仍未解决,请创建一个包含以下信息的问题报告:
- 发生的错误消息
- 正在使用的Node.js和npm版本
- 执行的命令
- 期望的行为与实际行为
工具列表
- get-weather: Get weather information for a city
来源
- 来源:github
- 链接:https://github.com/terisuke/my-weather-mcp