Skip to content

Commit 5246a81

Browse files
committed
update
1 parent 411ac81 commit 5246a81

File tree

5 files changed

+421
-7
lines changed

5 files changed

+421
-7
lines changed

docs/.vuepress/config/sidebarConf.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -320,7 +320,7 @@ module.exports = {
320320
{
321321
title: "Gemini-cli",
322322
collapsable: false,
323-
children: ["", "basic-usage"],
323+
children: ["", "basic-usage", "mcp-with-gemini-cli", "custom-mcp-with-gemini-cli", "pro",],
324324
},
325325
],
326326
"/about/index/": [{ title: "INDEX", collapsable: false, children: [""] }],

docs/tools/gemini-cli/basic-usage.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -56,12 +56,12 @@ $ exit # 退出Shell模式,返回Gemini CLI
5656

5757
Gemini CLI提供了一系列以斜杠开头的内置命令:
5858

59-
- /help - 显示所有可用命令
60-
- /tools - 列出所有可用工具
61-
- /chat save <标签> - 保存当前会话
62-
- /chat resume <标签> - 恢复之前保存的会话
63-
- /clear - 清除终端显示
64-
- /quit 或 /exit - 退出Gemini CLI
59+
- `/help` - 显示所有可用命令
60+
- `/tools` - 列出所有可用工具
61+
- `/chat save <标签>` - 保存当前会话
62+
- `/chat resume <标签>` - 恢复之前保存的会话
63+
- `/clear` - 清除终端显示
64+
- `/quit``/exit` - 退出Gemini CLI
6565

6666

6767

Lines changed: 186 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,186 @@
1+
---
2+
title: '自定义MCP服务器'
3+
sitemap:
4+
exclude: false
5+
changefreq: hourly
6+
date: 2025-07-09
7+
tags:
8+
- tools
9+
- gemini
10+
---
11+
12+
13+
如果现有的MCP服务器不能满足你的需求,你还可以创建自己的MCP服务器。虽然这需要一些开发经验,但基本流程并不复杂:
14+
15+
16+
## 方法一:使用FastMCP (Python)
17+
18+
FastMCP是一个Python库,让你可以快速创建MCP服务器:
19+
20+
1. 安装依赖
21+
22+
```sh
23+
pip install fastmcp
24+
```
25+
26+
2. 创建服务器代码:
27+
28+
```sh
29+
from fastmcp import FastMCP
30+
import requests
31+
32+
# 创建FastMCP服务器实例
33+
server = FastMCP("web_tools")
34+
35+
@server.tool()
36+
def get_website_status(url: str) -> str:
37+
"""检查网站状态并返回HTTP状态码和响应时间"""
38+
try:
39+
response = requests.get(url, timeout=5)
40+
return f"状态码: {response.status_code}, 响应时间: {response.elapsed.total_seconds()}秒"
41+
except Exception as e:
42+
return f"错误: {str(e)}"
43+
44+
@server.tool()
45+
def extract_webpage_content(url: str, selector: str = "body") -> str:
46+
"""获取网页内容,可选择指定CSS选择器"""
47+
try:
48+
response = requests.get(url, timeout=5)
49+
from bs4 import BeautifulSoup
50+
soup = BeautifulSoup(response.text, 'html.parser')
51+
element = soup.select_one(selector)
52+
if element:
53+
return element.text.strip()
54+
return "未找到指定元素"
55+
except Exception as e:
56+
return f"提取内容时出错: {str(e)}"
57+
58+
# 启动服务器
59+
if __name__ == "__main__":
60+
server.run()
61+
```
62+
63+
64+
3. 配置Gemini CLI使用你的服务器:
65+
66+
```json
67+
{
68+
"mcpServers": {
69+
"web_tools": {
70+
"command": "python",
71+
"args": ["path/to/your/server.py"],
72+
"env": {}
73+
}
74+
}
75+
}
76+
```
77+
78+
## 方法二:使用MCP SDK (JavaScript/TypeScript)
79+
80+
81+
如果你更习惯JavaScript或TypeScript,可以使用官方的MCP SDK:
82+
83+
1. 创建项目
84+
85+
```sh
86+
mkdir my-mcp-server
87+
cd my-mcp-server
88+
npm init -y
89+
npm install @modelcontextprotocol/sdk
90+
```
91+
92+
2. 创建服务器代码:
93+
94+
```js
95+
import { Server } from '@modelcontextprotocol/sdk';
96+
import { ListToolsRequestSchema, CallToolRequestSchema } from '@modelcontextprotocol/sdk';
97+
import axios from 'axios';
98+
99+
// 定义工具
100+
const WEB_STATUS_TOOL = {
101+
name: "get_website_status",
102+
description: "检查网站状态并返回HTTP状态码",
103+
inputSchema: {
104+
type: "object",
105+
properties: {
106+
url: {
107+
type: "string",
108+
description: "要检查的网站URL"
109+
}
110+
},
111+
required: ["url"]
112+
}
113+
};
114+
115+
// 创建服务器
116+
const server = new Server(
117+
{ name: "web_tools_server", version: "1.0.0" },
118+
{
119+
capabilities: {
120+
tools: {
121+
tools: [WEB_STATUS_TOOL]
122+
}
123+
}
124+
}
125+
);
126+
127+
// 注册工具处理程序
128+
server.setRequestHandler(ListToolsRequestSchema, async () => ({
129+
tools: [WEB_STATUS_TOOL]
130+
}));
131+
132+
server.setRequestHandler(CallToolRequestSchema, async (request) => {
133+
const { name, arguments: args } = request.params;
134+
135+
if (name === "get_website_status") {
136+
try {
137+
const response = await axios.get(args.url, { timeout: 5000 });
138+
return {
139+
content: [{ type: "text", text: `状态码: ${response.status}, 响应时间: ${response.duration}ms` }],
140+
isError: false
141+
};
142+
} catch (error) {
143+
return {
144+
content: [{ type: "text", text: `错误: ${error.message}` }],
145+
isError: true
146+
};
147+
}
148+
}
149+
150+
return {
151+
content: [{ type: "text", text: `未知工具: ${name}` }],
152+
isError: true
153+
};
154+
});
155+
156+
// 启动服务器
157+
const stdio = server.createStdioTransport();
158+
stdio.listen();
159+
```
160+
161+
3. 配置Gemini CLI使用你的服务器:
162+
163+
```json
164+
{
165+
"mcpServers": {
166+
"web_tools": {
167+
"command": "node",
168+
"args": ["path/to/your/server.js"],
169+
"env": {}
170+
}
171+
}
172+
}
173+
```
174+
175+
176+
## MCP工具设计最佳实践
177+
178+
设计优秀的MCP工具需要注意以下几点:
179+
180+
- 工具命名要清晰具体:使用描述性名称,如search_github_issues而非简单的search
181+
- 提供详细的工具描述:帮助模型理解工具的用途、功能和使用场景
182+
- 详细定义参数架构:清晰说明每个参数的类型、格式和用途
183+
- 添加良好的错误处理:为各种边缘情况提供友好的错误信息
184+
- 控制返回数据大小:避免返回超大结果,可能会超出模型的处理能力
185+
186+
Lines changed: 166 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,166 @@
1+
---
2+
title: 'Gemini CLI 与 MCP 整合'
3+
sitemap:
4+
exclude: false
5+
changefreq: hourly
6+
date: 2025-07-09
7+
tags:
8+
- tools
9+
- gemini
10+
---
11+
12+
13+
如何通过MCP协议扩展Gemini CLI的能力,让它能够与各种外部工具和服务交互。
14+
15+
## 什么是MCP服务器?
16+
17+
MCP服务器是实现了`Model Context Protocol`的程序,它向`Gemini CLI`这样的客户端提供各种工具。每个MCP服务器通常专注于特定领域的功能,例如:
18+
19+
- GitHub MCP服务器 - 提供与GitHub仓库交互的能力
20+
- 天气MCP服务器 - 提供实时天气查询功能
21+
- 数据库MCP服务器 - 提供SQL查询和数据库操作功能
22+
- Playwright MCP服务器 - 提供网页自动化和爬取功能
23+
- Context7 MCP服务器 - 提供开源库文档查询功能
24+
25+
MCP的特别之处在于,服务器会向模型"自我描述"自己的功能和参数要求,这样AI模型能够"理解"工具的用途,并在适当的时机使用正确的参数调用它们。
26+
27+
28+
## 配置MCP服务器
29+
30+
要在Gemini CLI中使用MCP服务器,你需要创建或编辑配置文件:
31+
32+
1.创建配置目录和文件:
33+
34+
```sh
35+
mkdir -p ~/.gemini
36+
touch ~/.gemini/settings.json
37+
```
38+
39+
2.编辑settings.json文件,添加MCP服务器配置
40+
41+
```json
42+
{
43+
"mcpServers": {
44+
"github": {
45+
"command": "npx",
46+
"args": ["-y", "@modelcontextprotocol/server-github"],
47+
"env": {
48+
"GITHUB_TOKEN": "your_github_token_here"
49+
}
50+
},
51+
"weather": {
52+
"command": "npx",
53+
"args": ["-y", "mcp-server-weather"],
54+
"env": {
55+
"WEATHER_API_KEY": "your_weather_api_key_here"
56+
}
57+
}
58+
}
59+
}
60+
```
61+
62+
3.重启Gemini CLI以加载新配置
63+
64+
## 使用MCP工具
65+
66+
配置完成后,你可以通过以下步骤使用MCP工具:
67+
68+
1.使用/mcp命令查看所有可用的MCP服务器和工具:
69+
70+
```sh
71+
> /mcp
72+
```
73+
74+
这会显示所有已连接的MCP服务器及其提供的工具列表。
75+
76+
77+
2.直接在对话中自然使用这些工具:
78+
79+
```sh
80+
> 获取南京明天的天气预报
81+
```
82+
83+
Gemini会自动识别这是一个天气查询,调用weather MCP服务器获取信息。
84+
85+
3.或者直接指定使用某个工具:
86+
87+
```sh
88+
> 使用GitHub工具列出我的仓库中的所有issue
89+
```
90+
91+
## 用Gemini CLI+MCP解决日常开发问题
92+
93+
让我们通过几个实际例子,看看Gemini CLI和MCP如何帮助解决实际的开发问题:
94+
95+
### 分析GitHub仓库并提出改进建议
96+
97+
```sh
98+
> 使用GitHub工具分析仓库"username/project"的代码,找出可能的性能问题和改进点
99+
```
100+
101+
Gemini会调用GitHub MCP服务器,获取仓库信息,分析代码结构,然后提供详细的改进建议。这个过程包括:
102+
103+
1. 获取仓库结构和文件列表
104+
2. 分析关键文件的代码
105+
3. 识别潜在的性能瓶颈、代码质量问题和安全漏洞
106+
4. 提供具体的改进建议和代码示例
107+
108+
109+
### 使用天气数据创建示例应用
110+
111+
```sh
112+
> 创建一个简单的React天气应用,使用weather工具获取实时数据,显示5天预报
113+
```
114+
115+
Gemini会设计应用结构,生成代码,并集成weather MCP服务器的API调用,一步到位。
116+
Gemini还会生成配套的CSS样式、API路由和后端集成代码,帮你完成整个应用。
117+
118+
### 自动化数据分析和可视化
119+
120+
```sh
121+
> 分析项目中的sales.csv文件,生成销售趋势图表和关键指标摘要
122+
```
123+
124+
Gemini会使用内置的文件读取工具解析CSV数据,然后生成数据分析脚本。
125+
126+
如果配置了数据库MCP服务器,Gemini还可以直接从数据库读取数据,而不需要中间CSV文件。
127+
128+
129+
### 使用Playwright MCP实现网页自动化
130+
131+
如果你配置了Playwright MCP服务器,可以让Gemini帮你自动化网页操作:
132+
133+
```sh
134+
> 使用Playwright工具访问https://example.com,填写联系表单并提交
135+
```
136+
137+
Gemini会生成并执行Playwright自动化脚本,完成表单填写和提交过程。
138+
139+
这种自动化能力在测试、数据抓取和重复性网页操作中特别有用。
140+
141+
142+
143+
144+
145+
146+
147+
148+
149+
150+
151+
152+
153+
154+
155+
156+
157+
158+
159+
160+
161+
162+
163+
164+
165+
166+

0 commit comments

Comments
 (0)