我有这么一个需求:查询某个云服务商的服务器账单信息。比如我想查询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_keyword和provider,分别表示服务器昵称的关键字和云服务商名称。
并且通过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工具