项目简介
该GitHub仓库 'ai-service-chatbot' 的核心是一个AI驱动的聊天机器人应用(Viadrina 图书馆助手),它利用检索增强生成(RAG)、网络搜索以及Model Context Protocol (MCP) 工具来增强其功能。其中,'mcp_servers/dbis/server.py' 文件包含一个独立的MCP服务器实现,专门用于集成德国高校数据库信息系统(DBIS)。这个MCP服务器允许LLM客户端通过标准化的JSON-RPC协议调用工具,实时查询DBIS的学科列表和资源详情。
主要功能点
- DBIS工具集成: 作为LLM的外部工具,该服务器暴露了多个工具接口,允许LLM客户端查询DBIS的顶级资源、学科列表、资源ID以及按学科查询资源ID,极大地扩展了LLM的知识范围。
- 上下文感知查询: 支持通过HTTP请求头或工具参数传递机构ID('organization_id'),确保LLM对DBIS的查询结果与特定图书馆或机构的需求精确匹配。
- 健壮性与可配置性: 内置重试机制处理网络瞬时错误,增强了与DBIS上游API通信的稳定性。同时,支持通过环境变量配置DBIS上游API的认证信息和连接限制。
- 多传输协议支持: 服务器可配置通过 Std_IO, HTTP, SSE (Server-Sent Events), Streamable-HTTP 等多种传输协议运行,灵活适应不同的部署和集成环境。
安装步骤
- 环境准备: 确保您的系统安装了 Python 3.9+。
- 克隆仓库: 在命令行中执行以下命令,将项目仓库克隆到本地,并进入项目根目录:
git clone https://github.com/jmiba/ai-service-chatbot.git cd ai-service-chatbot - 创建并激活虚拟环境: 为了避免依赖冲突,建议创建并激活一个Python虚拟环境:
python3 -m venv .venv source .venv/bin/activate # Windows 用户请使用:.venv\Scripts\activate - 安装依赖: 运行以下命令安装所有必需的Python库,其中包括用于构建MCP服务器的 'fastmcp' 和进行HTTP请求的 'httpx':
pip install -r requirements.txt - 配置DBIS机构ID (可选但推荐): 如果您的DBIS接口需要特定的机构ID进行查询,请设置环境变量 'DBIS_ORGANIZATION_ID'。例如,您可以将其添加到 '~/.bashrc' 或 '.streamlit/secrets.toml' 文件中:
export DBIS_ORGANIZATION_ID="your_dbis_organization_id" - 配置DBIS上游API认证 (可选): 如果此MCP服务器需要向DBIS官方API进行认证(例如,使用API密钥或Bearer Token),请设置 'DBIS_API_AUTH' 环境变量:
export DBIS_API_AUTH="Bearer <your_dbis_api_token>"
服务器配置 (供MCP客户端使用)
此DBIS MCP服务器通常作为独立的HTTP服务运行。MCP客户端(例如Viadrina 图书馆助手应用或其他LLM客户端)需要配置服务器的网络地址(URL)、认证信息及其提供的工具列表。这些信息通常以JSON格式提供给MCP客户端,以便其能够通过标准化的JSON-RPC协议与服务器通信。
以下是一个示例配置,展示了MCP客户端如何连接到此DBIS MCP服务器:
{ "server_label": "dbis", "server_url": "http://127.0.0.1:8765/mcp", "authorization": "Bearer <YOUR_AUTH_TOKEN_FOR_MCP_SERVER>", "headers": { "X-DBIS-Organization-Id": "<YOUR_DBIS_ORGANIZATION_ID>" }, "allowed_tools": [ "dbis_top_resources", "dbis_list_subjects", "dbis_list_resource_ids", "dbis_get_resource", "dbis_list_resource_ids_by_subject" ], "require_approval": "never" }
参数注释:
- 'server_label': MCP服务器的唯一标识符,本例中用于DBIS集成为 'dbis'。
- 'server_url': MCP服务器的网络地址,例如 'http://127.0.0.1:8765/mcp'。您需要将此地址替换为您的MCP服务器实际运行的地址。此服务器支持 HTTP, SSE, Streamable-HTTP 等传输协议。
- 'authorization': 可选。如果此DBIS MCP服务器部署在受保护的环境中,并需要客户端提供认证,则在此处配置相应的认证令牌(例如 'Bearer <token>')。
- 'headers': 可选。客户端在调用工具时可以发送的额外HTTP头。'X-DBIS-Organization-Id' 是用于指定DBIS查询的机构ID,如果未在工具调用参数中显式提供,服务器会尝试从这个头获取。
- 'allowed_tools': 此MCP服务器向客户端声明它提供的工具列表。LLM客户端将能够调用这些列出的工具。
- 'require_approval': 决定LLM调用工具是否需要用户审批。本例中,配置为 'never' 表示LLM可以直接调用这些工具而无需用户手动批准。
基本使用方法
-
启动MCP服务器: 在终端中,确保您已激活虚拟环境并位于仓库根目录。运行以下命令启动MCP服务器作为HTTP服务(例如在本地 '8765' 端口):
python mcp_servers/dbis/server.py --transport http --host 127.0.0.1 --port 8765服务器启动后会监听指定的地址和端口,并等待MCP客户端的连接。
-
配置MCP客户端: 根据您使用的LLM客户端类型,将其配置为连接到此DBIS MCP服务器。将上述“服务器配置”示例中的 'server_url' 更新为MCP服务器实际运行的地址(例如 'http://127.0.0.1:8765/mcp'),并根据您的安全要求配置 'authorization' 和 'headers'。 如果客户端是 Viadrina 图书馆助手,您需要更新其 '.streamlit/secrets.toml' 文件中的 'DBIS_MCP_SERVER_URL' 和 'DBIS_MCP_AUTHORIZATION' 等配置项。
-
LLM调用工具: 一旦MCP客户端成功连接并加载了服务器提供的工具,LLM即可通过其推理过程,在需要时生成JSON-RPC请求,调用此DBIS MCP服务器提供的工具。例如,当用户询问“法兰克福(奥德)大学图书馆有哪些关于计算机科学的顶级数据库?”时,LLM可能会调用 'dbis_top_resources' 工具并传递 'subject_name="computer science"' 和 'organization_id="<your_org_id>"' 等参数。
-
接收响应: MCP服务器将处理LLM客户端发来的请求,调用DBIS API,并将查询到的DBIS数据(如资源列表、学科详情等)封装在JSON-RPC响应中返回给LLM客户端。LLM客户端随后可以利用这些数据生成更准确、更丰富的回答。
信息
分类
数据库与文件