MCP客户端与服务器集成

一个使用OpenAI GPT-4和TypeScript实现的MCP(Model Context Protocol)客户端和服务器,提供天气查询、数学计算和随机事实获取等功能。

  • by alexnogueira
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 alexnogueira/mcp-test

使用说明

MCP测试-客户端和服务器端组件OpenAI

该项目使用OpenAI GPT-4和TypeScript实现了MCP客户端和服务器(模型上下文协议),并遵循MCP的官方教程。

项目结构

mcp-test/
├── src/
│   ├── client.ts    # Cliente MCP que usa OpenAI
│   └── server.ts    # Servidor MCP com ferramentas de exemplo
├── build/           # Código compilado
├── .env            # Chaves de API
├── package.json
├── tsconfig.json
└── README.md

先决条件

  • Node.js 17或更高级
  • OpenAI API 密钥
  • npm瓯纱

配置

  1. 安装依赖关系 :

    npm install
    
  2. 设置环境变量 : 文件 .env 应该已经包含您的 OpenAI 密钥:

    OPENAI_API_KEY=sua_chave_aqui
    
  3. 编译TypeScript:

    npm run build
    

Como Usar

1. 启动 MCP 服务器

Em-um终端,执行:

npm run start:server

服务器提供以下工具 :

  • get_alerts获取一个州的天气警报(2个字母的代码)
  • get_forecast: 获取坐标( 纬度、 经度) 的天气预报
  • add将两个数字相加
  • multiply乘以两个数字
  • get_random_fact获取一个随机有趣的事实

2. 启动MCP客户端

在另一个终端上,运行:

npm run start:client build/server.js

3. 与系统互动

现在,您可以提出使用可用工具的问题:

领事馆工作人员:

  • “旧金山的天气预报是什么?” (纬度: 37.7749, 经度: -122.4194)
  • “德克萨斯州有天气警报吗?”
  • “15+27是多少?”
  • “计算8×9”
  • “告诉我一个有趣的事实”

可用脚本

  • npm run build:编译TypeScript与JavaScript
  • npm run start:server:服务于MCP
  • npm run start:client:客户MCP
  • npm run dev:server:编译信息或服务
  • npm run dev:client:客户信息汇编

建筑

伺服MCP(server.ts)

  • 使用 MCP SDK 部署工具
  • 使用国家气象服务 (NWS) API 获取气象数据
  • 提供简单的数学工具和随机事实
  • 通过 stdio (MCP 标准) 通信

客户MCP(client.ts)

  • 通过 stdio 连接到 MCP 服务器
  • 使用 OpenAI GPT-4o-mini 处理查询
  • 将 MCP 工具转换为 OpenAI 格式
  • 当 LLM 决定使用工具时,自动运行工具

运行流程

  1. 连接客户端通过 stdio 连接到服务器
  2. 发现客户端列出服务器上可用的工具
  3. 咨询公司用户提问
  4. 分析OpenAI分析问题并决定使用哪些工具
  5. 执行客户端通过 MCP 服务器运行工具
  6. 答案OpenAI根据结果制定最终响应

使用的技术

  • TypeScript主要语言:
  • OpenAI SDK与GPT-4集成
  • MCP-SDK客户端和服务器之间的通信协议
  • 萨德: 方案验证
  • dotenv环境变量管理

解决问题

连接到服务器出错

  • 检查服务器路径是否正确
  • 请确认服务器已编译 (npm run build)

API 密钥错误

  • 验证se OPENAI_API_KEY 没有定义 .env
  • 确认密钥是有效的,并且有可用的点数

工具无法工作

  • 检查服务器是否正在运行
  • 对于气象工具,仅使用美国位置

下一步

  • 添加更多自定义工具
  • 工具之外的资源(Resources)
  • 添加预定义提示
  • 为客户创建 Web 界面
  • 实现缓存以提高性能

参考资料