项目简介

CbetaMCP工具聚合服务是一个基于 Model Context Protocol (MCP)FastAPI 框架构建的后端服务,旨在将多个 CBETA Online API 工具整合到一个统一的接口平台。它允许开发者通过标准化的 JSON-RPC 协议,便捷地访问和调用各种佛典数据查询和检索工具,为 LLM 应用提供强大的上下文信息和功能扩展能力。

主要功能点

  • 多工具自动注册: 通过目录扫描机制,自动发现并注册 'tools/' 目录下新增的工具模块,无需手动配置。
  • 标准化接口: 所有工具接口统一通过 POST 请求和 JSON 格式进行交互,输入输出数据结构清晰,易于集成。
  • 异步HTTP请求: 利用 'httpx' 异步客户端调用 CBETA Online API,提高服务响应速度和并发处理能力。
  • JSON 响应格式: 采用统一的 JSON 响应结构 '{"status": "success" / "error", "result": {...} / "message": "..."}',方便客户端解析和处理。
  • Docker 一键部署: 提供 Dockerfile 和 docker-compose.yml 文件,支持快速容器化部署,简化环境配置和部署流程。
  • 模块化扩展: 工具模块开发规范清晰,开发者可根据自身需求轻松扩展新的 CBETA 相关工具。

安装步骤

  1. 环境准备:

    • 确保已安装 Python 3.8 或更高版本。
    • 确保已安装 pip 包管理器。
    • (可选)如果需要使用 Docker 部署,请安装 Docker 和 Docker Compose。
  2. 下载仓库代码:

    • 使用 Git 克隆仓库到本地:
      git clone https://github.com/tendayspace/CbetaMCP.git
      cd CbetaMCP
  3. 安装依赖:

    • 在项目根目录下,使用 pip 安装项目依赖:
      pip install -r requirements.txt
  4. 启动服务器:

    • 本地运行:

      python main.py

      默认服务地址为 'http://localhost:8000/mcp'。

    • Docker 部署:

      docker-compose up --build -d

      服务同样运行在 'http://localhost:8000/mcp'。

服务器配置

对于 MCP 客户端,需要配置连接到 CbetaMCP 服务器的信息。以下是一个 JSON 格式的配置示例,您可以将其添加到 MCP 客户端的服务器列表中。

{
  "server_name": "CbetaMCP Tools",
  "command": "python",
  "args": [
    "main.py"
  ],
  "description": "CBETA Online API 工具聚合服务,提供佛典检索、目录查询等功能。",
  "base_url": "http://localhost:8000"
}

配置参数说明:

  • 'server_name': 服务器名称,自定义,用于在 MCP 客户端中标识该服务器。例如:"CbetaMCP Tools"。
  • 'command': 启动服务器的命令。 由于 'main.py' 是 Python 脚本,所以这里设置为 "python"。
  • 'args': 启动命令的参数列表。 'main.py' 是要执行的脚本文件。
  • 'description': 服务器的简要描述,方便用户了解服务器的功能。例如:"CBETA Online API 工具聚合服务,提供佛典检索、目录查询等功能。"
  • 'base_url': MCP 服务器的基础 URL,客户端将通过此 URL 与服务器通信。默认为 "http://localhost:8000"。 如果你修改了 'main.py' 中的 'BASE_URL' 环境变量或 Docker 端口映射,请相应地更新此配置。

注意: 上述配置假设 CbetaMCP 服务器和 MCP 客户端运行在同一台机器上,服务器地址为 'localhost:8000'。 如果服务器运行在远程机器或使用了不同的端口,请根据实际情况修改 'base_url' 和其他相关配置。

基本使用方法

CbetaMCP 服务器的所有工具接口都通过 '/mcp' 路径以 POST 请求方式访问。 请求体为 JSON 格式,包含 'method' 和 'params' 字段。 'method' 字段指定要调用的工具函数名,'params' 字段为工具所需的参数。

示例请求 (以 'cbeta_fulltext_search' 工具为例):

{
  "method": "cbeta_fulltext_search",
  "params": {
    "q": "法鼓",
    "fields": "work,juan,term_hits",
    "rows": 3
  }
}

示例响应 (成功):

{
  "status": "success",
  "result": {
    "num_found": 2628,
    "total_term_hits": 3860,
    "results": [
      {
        "id": 12298,
        "juan": 1,
        "category": "法華部",
        "canon": "T",
        "vol": "T09",
        "work": "T0270",
        "term_hits": 31,
        "title": "大法鼓經",
        "creators": "求那跋陀羅",
        "file": "T09n0270",
        "time_from": 420,
        "time_to": 479
      }
    ]
  }
}

查看可用工具列表:

CbetaMCP 服务器会自动注册 'tools/' 目录下定义的工具。 您可以通过查阅 'tools/' 目录下的文件,或者阅读每个工具文件中的详细注释 (如 'tools/cebta/search/tools_1.py' 文件开头的注释),了解每个工具的功能、参数和使用方法。 工具函数名 (例如 'cbeta_fulltext_search') 即为请求 JSON 中的 'method' 字段值。

信息

分类

网页与API