Gemini MCP聊天机器人
一个基于STDIO的简单MCP(模型上下文协议)服务器,为Gemini CLI代理提供计算器、文件读取和文件写入工具。
特性
- 计算器
- 文件读取
- 文件写入
建筑一瞥
Gemini CLI ──STDIO──> MCP Server (src/server.py) ──Tools──> Your Python FunctionsCLI启动MCP服务器,通过STDIO流式传输请求,并在不需要套接字或REST的情况下接收工具响应。
项目参观
.gemini/settings.json
// filepath: f:\Workspace\AI Training\Gemini CLI\.gemini\settings.json
{
"mcpServers": {
"pythonTools": {
"command": "poetry",
"args": ["run", "python", "src/server.py"],
"cwd": "",
"env": {
"MCP_PROXY_AUTH_TOKEN": ""
},
"timeout": 15000
}
}
}此配置将CLI连接到通过Poetry生成MCP服务器,注入代理令牌,并强制执行15秒的超时。
注意:当服务器启动时,它会在终端中打印配置的令牌,以便您确认占位符值。
Python工具
CLI装载中定义的MCP服务器 src/server.py,公开计算器和文件帮助程序以实现快速自动化。
MCP-进口
FastMCP 类从 mcp 该包可用于立即创建mcp服务器。
# filepath: f:\Workspace\AI Training\Gemini CLI\src\server.py
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("demo")用于工具注册的MCP装饰器
装饰者将计算器和文件实用程序作为可发现的MCP工具公开。\ Docstring为每个工具定义参数和返回值,以便Gemini CLI可以构建正确的模式进行调用。
# filepath: f:\Workspace\AI Training\Gemini CLI\src\server.py
@mcp.tool()
def handle_calculator(expression):
"""
Evaluate a mathematical expression and return the result.
...
"""
...
@mcp.tool()
def handle_file_read(path):
"""
Read the contents of a file at the given path.
...
"""
...
@mcp.tool()
def handle_file_write(path: str, content: str):
"""
Write content to a file at the given path.
...
"""
...运行MCP服务器
# filepath: f:\Workspace\AI Training\Gemini CLI\src\server.py
if __name__ == "__main__":
mcp.run()默认情况下,服务器监听STDIO,准备处理来自Gemini CLI的传入工具调用。这 transport 参数 mcp.run() 可以调整这种行为。
设置
- 安装Python 3.6+和Poetry。
- 在项目文件夹中运行:
poetry install(无需外部依赖)
正在运行MCP服务器
启动MCP服务器(STDIO传输):
poetry run python src/server.py进程保持连接到STDIO(无TCP端口)。
Gemini CLI集成
Gemini CLI配置为通过以下方式连接到此MCP服务器 .gemini/settings.json (命令指向 python src/server.py).
启动Gemini CLI:
gemini使用 /mcp 在CLI中列出连接的MCP服务器和工具。
Gemini代理可以根据需要调用这些工具。
您可以自然地提问(例如“Compute 2+2\*3”或“Read./notes.txt”),代理将调用相应的工具。
使用示例
用户: “嘿,47.50美元的钞票上15%的小费是多少?”
代理人: \_\[建议使用计算器工具:47.50 _ 0.15\]\_ gemini_asking_for_permission_to_run_mcp_tool.png
工具调用和响应:(经用户批准) ✓ handle_calculator(pythonTools MCP服务器){“表达式”:“47.50\*0.15”}
gemini_tool_executed_successfully.png
______________________________________________________________________
