使用说明
使用自定义AI代理POC的在线书店简单MCP服务器
👁️ 概述
该项目是模型上下文协议(MCP)服务器和自定义AI驱动的书店代理的概念验证实现。 它演示了LLM如何调用MCP服务器公开的结构化工具(例如搜索书),以及单独的代理进程如何与该服务器通信以提供会话响应。
回购包含:
-
MCP服务器
- 使用
@modelcontextprotocol/sdk - 展示与书店相关的工具示例(例如,取书)
- 包含一个种子脚本,用于填充模拟书店数据
- 使用
-
一个定制的书店AI代理
- 通过专用的MCP客户端服务作为客户端连接到MCP服务器:
- 用途
@modelcontextprotocol/sdk使用基于STDIO的进程传输与MCP服务器进行通信。 - 在运行时发现可用的MCP工具并动态调用它们
- 用途
- 使用OpenAI回答用户查询
- 决定何时调用MCP工具获取库存数据
- 可以正常响应或逐个令牌流式响应
- 通过专用的MCP客户端服务作为客户端连接到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代码编译为JavaScriptnpm run start:server–以生产模式启动MCP服务器npm run start:agent–以生产模式启动书店代理npm run seed:bookstore–在Firestore数据库中添加模拟书店数据
使用Claude客户端在本地测试MCP服务器
-
下载克劳德桌面
-
找到配置文件
从Claud应用程序->设置>开发人员->编辑配置
路径可能是:
code "$HOME/Library/Application Support/Claude/claude_desktop_config.json"
- 准备配置文件
# 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"
}
}
}
}
- 测试
-
保存config.json。
-
退出并重新启动 克劳德桌面.
-
测试工具:开始新的聊天并尝试:
- 使用a=2和b=3的添加工具
- 克劳德应该发现添加工具。
- 调试
- 从Claud应用程序->设置>开发人员->日志
测试代理API
- 启动MCP服务器
npm run dev:server
- 启动代理API
npm run dev:agent
- 向代理API发送请求
例如,使用curl:
curl -X POST http://localhost:5000/ask \
-H "Content-Type: application/json" \
-d '{"question": "Can you recommend me a sci-fi book?"}'