模型上下文协议系统

一个基于TypeScript的MCP客户端-服务器系统,提供天气信息查询和Web界面交互功能。

  • by Vrishant
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 vrishant/openai-mcp.enabled-chatbot

使用说明

MCP(模型上下文协议)多项目库

该存储库包含多个相互连接的项目,这些项目共同实现了一个具有web界面和天气信息MCP服务器的模型上下文协议(MCP)客户端-服务器系统。


项目结构

  • mcp客户端打字脚本
    MCP协议的TypeScript客户端实现。

    • 通过stdio传输连接到MCP服务器脚本(JavaScript或Python)。
    • 使用OpenAI的聊天补全功能和集成的MCP工具来处理查询。
    • 提供MCPClient类来管理连接、查询处理和工具调用。
    • 可以独立运行,也可以被其他项目用作库。
  • mcp网站
    MCP客户端的web客户端和后端接口。

    • 后端使用Express和TypeScript构建。
    • 为用户提供一个简单的前端界面,用于输入查询和接收响应。
    • 连接到MCP客户端(从 mcp-client-typescript)并将用户查询转发给它。
    • 提供REST API终结点 /query 用于通过POST请求处理查询。
    • 前端包括一个用于查询输入的文本区域,并显示后端的响应。
  • 天气2
    提供天气相关工具的MCP服务器实现。

    • 使用MCP SDK服务器组件使用TypeScript构建。
    • 提供两个主要工具:
      • get-alerts:从美国国家气象局(NWS)API获取美国各州的天气警报。
      • get-forecast:从NWS API获取给定纬度和经度的天气预报。
    • 通过stdio传输连接并监听MCP客户端请求。

它是如何协同工作的

  1. 这 天气2 该项目作为MCP服务器运行,公开与天气相关的工具。
  2. 这 mcp客户端打字脚本 该项目充当MCP客户端,连接到MCP服务器(例如weather2),并使用MCP工具增强的OpenAI聊天完成来处理查询。
  3. 这 mcp网站 该项目提供了一个连接到MCP客户端的web界面和后端,允许用户通过web浏览器发送查询并接收响应。

设置和使用

先决条件

  • Node.js(建议使用v18+)
  • npm或纱线
  • TypeScript全局安装或通过项目devDependencies安装

运行气象MCP服务器

  1. 导航到 weather2 目录:
    cd weather2
    
  2. 安装依赖项:
    npm install
    
  3. 构建项目:
    npm run build
    
  4. 运行服务器(这将在stdio上启动MCP服务器):
    node build/index.js
    

运行MCP客户端

  1. 导航到 mcp-client-typescript 目录:
    cd ../mcp-client-typescript
    
  2. 安装依赖项:
    npm install
    
  3. 构建项目:
    npm run build
    
  4. 运行客户端,提供MCP服务器脚本的路径(例如weather2 build-index.js):
    npm start
    

运行MCP Web界面

  1. 导航到 mcp-web 目录:
    cd ../mcp-web
    
  2. 安装依赖项:
    npm install
    
  3. 启动web服务器:
    npm start
    
  4. 打开浏览器并转到:
    http://localhost:3000
    
  5. 使用web界面键入查询并从连接到MCP服务器的MCP客户端接收响应。

环境变量

  • OPENAI_API_KEY (必填) mcp-client-typescript):用于聊天完成的OpenAI API密钥。
  • MCP_SERVER_SCRIPT (可选 mcp-web):要连接的MCP服务器脚本的路径(默认为占位符路径)。

使用的技术

  • TypeScript
  • Node.js
  • Express(用于web后端)
  • OpenAI SDK
  • 模型上下文协议SDK
  • 美国国家气象局API(适用于weather2服务器)
  • Zod(用于weather2中的输入验证)

许可证

该项目根据ISC许可证获得许可。


联系

如有疑问或需要支持,请在此存储库中打开问题。