54 lines
2.9 KiB
Markdown
54 lines
2.9 KiB
Markdown
# 技术上下文
|
||
|
||
## 核心技术栈
|
||
|
||
| 类别 | 技术/库 | 版本 | 用途 |
|
||
| ---------- | ----------------------------------------- | ---- | ---------------------------------------------- |
|
||
| 核心协议 | Model-Context-Protocol (MCP) | v1+ | 定义系统所有组件间的通信标准。 |
|
||
| **官方SDK** | **`model-context-protocol/python-sdk`** | 最新 | **我们实现Host, Client, Server的基石。** |
|
||
| 核心语言 | Python | 3.8+ | 主要开发语言。 |
|
||
| AI模型 | 兼容OpenAI API的大语言模型 (LLM) | - | 作为Agent的“大脑”,负责推理和规划。 |
|
||
| HTTP客户端 | requests | 最新 | 在APICallerServer中用于执行HTTP请求。 |
|
||
| Web框架 | (可选) FastAPI / Flask | - | 或许会用于构建可通过HTTP访问的远程MCP Server。 |
|
||
|
||
## 开发环境设置
|
||
|
||
### 必要组件
|
||
- Python 3.8 或更高版本
|
||
- `uv` 或 `pip` (用于管理Python包依赖)
|
||
- Git (版本控制)
|
||
- 支持Python的IDE (推荐 VS Code 或 PyCharm)
|
||
|
||
### 项目安装步骤 (预期)
|
||
1. **克隆代码仓库**:
|
||
```bash
|
||
git clone <仓库URL>
|
||
cd compliance-mcp-agent
|
||
```
|
||
2. **创建虚拟环境**:
|
||
```bash
|
||
python -m venv .venv
|
||
source .venv/bin/activate
|
||
```
|
||
3. **安装依赖**:
|
||
我们将创建一个 `requirements.txt` 文件,内容至少包括:
|
||
```
|
||
model-context-protocol
|
||
requests
|
||
# 其他未来可能需要的依赖
|
||
```
|
||
然后执行安装:
|
||
```bash
|
||
uv pip install -r requirements.txt
|
||
```
|
||
4. **运行项目**:
|
||
* **启动所有MCP Servers**: 需要编写一个脚本来并行启动所有工具服务器。
|
||
* **启动MCP Host**: 运行主程序 `run_mcp_tests.py` 来开始整个测试流程。
|
||
|
||
## 关键技术决策
|
||
|
||
1. **SDK 优先**: 我们将尽可能地利用官方 Python SDK 的能力,而不是重新发明轮子。所有的 Host/Client/Server 实现都应基于该 SDK 提供的类和方法。
|
||
2. **Stdio 通信**: 在项目初期,为了简单起见,Host 和 Client 之间的通信将主要通过标准输入/输出 (`stdio`) 进行,这由 `stdio_client` 提供支持。这对于本地运行的 Agent 来说足够高效。
|
||
3. **独立的 Server 进程**: 每个 MCP Server 都将作为一个独立的 Python 进程运行。这确保了工具之间的完全隔离,并为未来将某个工具部署为网络服务(例如使用 FastAPI)提供了可能性。
|
||
4. **异步编程**: 官方 SDK 大量使用了 `asyncio`。因此,我们的 Host 和 Client 代码也必须是异步的,以充分利用 SDK 的性能。
|
||
5. **LLM 接口**: Agent 与 LLM 的交互将通过一个通用的、兼容 OpenAI 的 API 客户端进行。这允许我们未来可以轻松切换不同的后端 LLM 服务。 |