在线书店AI代理服务器

一个基于模型上下文协议(MCP)的在线书店AI代理服务器,提供书籍搜索和对话响应功能。

  • by aga87
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 aga87/mcp-server

使用说明

使用自定义AI代理POC的在线书店简单MCP服务器

👁️ 概述

该项目是模型上下文协议(MCP)服务器和自定义AI驱动的书店代理的概念验证实现。 它演示了LLM如何调用MCP服务器公开的结构化工具(例如搜索书),以及单独的代理进程如何与该服务器通信以提供会话响应。

回购包含:

  • MCP服务器

    • 使用 @modelcontextprotocol/sdk
    • 展示与书店相关的工具示例(例如,取书)
    • 包含一个种子脚本,用于填充模拟书店数据
  • 一个定制的书店AI代理

    • 通过专用的MCP客户端服务作为客户端连接到MCP服务器:
      • 用途 @modelcontextprotocol/sdk 使用基于STDIO的进程传输与MCP服务器进行通信。
      • 在运行时发现可用的MCP工具并动态调用它们
    • 使用OpenAI回答用户查询
    • 决定何时调用MCP工具获取库存数据
    • 可以正常响应或逐个令牌流式响应
  • 轻量级Express API 为以下对象提供端点:

    • 非流式LLM答案
    • 流式传输LLM答案(通过HTTP分块)
    • 演示后端服务如何将代理暴露给外部客户端

🛠️ 技术栈

  • 模型上下文协议(MCP)——使用结构化工具调用 @modelcontextprotocol/sdk
  • OpenAI API–LLM响应+流输出
  • Express 5–简单的HTTP层
  • TypeScript–类型化代理+服务器
  • Zod–模式验证
  • Firebase Firestore-用于书店数据库

GitHub分支

  • main –生产部门。此分支表示代码的稳定和生产就绪版本。它用于部署到实时环境。

  • dev –发展部门。这是正在进行的开发工作的默认分支。在合并到主分支之前,它是实现和测试新功能和错误修复的地方。它用于部署到临时环境。

发展

脚本

  • npm run dev:server –在开发模式下运行MCP服务器,并进行热重新加载
  • npm run dev:agent –在开发模式下运行书店代理,并进行热重新加载
  • npm run build –将TypeScript代码编译为JavaScript
  • npm run start:server –以生产模式启动MCP服务器
  • npm run start:agent –以生产模式启动书店代理
  • npm run seed:bookstore –在Firestore数据库中添加模拟书店数据

使用Claude客户端在本地测试MCP服务器

  1. 下载克劳德桌面

  2. 找到配置文件

从Claud应用程序->设置>开发人员->编辑配置

路径可能是:

code "$HOME/Library/Application Support/Claude/claude_desktop_config.json"
  1. 准备配置文件
# check the absolute path to the server
❯ pwd

确保Claude将运行正确版本的Node:

which node
# should output smt like
> /Users/mistergreen/.nvm/versions/node/v22.17.0/bin/node

将此路径用作 command 在下面的服务器配置中(而不是简单地使用 node)

选项A-使用构建的JS文件

如果你运行npm run build并希望Claude调用编译后的JS:

{
  "mcpServers": {
    "demo-server": {
      "command": "/Users/mistergreen/.nvm/versions/node/v22.17.0/bin/node",
      "args": ["<ABSOLUTE-PATH>/dist/mcp-server/index.js"],
      "env": {
        "LOG_LEVEL": "info"
      }
    }
  }
}

选项B–直接运行TypeScript(对开发人员有好处)

如果你不想每次都构建,Claude可以通过tsx启动你的服务器:

{
  "mcpServers": {
    "demo-server": {
      "command": "/Users/mistergreen/.nvm/versions/node/v22.17.0/bin/node",
      "args": ["<ABSOLUTE-PATH>/node_modules/tsx/dist/cli.js", "<ABSOLUTE-PATH>/src/mcp-server/index.ts"],
      "env": {
        "LOG_LEVEL": "info"
      }
    }
  }
}
  1. 测试
  • 保存config.json。

  • 退出并重新启动 克劳德桌面.

  • 测试工具:开始新的聊天并尝试:

    • 使用a=2和b=3的添加工具
    • 克劳德应该发现添加工具。
  1. 调试
  • 从Claud应用程序->设置>开发人员->日志

测试代理API

  1. 启动MCP服务器
npm run dev:server
  1. 启动代理API
npm run dev:agent
  1. 向代理API发送请求

例如,使用curl:

curl -X POST http://localhost:5000/ask \
  -H "Content-Type: application/json" \
  -d '{"question": "Can you recommend me a sci-fi book?"}'