书籍价格查询服务

一个通过标准化接口提供书籍价格信息的MCP服务器,使AI助手和其他MCP客户端能够以编程方式获取书籍价格。

  • by anupray95
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 anupray95/book-price-mcp-server

使用说明

书籍价格 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) 或者 纱线 包管理器

📦 安装

  1. 克隆仓库:
git clone <repository-url>
cd book-price-mcp-server
  1. 安装依赖项:
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

技术栈

扩展服务器

要修改价格计算逻辑,请更新 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' }]
        }
    }
);

🧪 测试

服务器启动后,您可以通过以下方式对其进行测试:

  1. 与Claude桌面版集成(参见上述配置)
  2. 使用任何与MCP兼容的客户端
  3. 检查控制台输出以查找“书价MCP已启动”的消息

📝 笔记

  • 当前实现使用了一个基于书名长度的模拟价格计算方法
  • 对于生产环境使用,请将模拟逻辑替换为实际的价格数据源
  • 服务器使用stdio传输协议与MCP客户端进行通信

🤝 贡献(或:参与贡献)

欢迎贡献!请随时提交拉取请求。

  1. 为仓库创建分支
  2. 创建你的特性分支(git checkout -b feature/AmazingFeature)
  3. 提交您的更改(git commit -m 'Add some AmazingFeature')
  4. 推送到分支(git push origin feature/AmazingFeature)
  5. 提交一个拉取请求

📄 许可证

ISC(互联网安全中心)

🔗 资源

❓ 故障排除

服务器未启动

  • 确保已安装 Node.js 18 或更高版本: node --version
  • 检查所有依赖项是否已安装: npm install

Claude Desktop 未检测到服务器

  • 验证配置文件中的绝对路径
  • 更新配置后重启Claude桌面版
  • 检查服务器日志中的错误信息

连接问题

  • 确保服务器正在使用stdio传输方式
  • 验证没有其他进程正在干扰标准输入/输出

**使用模型上下文协议,满怀热爱地构建而成**