当前位置: 首页 > wzjs >正文

微信网站建设计入什么科目南昌百度快速排名提升

微信网站建设计入什么科目,南昌百度快速排名提升,鄞州区网站建设,电商网站前端制作分工MCP 是什么 Model Context Protocol, 模型上下文协议,是一种开放协议,用于标准化应用程序向大型语言模型(LLM)提供上下文的方式。可以将 MCP 视为 AI 应用的 USB-C 接口:正如 USB-C 为设备连接各种外设和配…

MCP 是什么

Model Context Protocol, 模型上下文协议,是一种开放协议,用于标准化应用程序向大型语言模型(LLM)提供上下文的方式。可以将 MCP 视为 AI 应用的 USB-C 接口:正如 USB-C 为设备连接各种外设和配件提供了标准化方式,MCP 也为 AI 模型连接不同数据源和工具提供了统一标准。

为什么要用MCP呢?

MCP 可帮助在 LLM (Large Language Model,大语言模型)基础上构建智能代理和复杂工作流。由于 LLM 常需与数据和工具集成,MCP 提供了以下优势:

  • 不断增长的预构建集成列表:让 LLM 可直接接入多种服务
  • 灵活切换 LLM 供应商:支持多厂商模型的即插即用
  • 数据安全保障最佳实践:在基础设施内安全管控敏感信息

MCP的架构

MCP 的核心是客户端-服务器架构,主机应用可连接多个服务器:

  • Host(MCP 主机):需通过 MCP 访问数据的应用程序(如 Claude 桌面端、IDE 或 AI 工具)
  • MCP Client(MCP 客户端):与服务器保持 1:1 连接的协议客户端
  • MCP Server(MCP 服务器):通过标准化协议暴露特定能力的轻量级程序
  • Local Data Source(本地数据源):服务器可安全访问的设备文件、数据库和服务
  • Remote Service(远程服务):服务器可通过互联网连接的外部系统(如 API)

示例演示

对于大模型而言,默认是不具备回答天气预报的功能的,包含Chat GPT,DeepSeek等。比如在DeepSeek 中,如果询问天气的话,会让你去查询天气预报网站。

当然,现在的LLM的Web页面提供了联网搜索的功能, 勾选的话,也是可以查询天气的。但是对于调用API接口的方式,是没有这种功能的。 于是,可以使用MCP了。

本篇接下来的示例就是演示一个MCP实现天气预报的功能。

MCP目前提供了NodeJS,Python和Java 三种SDK,本篇使用NodeJS进行演示。

MCP服务端开发

创建NodeJS的项目

在命令行依次输入如下命令:

# 创建项目目录
mkdir weather
cd weather# 使用npm初始化项目
npm init -y# 安装依赖
npm install @modelcontextprotocol/sdk zod
npm install -D @types/node typescript# 创建文件
mdir src
new-item src\index.ts

这里在VS Code的终端输入,执行的效果如下:

创建完成的项目目录结构如下:

修改 package.json
  • 新增 “type”: “module”,

  • 添加构建脚本

创建tsconfig.json

内容如下:

{"compilerOptions": {"target": "ES2022","module": "Node16","moduleResolution": "Node16","outDir": "./build","rootDir": "./src","strict": true,"esModuleInterop": true,"skipLibCheck": true,"forceConsistentCasingInFileNames": true},"include": ["src/**/*"],"exclude": ["node_modules"]
}
index.js

编写获取天气预报的代码:

import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";const NWS_API_BASE = "https://api.weather.gov";
const USER_AGENT = "weather-app/1.0";// Create server instance
const server = new McpServer({name: "weather",version: "1.0.0",
});// Helper function for making NWS API requests
async function makeNWSRequest<T>(url: string): Promise<T | null> {const headers = {"User-Agent": USER_AGENT,Accept: "application/geo+json",};try {const response = await fetch(url, { headers });if (!response.ok) {throw new Error(`HTTP error! status: ${response.status}`);}return (await response.json()) as T;} catch (error) {console.error("Error making NWS request:", error);return null;}
}interface AlertFeature {properties: {event?: string;areaDesc?: string;severity?: string;status?: string;headline?: string;};
}// Format alert data
function formatAlert(feature: AlertFeature): string {const props = feature.properties;return [`Event: ${props.event || "Unknown"}`,`Area: ${props.areaDesc || "Unknown"}`,`Severity: ${props.severity || "Unknown"}`,`Status: ${props.status || "Unknown"}`,`Headline: ${props.headline || "No headline"}`,"---",].join("\n");
}interface ForecastPeriod {name?: string;temperature?: number;temperatureUnit?: string;windSpeed?: string;windDirection?: string;shortForecast?: string;
}interface AlertsResponse {features: AlertFeature[];
}interface PointsResponse {properties: {forecast?: string;};
}interface ForecastResponse {properties: {periods: ForecastPeriod[];};
}// Register weather tools
server.tool("get-alerts","Get weather alerts for a state",{state: z.string().length(2).describe("Two-letter state code (e.g. CA, NY)"),},async ({ state }) => {const stateCode = state.toUpperCase();const alertsUrl = `${NWS_API_BASE}/alerts?area=${stateCode}`;const alertsData = await makeNWSRequest<AlertsResponse>(alertsUrl);if (!alertsData) {return {content: [{type: "text",text: "Failed to retrieve alerts data",},],};}const features = alertsData.features || [];if (features.length === 0) {return {content: [{type: "text",text: `No active alerts for ${stateCode}`,},],};}const formattedAlerts = features.map(formatAlert);const alertsText = `Active alerts for ${stateCode}:\n\n${formattedAlerts.join("\n")}`;return {content: [{type: "text",text: alertsText,},],};},
);server.tool("get-forecast","Get weather forecast for a location",{latitude: z.number().min(-90).max(90).describe("Latitude of the location"),longitude: z.number().min(-180).max(180).describe("Longitude of the location"),},async ({ latitude, longitude }) => {// Get grid point dataconst pointsUrl = `${NWS_API_BASE}/points/${latitude.toFixed(4)},${longitude.toFixed(4)}`;const pointsData = await makeNWSRequest<PointsResponse>(pointsUrl);if (!pointsData) {return {content: [{type: "text",text: `Failed to retrieve grid point data for coordinates: ${latitude}, ${longitude}. This location may not be supported by the NWS API (only US locations are supported).`,},],};}const forecastUrl = pointsData.properties?.forecast;if (!forecastUrl) {return {content: [{type: "text",text: "Failed to get forecast URL from grid point data",},],};}// Get forecast dataconst forecastData = await makeNWSRequest<ForecastResponse>(forecastUrl);if (!forecastData) {return {content: [{type: "text",text: "Failed to retrieve forecast data",},],};}const periods = forecastData.properties?.periods || [];if (periods.length === 0) {return {content: [{type: "text",text: "No forecast periods available",},],};}// Format forecast periodsconst formattedForecast = periods.map((period: ForecastPeriod) =>[`${period.name || "Unknown"}:`,`Temperature: ${period.temperature || "Unknown"}°${period.temperatureUnit || "F"}`,`Wind: ${period.windSpeed || "Unknown"} ${period.windDirection || ""}`,`${period.shortForecast || "No forecast available"}`,"---",].join("\n"),);const forecastText = `Forecast for ${latitude}, ${longitude}:\n\n${formattedForecast.join("\n")}`;return {content: [{type: "text",text: forecastText,},],};},
);// 主函数
async function main() {const transport = new StdioServerTransport();await server.connect(transport);console.error("Weather MCP Server running on stdio");
}main().catch((error) => {console.error("Fatal error in main():", error);process.exit(1);
});

上面的代码实现了天气服务。它通过调用美国National Weather Service (NWS) API 获取

  • 天气警报:get-alerts
  • 天气预报:get-forecast
构建
npm run build

运行构建命令后会在build 目录下产生一个构建的 index.js 文件。

使用MCP Inspector 查看MCP服务

MCP提供了一个检查器,这是一款交互式开发者工具,专为测试和调试 MCP 服务器设计。

使用方式很简单,执行如下命令

npx @modelcontextprotocol/inspector node build/index.js

执行完成,会启动一个Web 服务。

在浏览器中打开控制台输出的地址: http://localhost:5173/

点击Connect 之后,就可以看到在代码中写的两个服务了,选择 get-alert,在State 输入NY ,也就是查询纽约州的天气警报, 最后点击Run Tool 就可以看到纽约州的一些天气的警报。

到这里,聪明的你可能要问了,这不就是调用一个在线API实现的一个Web服务吗? 和LLM有什么关系呢?

别急,这里只是演示MCP服务的效果,关键的是这个服务可以提供给LLM使用,因为它定义了一些和LLM交互的信息格式。通过MCP服务端的演示之后就会豁然开朗了。

MCP客户端使用

这里使用Roo Code作为MCP客户端来演示。

首先需要在VS Code 中安装Roo Code,认证授权之后打开Roo Code。

  1. 点击上方的 “MCP Servers”

  1. 点击 Edit MCP Settings 之后,会在编辑器打开一个配置文件,

补充下面的mcpServers 的配置:

"mcpServers": {"my-weather-server": {"command": "node","args": ["D:/devworkspace/vs/ai_ency/mcp/weather/build/index.js"],"env": {},"autoApprove": []}}

保存之后,在左侧的区块就会多出一个MCP 的Server了,如下图:

回到Roo Code 的Chat 对话框,输入天气相关的对话,则这里就可以自动执行相关的任务并输出。这里因为网络的原因,这台机器没有完整的跑出结果,但还是贴一个执行中的图。


http://www.dtcms.com/wzjs/126393.html

相关文章:

  • 顺德大良网站建设开发线上广告投放渠道
  • 做网站线上线下价格混乱网址域名ip解析
  • 甘肃做网站的公司网络推广是什么工作内容
  • 手机网站域名解析百度一下知道首页
  • 哈尔滨网架公司优化大师好用吗
  • 福州外贸网站制作seo在线培训
  • 深圳做营销网站公司关键词搜索工具爱站网
  • 深圳电子厂排名前十百度关键词优化公司哪家好
  • 外贸响应式网站建设seo课程培训视频
  • 晋江网站开发南宁seo优化公司排名
  • 怎么做资源网站二级域名免费分发
  • 台前网站建设公司抖音营销
  • 如何做外贸营销型网站推广seo顾问服务深圳
  • 网站可以做固定资产吗网址最新连接查询
  • 网页设计制作网站模板免费关键词推广效果
  • 建设网站的请示百度地图在线使用
  • 重庆展厅设计制作要点seo博客是什么意思
  • 怎么做网站二维码软件外包
  • 如何做购物返佣金网站什么是百度推广
  • 做百度推广和企业网站那个有效果吗十大收益最好的自媒体平台
  • 怎样自己搭建一个做影视的网站网站的优化
  • dwcc2017怎么做网站潮州网站建设
  • 织梦怎么修改网站标题爱站网收录
  • 重庆游戏网站开发百度站长工具平台
  • 永康市住房和城乡建设局网站排名优化公司哪家好
  • 静态网站添加到织梦商业策划公司十大公司
  • 做自己的网站要花多少钱如何在百度上做广告宣传
  • 余姚网站建设报价网站设计平台
  • 日照市做网站花西子网络营销策划方案
  • 北京网站设计公司排行榜互联网项目推广平台有哪些