我有这么一个需求:查询某个云服务商的服务器账单信息。比如我想查询Volcengine上所有昵称包含nginx的服务器的账单信息。(话说怎么不直接用sql呢,一定不是因为我懒得写sql吧?)

我的GenAI Toolbox配置如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
sources:
  cost_analysis:
    kind: postgres
    host: "10.0.2.49"
    port: 5432
    user: "postgres"
    password: "123456"
    database: "cost_analysis_db"
tools:
  find-server-billing-by-nickname-and-provider:
    kind: postgres-sql
    source: cost_analysis
    statement: |
      SELECT
        s.instance_id,
        s.nickname,
        b.billing_cycle,
        b.pretax_amount,
        b.provider
      FROM
        servers AS s
      JOIN
        billing_details AS b
        ON s.instance_id = b.resource_id AND s.provider = b.provider
      WHERE
        s.nickname LIKE '%' || $1 || '%'
        AND s.provider = $2
      LIMIT 20
    description: |
      根据服务器昵称关键字和云服务商名称查询服务器及其账单信息。
      输入 nickname 关键字(支持模糊匹配)和 provider(如 Volcengine,AlibabaCloud,TencentCloud),返回相关服务器和账单数据。
      示例参数:
      {
        "nickname_keyword": "nginx",
        "provider": "Volcengine"
      }
    parameters:
      - name: nickname_keyword
        type: string
        description: 服务器昵称的关键字,支持模糊查询(如 nginx)
      - name: provider
        type: string
        description: 云服务商名称(如 Volcengine)

在这里我定义了两个变量nickname_keywordprovider,分别表示服务器昵称的关键字和云服务商名称。

并且通过statement限制了LLM能使用的语句

通过只改变两个变量来实现安全性

谷歌官方也给出了警告

想运行Toolbox的MCP服务,需要下载toolbox二进制文件,我这里使用的是Windows版本的toolbox,版本是0.9.0

这里我下在D:\genai_toolbox,下载好后配置下环境变量,添加toolbox.exe所在目录到PATH中。

然后记得记得重启VScode,不然你在后面用VScode可能读不到PATH

这里我选择使用VScode进行MCP的连接

在你想使用这个MCP的项目.vscode目录创建一个名叫mcp.json的文件,内容如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
{
    "servers": {
    "find-server-billing-by-nickname-and-provider": {
      "type": "stdio",
      "command": "toolbox",
      "args": [
              "--tools-file",
              "D:\\genai_toolbox\\cost_anaysis_dbtool.yaml", 
              "--stdio"
          ]
    }
   }
}

其中,"D:\\genai_toolbox\\cost_anaysis_dbtool.yaml"路径是我存储之前写的yaml配置文件的路径。

mcp.json中配置好后,就可以点击运行来启动MCP服务了。

在VScode中的copilot选择agent进行交互

直接问询他能否调用mcp,调用看看,会先请求你的权限,允许后就直接出结果了

如果有一大串经常要查的但是又懒得改SQL语句,更懒得写curd的,这个mcp工具就可以派上用场了。

参考:

tools具体限制

Genai Toolbox Postgres SQL工具