使用说明

项目简介

Semantic Tool 是一个微服务,旨在通过语义相似性动态发现和调用外部工具。它利用向量嵌入技术,允许用户使用自然语言查询来匹配并调用工具注册表中的相关工具。此外,它还能够管理和集成多个MCP服务器,将这些服务器提供的工具统一管理和暴露。

主要功能点

  • 语义工具搜索: 通过文本描述的语义相似性查找相关工具。
  • 工具调用 API: 通过 RESTful 接口直接调用已注册的工具。
  • MCP 服务器管理: 注册和列出可用的 MCP 服务器会话。

安装步骤

本地安装 (使用 'uv')

  1. 确保已安装 Python 3.13+ 和 'uv'。
  2. 克隆仓库到本地。
  3. 在仓库根目录下,使用 'uv run semantictool' 命令启动服务。

Docker 安装 (推荐)

  1. 确保已安装 Docker 和 Docker Compose。
  2. 克隆仓库到本地。
  3. 在仓库根目录下,使用 'docker compose up' 命令启动服务。

服务器配置

Semantic Tool 的配置通过 'CONFIG_LOCATION' 环境变量指定,默认为 'file:///config.yaml'。你可以通过修改 'config.yaml' 文件或设置环境变量来配置服务器。

以下是一个 'config.yaml' 示例,用于配置 Semantic Tool 可以管理的 MCP 服务器:

mcp_servers:
  timeserver: # 服务器名称,可以自定义
    command: uvx # MCP 服务器的启动命令
    args: ["mcp-timeserver"] # 启动命令的参数
  searxng: # 服务器名称,可以自定义
    command: uvx # MCP 服务器的启动命令
    args: ["mcp-searxng"] # 启动命令的参数
  wolframalpha: # 服务器名称,可以自定义
    command: uvx # MCP 服务器的启动命令
    args: ["mcp-wolfram-alpha"] # 启动命令的参数
    env: # 可选的环境变量配置
      WOLFRAM_API_KEY: "your_api_key" # 例如,Wolfram Alpha API 密钥

embedding:
  model_name: "all-MiniLM-L6-v2" # 向量嵌入模型名称
  dim: 384 # 向量维度

配置说明:

  • 'mcp_servers': 定义 Semantic Tool 管理的 MCP 服务器列表。
    • 每个服务器配置项下:
      • 'command': 指定启动 MCP 服务器进程的命令,例如 'uvx', 'python' 等。
      • 'args': 一个字符串列表,包含传递给启动命令的参数。这些参数会传递给 'command' 指定的程序,用于启动 MCP 服务器。
      • 'env' (可选): 一个字典,用于设置 MCP 服务器进程运行时的环境变量。

基本使用方法

Semantic Tool 提供了一系列 RESTful API 接口,用于工具和服务器的管理与调用。

API 概览:

  • 工具端点 (Tools Endpoints):

    • 'GET /api/v1/tools/list': 获取所有可用工具的列表。
    • 'POST /api/v1/tools/call': 调用指定名称的工具,并传递参数。
    • 'POST /api/v1/tools/semantic': 根据文本查询的语义相似性查找相关工具。
  • 服务器端点 (Server Endpoints):

    • 'GET /api/v1/servers/list': 获取所有已激活的服务器会话列表。

示例 API 请求 (使用 curl):

  1. 列出所有工具:

    curl http://localhost:8000/api/v1/tools/list
  2. 调用工具 (假设有一个名为 'timeserver' 的工具):

    curl -X POST -H "Content-Type: application/json" -d '{"name": "timeserver", "arguments": {}}' http://localhost:8000/api/v1/tools/call
  3. 语义搜索工具 (例如,搜索与 "current time" 相关的工具):

    curl -X POST -H "Content-Type: application/json" -d '{"query": "current time", "quantity": 3}' http://localhost:8000/api/v1/tools/semantic
  4. 列出所有服务器:

    curl http://localhost:8000/api/v1/servers/list

请根据实际部署情况修改 'localhost:8000' 为 Semantic Tool 服务器的地址和端口。

信息

分类

开发者工具