内容
# 代理 MCP 客户端
<p>
<a href="LICENSE"><img alt="静态徽章" src="https://img.shields.io/badge/license-Apache%202.0-blue.svg?style=flat"></a>
</p>
一个独立的代理运行器,通过 Anthropic Claude、AWS BedRock 和 OpenAI API 使用 MCP(模型上下文协议)工具执行任务。它使 AI 代理能够在云环境中自主运行,并安全地与各种系统交互。
## 当前功能
- 包含一个基本的代理仪表盘
- 使用 JSON 配置文件定义任务,运行独立的代理
- 支持 Anthropic Claude 和 OpenAI 模型
- 会话日志,用于跟踪代理进度
## 运行仪表盘 Web
```
cd dashboard
npm i
npm run dev
```
**仪表盘网址**:http://localhost:3000
**API 文档**:http://localhost:3000/api-docs
https://github.com/user-attachments/assets/c98be6d2-0096-40f2-bd78-d3fb256fec83
## 安装
1. **克隆仓库**
2. **设置依赖项:**
```bash
uv sync
```
3. **创建 agent_worker_task.json 文件**
以下是一个示例配置文件:
```json
{
"task": "查找当前目录中的所有图像文件并告诉我它们的大小",
"model": "claude-3-7-sonnet-20250219",
"system_prompt": "您是一个有用的助手,使用可用的工具完成任务。",
"verbose": true,
"max_iterations": 10
}
```
4. **运行代理:**
```bash
uv run agentic_mcp_client/agent_worker/run.py
```
## 配置
该项目需要在根目录中有一个 `config.json` 文件来定义推理服务器设置和可用的 MCP 工具。以下是一个示例配置:
```json
{
"inference_server": {
"base_url": "https://api.anthropic.com/v1/",
"api_key": "您的 API 密钥",
"use_bedrock": true,
"aws_region": "us-east-1",
"aws_access_key_id": "您的 AWS 访问密钥",
"aws_secret_access_key": "您的 AWS 私钥"
},
"mcp_servers": {
"mcp-remote-macos-use": {
"command": "docker",
"args": [
"run",
"-i",
"-e",
"MACOS_USERNAME=您的用户名",
"-e",
"MACOS_PASSWORD=您的密码",
"-e",
"MACOS_HOST=您的主机 IP",
"--rm",
"buryhuang/mcp-remote-macos-use:latest"
]
},
"mcp-my-apple-remembers": {
"command": "docker",
"args": [
"run",
"-i",
"-e",
"MACOS_USERNAME=您的用户名",
"-e",
"MACOS_PASSWORD=您的密码",
"-e",
"MACOS_HOST=您的主机 IP",
"--rm",
"buryhuang/mcp-my-apple-remembers:latest"
]
}
}
}
```
### 配置部分
#### 推理服务器
`inference_server` 部分配置了与语言模型提供商的连接:
- `base_url`: 您选择的 LLM 提供商的 API 端点
- `api_key`: 您在 LLM 服务中的身份验证密钥
- `use_bedrock`: 设置为 true 以使用 Amazon Bedrock 进行模型推理
- AWS 凭证(使用 Bedrock 时)
#### MCP 服务器
`mcp_servers` 部分定义了可用的 MCP 工具。每个工具都有:
- 唯一标识符(例如,“mcp-remote-macos-use”)
- `command`: 要执行的命令(通常是 Docker,用于容器化工具)
- `args`: 工具的配置参数
此示例显示了通过 Docker 容器远程控制 macOS 系统的 MCP 工具。
## MCP 工作原理
模型上下文协议提供了一种标准化的方式,供应用程序:
- 与语言模型共享上下文信息
- 向 AI 系统公开工具和功能
- 构建可组合的集成和工作流
该协议使用 JSON-RPC 2.0 消息在主机(LLM 应用程序)、客户端(应用程序中的连接器)和服务器(提供上下文和功能的服务)之间建立通信。
我们的代理工作器实现了以下工作流:
1. 初始化所有可用工具的 MCP 客户端
2. 向选定的模型发送初始任务消息
3. 处理模型响应(工具调用或文本)
4. 如果发出工具调用,则执行工具并将结果发送回模型
5. 重复直到任务完成或达到最大迭代次数
6. 关闭所有 MCP 客户端
```mermaid
sequenceDiagram
participant 用户
participant 代理工作器
participant LLM as 语言模型
participant MCP as MCP 工具
用户->>代理工作器: 任务 + 配置
代理工作器->>MCP: 初始化工具
代理工作器->>LLM: 发送任务
loop 直到完成
LLM->>代理工作器: 请求工具使用
代理工作器->>MCP: 执行工具
MCP->>代理工作器: 工具结果
代理工作器->>LLM: 发送工具结果
LLM->>代理工作器: 响应
end
代理工作器->>用户: 最终结果
```
## 贡献指南
欢迎对代理 MCP 客户端做出贡献!要贡献,请遵循以下步骤:
1. 分叉仓库。
2. 为您的功能或错误修复创建新分支。
3. 进行更改并提交它们。
4. 将您的更改推送到您的分叉。
5. 对主仓库创建拉取请求。
## 致谢
该项目灵感来自并建立在 MCP 生态系统中优秀的开源项目之上:
- [MCP-Bridge](https://github.com/SecretiveShell/MCP-Bridge) - 一个中间件,提供与 OpenAI 兼容的端点用于调用 MCP 工具,这有助于我们理解工具集成和标准化的做法。
我们感谢这些项目的贡献者为 MCP 领域做出的开创性工作,这有助于使自主代理开发更加便捷和强大。
## 许可证
代理 MCP 客户端根据 Apache 2.0 许可证授权。有关更多信息,请参见 [LICENSE](LICENSE) 文件。