项目简介
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 相关工具。
安装步骤
-
环境准备:
- 确保已安装 Python 3.8 或更高版本。
- 确保已安装 pip 包管理器。
- (可选)如果需要使用 Docker 部署,请安装 Docker 和 Docker Compose。
-
下载仓库代码:
- 使用 Git 克隆仓库到本地:
git clone https://github.com/tendayspace/CbetaMCP.git cd CbetaMCP
- 使用 Git 克隆仓库到本地:
-
安装依赖:
- 在项目根目录下,使用 pip 安装项目依赖:
pip install -r requirements.txt
- 在项目根目录下,使用 pip 安装项目依赖:
-
启动服务器:
-
本地运行:
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