mcp_test/CLAUDE.md
sun feb1a0b280 feat(agent): 新增MCP Agent客户端和工具系统
- 实现了基于LangChain的MCP Agent,支持连接MCP服务器调用工具
- 添加了环境配置文件(.env),包含LLM模型和API配置信息
- 创建了完整的工具系统,包括BaseTool基类和Bash、Terminate、Add等工具
- 集成了天气查询工具,支持通过中国气象局API获取天气预报信息
- 实现了交互式对话功能,支持多轮工具调用和结果处理
- 添加了详细的CLAUDE.md开发指导文档
2026-02-25 18:04:48 +08:00

107 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# CLAUDE.md
此文件为 Claude Codeclaude.ai/code在处理此存储库中的代码时提供指导。
# 交互规则(优先级最高)
1. 所有与本仓库相关的沟通、文档编辑、代码注释、解释说明均使用**中文**
2. 技术术语以及命令保留英文原词(如 Langchain、Deepagents但解释说明必须用中文
3. 代码本身的语法/关键字保持英文(符合编程规范),但注释、文档、交互回复全部使用中文
4. 当前项目为技术验证项目目前使用Langchain、Deepagents等框架遇到框架相关问题需要首先参考官方技术文档链接
```text
[Langchain](https://docs.langchain.com/oss/python/langchain/overview)、[Deepagents](https://docs.langchain.com/oss/python/deepagents/overview)
```
## 项目概述
TestMCP 是一个 MCP (Model Context Protocol) 服务器实现,带有 OpenAI 兼容的客户端,用于构建 AI Agent 系统。该项目是 "OpenManus" 的简化/修改版本 - 一个支持工具调用的 AI Agent 框架。
## 命令
### 运行 Demo MCP 服务器 (FastMCP 带天气工具)
```bash
python main.py
```
运行 SSE 服务器,默认端口,包含 `add()``get_weather_by_location()` 工具。
### 运行 OpenManus 风格的 MCP 服务器
```bash
python -m app.mcp_server.server --transport stdio
```
### 运行客户端
```bash
python client.py
```
通过 SSE 连接到 `http://127.0.0.1:8000/sse` 的 MCP 服务器。
### 启动Agent调用本地工具
```bash
python tool_call_agent.py
```
### 包管理
项目使用 `uv` 作为包管理器:
```bash
uv sync # 安装依赖
uv add <package> # 添加新依赖
```
## 架构
### 核心组件
```
app/
├── mcp_server/
│ └── server.py # MCPServer 类,包含 FastMCP 和工具注册系统
├── tools/
│ ├── base.py # BaseTool (抽象类), ToolResult, CLIResult
│ ├── bash.py # Bash 命令执行工具
│ └── terminate.py # 终止工具
├── utils/
│ └── logger.py # 基于 Loguru 的日志系统,支持文件轮转
└── exceptions.py # ToolError, OpenManusError, TokenLimitExceeded
```
### 入口点
1. **`client.py`** - 主客户端入口
- `AutoToolChatSession`: 通过 SSE 连接 MCP 服务器,调用 LLM执行工具
- 支持 OpenAI 兼容模型 (DashScope, Ollama 等)
2. **`main.py`** - 使用 FastMCP 的 Demo 服务器
- 工具:`add()`, `get_weather_by_location()`
- 资源:`greeting://{name}`
- 提示词:`greet_user()`
3. **`app/mcp_server/server.py`** - OpenManus 风格的 MCP 服务器
- `MCPServer` 类,支持动态工具注册
- 内置工具bash, terminate
### 工具系统
所有工具继承自 `BaseTool` (位于 `app/tools/base.py`):
- 必须实现 `async execute(self, **kwargs) -> ToolResult`
- 工具参数通过 `parameters` 字典定义 (JSON Schema 格式)
- 结果通过 `ToolResult` 返回,包含 `output`, `error`, `base64_image` 字段
### 环境变量配置
通过 `.env` 文件配置必需的环境变量:
```bash
LLM_API_KEY=<your-api-key>
APIHZ_ID=<apihz-user-id> # 用于天气 API
APIHZ_KEY=<apihz-user-key> # 用于天气 API
```
客户端配置 (位于 `client.py`):
- `LLM_MODEL`: 模型名称 (默认deepseek-v3)
- `LLM_BASE_URL`: OpenAI 兼容的 API 端点
### 关键设计模式
- **MCP Protocol**: 使用 Model Context Protocol 暴露工具
- **SSE Transport**: 客户端通过 Server-Sent Events 连接
- **Async Design**: 使用 `asyncio` 进行并发工具执行
- **Pydantic Models**: 用于数据验证 (`ToolResult`, `BaseTool`)