使用说明
模型上下文协议(MCP)
所有学分:https://github.com/ShawhinT/YouTube-Blog/
AI代理系列中的第四个示例。在这里,我构建了一个客户MCP服务器,让任何AI应用程序都可以访问人工虚拟助理(AVA)的工具集。
链接
如何运行此示例
- 克隆此仓库
- 安装uv 如果你还没有
# Mac/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
- 在开发模式下测试服务器
uv run mcp dev mcp-server-example.py
- 将服务器配置添加到AI应用程序(例如Claude Desktop或Cursor)。
{
"mcpServers": {
"AVA": {
"command": "/Users/shawhin/.local/bin/uv", # replace with global path to your uv installation
"args": [
"--directory",
"/Users/shawhin/Documents/_code/_stv/sandbox/ava-mcp/", # replace with global path to repo
"run",
"mcp-server-example.py"
]
}
}
}
定制AVA的行为
更新个人详细信息和首选项
- 找到
prompts/ava.md项目目录中的文件 - 使用以下内容自定义文件:
- 通信偏好
- 处理任务的具体说明
- AVA的任何其他相关指南
环境设置(.env)
- 创建一个
.env项目根目录中的文件,包含以下变量:
USER_EMAIL=your_email_address
# Google OAuth Credentials
GOOGLE_CREDENTIALS_PATH=.config/ava-agent/credentials.json
GOOGLE_TOKEN_PATH=.config/ava-agent/token.json
所需的环境变量:
USER_EMAIL:您要用于此应用程序的Gmail地址GOOGLE_CREDENTIALS_PATH:您的Google OAuth凭据文件的路径GOOGLE_TOKEN_PATH:存储Google OAuth令牌的路径
Google OAuth设置
1.创建项目目录结构
首先,创建所需的目录结构:
mkdir -p .config/ava-agent
2.建立谷歌云项目
- 转到 谷歌云控制台
- 创建新项目或选择现有项目
- 启用Gmail API:
- 在导航菜单中,转到“API和服务”>“库”
- 搜索“Gmail API”
- 点击“启用”
3.创建OAuth凭据
-
在Google Cloud控制台中:
- 转到“API和服务”>“凭据”
- 点击“创建凭据”>“OAuth客户端ID”
- 选择“桌面应用程序”作为应用程序类型
- 为其命名(例如,“AVA Gmail客户端”)
- 点击“创建”
-
下载凭据:
- 创建后,单击“下载JSON”
- 将下载的文件另存为
credentials.json在……里面.config/ava-agent/ - 该文件应包含您的客户端ID和客户端机密
4.配置OAuth同意屏幕
- 在Google Cloud控制台中:
- 转到“API和服务”>“OAuth同意屏幕”
- 选择“外部”用户类型
- 填写所需信息:
- 应用程序名称
- 用户支持电子邮件
- 开发人员联系信息
- 添加Gmail API范围:
https://www.googleapis.com/auth/gmail.modify - 将您的电子邮件添加为测试用户
- 完成配置
登录谷歌
在服务器可以访问您的Gmail帐户之前,您需要对其进行授权。您可以通过运行 uv run oauth.py 其执行以下操作。
- 检查是否存在
token.json - 如果未找到,它将启动Google OAuth身份验证流程
- 在浏览器中指导您完成身份验证过程:
- 您将被要求登录您的Google帐户
- 授予请求的权限
- 应用程序将自动保存令牌
- 自动生成并存储令牌
安全说明
文件保护
- 永远不要承诺你的
.env文件或token.json到版本控制 - 确保您的Google凭据安全
- 将以下内容添加到您的
.gitignore:.env .config/ava-agent/token.json .config/ava-agent/credentials.json