使用说明

项目简介

本项目是 Tiny Smart Workers (TSW) 项目的一部分,提供了一个基于 Model Context Protocol (MCP) 的服务器实现,专注于知识库 (Knowledge Base) 资源的托管和访问。通过此服务器,LLM 客户端可以方便地查询和获取知识库中的条目,从而为 LLM 应用提供结构化的上下文信息。

主要功能点

  • 资源托管与访问: 通过 MCP 协议提供对知识库资源的标准化访问接口。
  • 知识库条目检索: 允许客户端通过 MCP 请求检索和获取知识库条目。
  • 快速部署: 基于 'fastmcp' 框架,易于配置和启动。

安装步骤

  1. 环境配置: 参考仓库根目录 'README.md' 文件中的 "How to Run" -> "1. configure your environment" 进行环境配置,例如配置 Python 虚拟环境和必要的依赖。
  2. 安装开发依赖: 根据 'README.md' 中 "MCP Server" -> "prerequisites" 部分的说明,执行以下命令安装开发依赖:
    uv add --dev .
    uv build
    uv sync
    这些命令将安装项目自身作为开发依赖,并构建和同步环境。

服务器配置

MCP 客户端需要以下配置信息来连接到 TSW 知识库 MCP 服务器。请将以下 JSON 配置添加到您的 MCP 客户端配置中。

{
  "serverName": "My-KB",
  "command": "python",
  "args": [
    "-m",
    "mcp.server.fastmcp",
    "mcp/kb_exploer.py"
  ],
  "transport": "stdio"
}

配置参数说明:

  • 'serverName': 服务器名称,设置为 'My-KB' (与 'mcp/kb_exploer.py' 中 'FastMCP("My-KB")' 的定义一致)。
  • 'command': 启动服务器的命令,这里使用 'python'。
  • 'args': 启动服务器命令的参数列表:
    • '-m mcp.server.fastmcp': 以模块方式运行 'mcp.server.fastmcp',这是 MCP 服务器的入口点。
    • 'mcp/kb_exploer.py': 指定 MCP 服务器的实现文件,该文件定义了知识库资源。
  • 'transport': 传输协议,默认为 'stdio' (标准输入输出)。

注意:

  • 请确保您的 Python 环境中已安装所有必要的依赖,可以通过执行 'uv sync' 命令来安装。
  • 上述配置假设您在项目根目录下启动 MCP 客户端,如果客户端和服务器部署路径不同,请根据实际情况调整 'args' 中 'mcp/kb_exploer.py' 的路径。
  • 配置文件 'config/kb.json' 中包含了知识库连接配置,请根据您的知识库环境进行相应的配置。

基本使用方法

  1. 启动 MCP 服务器: MCP 客户端配置完成后,当客户端尝试连接 'My-KB' 服务器时,将自动执行配置中的命令来启动服务器。实际上,由于配置的是 'stdio' 传输方式,服务器会作为子进程启动。
  2. 客户端请求资源: LLM 客户端可以使用 MCP 协议发送请求到服务器,以访问名为 'tsw://kb' 的知识库资源。具体的请求格式和参数需要参考 MCP 协议文档以及 LLM 客户端的实现。
  3. 获取知识库条目: 服务器会将知识库条目列表作为资源返回给客户端。客户端可以进一步处理这些条目,以作为 LLM 的上下文信息。

示例操作 (概念性):

假设 MCP 客户端发送一个请求以获取 'tsw://kb' 资源:

{
  "jsonrpc": "2.0",
  "method": "getResource",
  "params": {
    "resourceName": "tsw://kb"
  },
  "id": 1
}

服务器收到请求后,会执行 'mcp/kb_exploer.py' 中 '@mcp.resource("tsw://kb")' 装饰的 'get_entry()' 函数,该函数会调用 'agent.kb.list_kb_entries(config)' 获取知识库条目列表,并将结果以 JSON-RPC 响应的形式返回给客户端。

{
  "jsonrpc": "2.0",
  "result": "知识库条目1\n知识库条目2\n知识库条目3\n...",
  "id": 1
}

客户端可以解析响应结果,并将其用于后续的 LLM 应用逻辑中。

信息

分类

数据库与文件