使用 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 可以使用的工具的地方。以下是如何创建天气工具的基本示例:
登录后复制

html 复制代码
// 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 data
    return {
      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 连接到您的工具:
登录后复制

html 复制代码
async processQuery(query) {
  // Add user message to history
  this.chatHistory.push({ role: 'user', content: query });

  // Send to Claude with tool definitions
  const response = await this.anthropic.messages.create({
    model: "claude-3-5-sonnet-20241022",
    max_tokens: 1000,
    messages: this.chatHistory,
    tools: this.tools,
  });

  // Process the response
  for (const content of response.content) {
    if (content.type === "tool_use") {
      // Claude wants to use a tool
      const result = await this.mcp.callTool({
        name: content.name,
        arguments: content.input,
      });

      // Send tool result back to Claude
      this.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上获取完整代码。

原文地址:

本文由博客一文多发平台 OpenWrite 发布!

相关推荐
全栈前端老曹5 小时前
【包管理】read-pkg-up 快速上手教程 - 读取最近的 package.json 文件
前端·javascript·npm·node.js·json·nrm·package.json
水冗水孚5 小时前
告别黑盒!手写Windows版简易NodeMON,学习文件监听代码修改与进程服务重启知识
node.js·express
程序员爱钓鱼5 小时前
Node.js 编程实战:测试与调试 —— 调试技巧与性能分析
前端·后端·node.js
Mr -老鬼7 小时前
Node.js 打包二进制文件完全指南
node.js
xiaoxue..9 小时前
把大模型装进自己电脑:Ollama 本地部署大模型完全指南
javascript·面试·node.js·大模型·ollama
这就是佬们吗9 小时前
告别 Node.js 版本冲突:NVM 安装与使用全攻略
java·linux·前端·windows·node.js·mac·web
天意pt1 天前
Blog-SSR 系统操作手册(v1.0.0)
前端·vue.js·redis·mysql·docker·node.js·express
程序员iteng1 天前
AI一键图表生成、样式修改的绘图开源工具【easy-draw】
spring boot·开源·node.js
2301_818732061 天前
安装了node,但是cmd找不到node和npm,idea项目也运行失败 已解决
前端·npm·node.js
Benny的老巢1 天前
【n8n工作流入门02】macOS安装n8n保姆级教程:Homebrew与npm两种方式详解
macos·npm·node.js·n8n·n8n工作流·homwbrew·n8n安装