书籍价格 MCP 服务器
一个模型上下文协议(MCP)服务器,通过标准化接口提供书籍价格信息。该服务器使人工智能助手和其他MCP客户端能够以编程方式获取书籍价格。
📋 概述
这个MCP服务器实现了一个简单的书籍价格获取服务,该服务可以与任何兼容MCP的客户端(如Claude桌面版、集成开发环境(IDEs)或自定义应用程序)集成。它提供了查询书籍价格的工具和资源。
什么是MCP?
模型上下文协议(MCP)是一种开放协议,用于规范应用程序如何向大型语言模型(LLM)提供上下文信息。MCP服务器可以公开工具、资源和提示,使AI助手能够动态地发现并使用这些内容。
✨ 特点
- 工具集成提供一个
getPriceOfBookByName一个接受书名并返回其价格的工具 - 资源终端点暴露了
price://books获取书籍价格信息的资源 - 类型安全使用TypeScript和Zod构建,以实现强大的类型验证
- 简单集成使用stdio传输方式,便于与MCP客户端集成
🔧 先决条件
- Node.js 18.x或更高版本
- npm(Node Package Manager) 或者 纱线 包管理器
📦 安装
- 克隆仓库:
git clone
cd book-price-mcp-server- 安装依赖项:
npm install🚀 使用方法
运行服务器
使用以下命令启动MCP服务器:
npm start或者直接使用 tsx:
npx tsx server.ts服务器将启动并通过标准输入输出(stdio)监听MCP客户端的连接。
与MCP客户端集成
Claude桌面配置
将此服务器添加到您的Claude桌面配置文件中:
MacOS(发音为“麦克斯”): ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"book-price-fetcher": {
"command": "npx",
"args": ["tsx", "/absolute/path/to/book-price-mcp-server/server.ts"]
}
}
}替换 /absolute/path/to/book-price-mcp-server/ (请)替换为您的项目目录的实际路径。
📚 API 参考
工具
getPriceOfBookByName
根据书名获取书籍的价格。
参数:
bookName(字符串,必填):要查询的书籍名称
返回值:
- 以卢比计价的价格(字符串格式)
示例用法:
// When called from an MCP client
{
"bookName": "The Great Gatsby"
}
// Returns: "1700 rupees" (based on character length calculation)资源
price://books
一个提供书籍价格服务信息的资源端点。
URI(统一资源标识符): price://books 内容类型: text/plain 描述按书名提供书籍价格
🛠️ 开发
项目结构
book-price-mcp-server/
├── server.ts # Main MCP server implementation
├── package.json # Project dependencies and scripts
├── package-lock.json # Locked dependency versions
└── README.md # This file技术栈
- @modelcontextprotocol/sdk(可译为:“@模型上下文协议/SDK”或根据具体语境简化为“模型上下文协议SDK”,但通常直接保留原名以体现其特定含义和用途)用于构建服务器的MCP SDK
- TSX(通常指多伦多证券交易所)TypeScript 执行环境
- “zod”在中文中没有直接对应的翻译,因为它可能是一个特定领域或语境下的术语或专有名词。如果“zod”是在某个特定上下文中出现的,那么需要根据该上下文来确定其准确含义。如果仅从字面意义来看,“zod”可能是一个音译词,或者是一个没有固定含义的词汇。在缺乏具体上下文的情况下,很难给出一个准确的中文翻译类型安全的模式验证
- TypeScript类型安全的开发
扩展服务器
要修改价格计算逻辑,请更新 getPriceOfBookByName 函数在 server.ts:
async function getPriceOfBookByName(bookName: string) {
// Replace with your actual price fetching logic
// e.g., database query, API call, etc.
return `${bookName.length * 100} rupees`;
}添加新工具
要添加额外工具,请使用 server.tool() 方法:
server.tool(
'toolName',
'Tool description',
{ paramName: z.string() },
async ({ paramName }) => {
// Tool implementation
return {
content: [{ type: 'text', text: 'result' }]
}
}
);🧪 测试
服务器启动后,您可以通过以下方式对其进行测试:
- 与Claude桌面版集成(参见上述配置)
- 使用任何与MCP兼容的客户端
- 检查控制台输出以查找“书价MCP已启动”的消息
📝 笔记
- 当前实现使用了一个基于书名长度的模拟价格计算方法
- 对于生产环境使用,请将模拟逻辑替换为实际的价格数据源
- 服务器使用stdio传输协议与MCP客户端进行通信
🤝 贡献(或:参与贡献)
欢迎贡献!请随时提交拉取请求。
- 为仓库创建分支
- 创建你的特性分支(
git checkout -b feature/AmazingFeature) - 提交您的更改(
git commit -m 'Add some AmazingFeature') - 推送到分支(
git push origin feature/AmazingFeature) - 提交一个拉取请求
📄 许可证
ISC(互联网安全中心)
🔗 资源
❓ 故障排除
服务器未启动
- 确保已安装 Node.js 18 或更高版本:
node --version - 检查所有依赖项是否已安装:
npm install
Claude Desktop 未检测到服务器
- 验证配置文件中的绝对路径
- 更新配置后重启Claude桌面版
- 检查服务器日志中的错误信息
连接问题
- 确保服务器正在使用stdio传输方式
- 验证没有其他进程正在干扰标准输入/输出
______________________________________________________________________
\*\*使用模型上下文协议,满怀热爱地构建而成\*\*
