内容
# apigee-mcp
一款MCP服务器,通过公开Apigee X / GCP管理API操作,作为适用于Claude(以及其他任何MCP兼容的LLM客户端)的工具。
## 前提条件
| 要求 | 说明 |
|---|---|
| Python 3.11+ | `python3 --version` |
| gcloud CLI | [安装指南](https://cloud.google.com/sdk/docs/install) |
| Apigee X组织 | 您的GCP项目必须已配置Apigee X |
使用应用程序默认凭证进行身份验证:
```bash
gcloud auth application-default login
```
## 安装
```bash
cd apigee-mcp
python3 -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt
cp .env.example .env
# 编辑.env并设置APIGEE_ORG=<您的GCP项目ID>
```
## 运行服务器
```bash
python server.py
```
服务器通过stdio(标准MCP传输)进行通信。除非`APIGEE_ORG`丢失,否则启动时不会看到任何输出,在这种情况下,它会退出并显示描述性错误。
## Claude Desktop配置
将以下块添加到您的`claude_desktop_config.json`文件中(通常位于`~/Library/Application Support/Claude/claude_desktop_config.json`(macOS)或`%APPDATA%\Claude\claude_desktop_config.json`(Windows):
```json
{
"mcpServers": {
"apigee": {
"command": "/绝对路径/to/apigee-mcp/.venv/bin/python",
"args": ["/绝对路径/to/apigee-mcp/server.py"],
"env": {
"APIGEE_ORG": "我的GCP项目ID"
}
}
}
}
```
用您自己的值替换路径和项目ID。在保存文件后重新启动Claude Desktop。
## VS Code配置
在您的工作区中创建`.vscode/mcp.json`文件(或添加到您的用户设置):
```json
{
"servers": {
"apigee": {
"type": "stdio",
"command": "/绝对路径/to/apigee-mcp/.venv/bin/python",
"args": ["/绝对路径/to/apigee-mcp/server.py"],
"env": {
"APIGEE_ORG": "我的GCP项目ID"
}
}
}
}
```
## 可用工具
| 工具 | 回答内容 |
|---|---|
| `list_environments` | 我的组织中存在哪些环境? |
| `get_analytics` | 环境X中有多少流量/延迟/错误? |
| `list_proxies` | 存在哪些API代理,每个代理的修订版本是什么? |
| `get_deployed_proxies` | 生产环境中当前部署了什么? |
| `get_proxy_details` | 代理X的完整历史记录和部署状态 |
| `list_api_products` | 发布了哪些产品,包含哪些代理和配额? |
| `list_developers` | 谁已注册为开发者? |
| `list_apps` | 存在哪些应用程序,它们使用哪些产品? |
## 示例问题
- "列出Apigee组织中的所有环境。"
- "显示过去24小时内`payments-proxy`在生产环境中的错误率。"
- "`orders-api`的哪个修订版本已部署到预发布环境?"
- "哪些API产品包含`inventory-proxy`?"
- "列出2024年注册的所有开发者。"
- "开发者`alice@example.com`有哪些应用程序,它们使用哪些产品?"
## 使用服务账号代替ADC
1. 在GCP中创建一个服务账号,并具有**Apigee组织管理员**角色(或更具限制性的只读角色,如果需要)。
2. 下载JSON密钥文件。
3. 在运行服务器之前设置环境变量:
```bash
export GOOGLE_APPLICATION_CREDENTIALS=/路径/to/sa-key.json
python server.py
```
`google.auth.default()`会自动获取`GOOGLE_APPLICATION_CREDENTIALS`,因此无需更改代码。
## 快速令牌测试(无需ADC设置)
```bash
export APIGEE_ACCESS_TOKEN=$(gcloud auth print-access-token)
export APIGEE_ORG=我的GCP项目ID
python server.py
```
当设置`APIGEE_ACCESS_TOKEN`时,它优先于ADC。令牌在约1小时后过期;重启服务器或取消设置变量以恢复到ADC。