使用说明
书籍数据库 MCP 服务器
[!NOTE](注:此标记通常用于指示注意事项或重要提示,直接翻译为中文即“注意”) 这是一个小型的MCP(模型上下文协议)演示服务器,用于GitHub Copilot代理和MCP培训课程期间。它在一篇解释中被用作演示 副驾驶代理与多控制器协议(或:协同驾驶代理与多点控制协议) 仓库。
功能性的
MCP服务器的图书数据库提供了一套简单的工具集,使具备MCP功能的代理或客户端能够查询经过整理的图书数据库。主要功能包括:
- 通过书名检索书籍的基本信息(ISBN、书名、作者)。
- 通过ISBN检索书籍的详细信息(摘要、日期、作者)。
- 批量查询:通过书名列表或ISBN列表请求多本书籍。
- 使用小型JSON文件作为支撑数据集(便于演示时阅读和修改)。
技术
- 运行时:Node.js(TypeScript 源码在
src/)。 - 协议:使用模型上下文协议(MCP)
@modelcontextprotocol/sdk。 - 传输:标准I/O传输(
StdioServerTransport) —— 这个服务器通过标准输入输出进行通信。 - 验证:对输入模式进行验证
zod针对每种工具。 - 数据:
src/data/books.json(基本列表)和src/data/books-details.json(摘要及日期)。 - 在……中实现的工具
src/index.ts:get-book-by-isbn— 取用isbn: string(10个字符)get-book-by-title— 取(或:拿)title: stringget-books-by-titles— 采取titles: string[]get-books-by-isbn-list— 采取;拿取;花费(根据上下文,具体含义可能有所不同)isbnList: string[](10个字符的项目)
设置
先决条件: Node.js(建议18+版本)和npm。
- 克隆仓库并进入演示文件夹:
git clone <repo-url>
cd <repo-root>
- 安装依赖项:
npm install
- 构建TypeScript源代码:
npm run build
构建生成 build/index.js 和(the) build 文件夹已在 package.json 中列出 files。
跑
启动MCP服务器(它在stdio上运行,并将启动日志写入stderr):
node build/index.js
当成功运行时,你应该在标准错误输出(stderr)上看到一条类似的信息:
Book database MCP Server running on stdio
在演示过程中,你无需手动启动服务器,因为它将由(系统/程序)自动启动 Web应用演示仓库中的MCP服务器配置。
使用示例
服务器提供了上述列出的工具名称。示例调用(概念性):
-
通过ISBN获取详细信息:
- 工具:
get-book-by-isbn - 输入:
{ "isbn": "0451524935" }# 返回“1984”的详细信息
- 工具:
-
通过标题获取基本信息:
- 工具:
get-book-by-title - 输入:
{ "title": "The Hobbit" }
- 工具:
-
按标题批量查询:
- 工具:
get-books-by-titles - 输入:
{ "titles": ["1984", "Brave New World"] }
- 工具:
数据
这些数据集是小型的JSON文件,位于 src/data/ 因此,您可以在研讨会期间轻松调整条目:
src/data/books.json— 一组简单的书籍对象(ISBN、标题、作者)src/data/books-details.json— 带有a的物体books包含摘要和日期的数组
注释
- 这个项目规模较小,且重点在于展示如何通过MCP(可能是指某种中间件或通信协议)来提供工具服务。
- 如果你想在本地交互式地测试工具,可以编写一个使用(相关技术或API的)小型Node客户端
StdioClientTransport来自@modelcontextprotocol/sdk并以此服务器作为子进程启动,以便它们的stdio流(标准输入输出流)能够相互连接。