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

使用 MCP(模型上下文协议)和 Claude 在 Node.js 中构建聊天应用程序

大家好,这里是架构资源栈!点击上方关注,添加“星标”,一起学习大厂前沿架构!

使用 Node.js 中的 MCP(模型上下文协议)构建聊天应用程序

我最近开发了一个简单的聊天应用程序,允许 Claude 使用模型上下文协议 (MCP) 调用外部工具。你也可以按照以下方法构建一个。

什么是 MCP?

模型上下文协议 (MCP) 是 Claude 等 AI 模型与外部工具交互的标准化方式。它提供了以下结构化格式:

  • 定义人工智能可以使用的工具
  • 从人工智能向工具发送请求
  • 将结果返回给人工智能

项目结构

该应用程序主要有三个部分:

  1. Express 服务器server.js):处理 Web 请求和用户会话
  2. MCP 客户端mcpClient.js):连接到 Claude 和 MCP 服务器
  3. MCP 服务器mcpServer.js):定义并实现工具

聊天界面

建筑学

如何向 MCP 服务器添加工具

MCP 服务器是定义 Claude 可以使用的工具的地方。以下是如何创建天气工具的基本示例:

// In mcpServer.js
import { Server } from "@modelcontextprotocol/sdk/server/index.js";const server = new Server({ name: "mcp-weather-server", version: "1.0.0" });// Define a weather tool
server.defineTool({name: "getCurrentWeather",description: "Get the current weather for a location",inputSchema: {type: "object",properties: {location: {type: "string",description: "The city and state, e.g. San Francisco, CA",},unit: {type: "string",enum: ["celsius", "fahrenheit"],description: "The unit of temperature to use",},},required: ["location"],},handler: async function (args) {const { location, unit = "celsius" } = args;// Here you would typically call a weather API// For demo purposes, we're returning mock datareturn {location: location,temperature: unit === "celsius" ? 22 : 72,conditions: "Sunny",humidity: "45%",windSpeed: "10 km/h",};},
});// Start the server
server.start();

Enter fullscreen mode Exit fullscreen mode

可用的工具类型

您可以创建不同类型的工具供 Claude 使用:

  1. 数据检索工具:获取天气、新闻、股票价格等。
  2. 计算工具:执行复杂的计算或数据分析
  3. 数据库工具:查询或更新数据库
  4. API 集成工具:连接外部服务
  5. 文件处理工具:读取、写入或分析文件

MCP 客户端的工作原理

MCP 客户端将 Claude 连接到您的工具:

async processQuery(query) {// Add user message to historythis.chatHistory.push({ role: 'user', content: query });// Send to Claude with tool definitionsconst response = await this.anthropic.messages.create({model: "claude-3-5-sonnet-20241022",max_tokens: 1000,messages: this.chatHistory,tools: this.tools,});// Process the responsefor (const content of response.content) {if (content.type === "tool_use") {// Claude wants to use a toolconst result = await this.mcp.callTool({name: content.name,arguments: content.input,});// Send tool result back to Claudethis.chatHistory.push({role: "user",content: JSON.stringify(result.content),});}}
}

Enter fullscreen mode Exit fullscreen mode

设置你的项目

要构建您自己的 MCP 聊天应用程序:

  1. 克隆存储库:git clone https://github.com/RajeshRenato/mcp-node
  2. 安装依赖项:npm install
  3. 将您的 Anthropic API 密钥添加到.env文件
  4. 在中创建您的工具mcpServer.js
  5. 启动服务器:node server.js

您可以构建的示例工具

以下是一些您可以添加的工具的想法:

  • 新闻搜索:获取有关某个主题的最新新闻文章
  • 维基百科查找:搜索并总结维基百科内容
  • 日历集成:检查或创建日历事件
  • 语言翻译:在多种语言之间翻译文本
  • 图像生成:根据文本描述生成图像(使用 DALL-E 或类似工具)

结论

模型上下文协议 (MCP) 为 AI 应用开辟了激动人心的可能性。通过授予 Claude 访问外部工具的权限,您可以构建功能强大的交互式应用程序,将 AI 与实时数据和功能相结合。

想亲自尝试一下吗?在GitHub上获取完整代码。

原文地址:

http://www.xdnf.cn/news/3515.html

相关文章:

  • 海量数据存储与分析:HBase vs ClickHouse vs Doris 三大数据库优劣对比指南
  • 理解计算机系统_网络编程(6)_web服务器
  • PDF本地化开源项目推荐
  • AI Agent(2):Agent技术架构
  • terraform output输出实战
  • JVM——Java 虚拟机是如何加载 Java 类的?
  • 【AI提示词】成本效益分析师
  • 2025年人工智能火爆技术总结
  • PS_POR_B复位的重要性
  • 并发设计模式实战系列(11):两阶段终止(Two-Phase Termination)
  • 量子加密通信:打造未来信息安全的“铜墙铁壁”
  • ffmpeg 元数据
  • 无缝监控:利用 AWS X-Ray 增强 S3 跨账户复制的可见性
  • TensorRt10学习第一章
  • Redis的键过期删除策略与内存淘汰机制详解
  • 【C++指南】vector(三):迭代器失效问题详解
  • 【C++重载操作符与转换】输入和输出操作符
  • MERGE存储引擎(介绍,操作),FEDERATED存储引擎(介绍,操作),不同存储引擎的特性图
  • Ocelot与.NETcore7.0部署(基于腾讯云)
  • [更新完毕]2025五一杯A题五一杯数学建模思路代码文章教学:支路车流量推测问题
  • Python-pandas-json格式的数据操作(读取数据/写入数据)
  • Playwright MCP 入门实战:自动化测试与 Copilot 集成指南
  • 【阿里云大模型高级工程师ACP习题集】2.8 部署模型
  • linux python3安装
  • 游戏引擎学习第253天:重新启用更多调试界面
  • 开源飞控软件:推动无人机技术进步的引擎
  • C# | 基于C#实现的BDS NMEA-0183数据解析上位机
  • MATLAB 中zerophase函数——零相位响应
  • 【大模型】图像生成:StyleGAN3:生成对抗网络的革命性进化
  • 【dify—8】Chatflow实战——博客文章生成器