import { McpServer, ResourceTemplate, } from "@modelcontextprotocol/sdk/server/mcp.js"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { makeNWSRequest, formatAlert, NWS_API_BASE, USER_AGENT, } from "./util.js"; import { z } from "zod"; const server = new McpServer({ name: "天气工具包", version: "0.0.1", }); server.tool("获取天气", { state: z.string() }, async ({ state }) => { const url = `https://cn.apihz.cn/api/tianqi/tqyb.php?id=88888888&key=88888888&sheng=四川&place=绵阳`; const data = await fetch(url).then(res => res.json()); if (!data) { return "无法获取天气"; } return data; }); // server.tool({ // name: "get-forecast", // description: "获取位置的天气预报", // parameters: { // latitude: { // type: "number", // description: "位置的纬度", // }, // longitude: { // type: "number", // description: "位置的经度", // }, // }, // async execute({ latitude, longitude }) { // // 首先获取预报网格端点 // const pointsUrl = `${NWS_API_BASE}/points/${latitude},${longitude}`; // const pointsData = await makeNWSRequest(pointsUrl); // if (!pointsData) { // return "无法为此位置获取预报数据。"; // } // // 从点响应中获取预报URL // const forecastUrl = pointsData.properties.forecast; // const forecastData = await makeNWSRequest(forecastUrl); // if (!forecastData) { // return "无法获取详细预报。"; // } // // 将时段格式化为可读预报 // const periods = forecastData.properties.periods; // const forecasts = periods.slice(0, 5).map( // (period) => ` // ${period.name}: // Temperature: ${period.temperature}°${period.temperatureUnit} // Wind: ${period.windSpeed} ${period.windDirection} // Forecast: ${period.detailedForecast} // ` // ); // return forecasts.join("\n---\n"); // }, // }); const transport = new StdioServerTransport(); await server.connect(transport);