使用说明
MCP代理聊天
一个基于Electron构建的智能聊天应用,集成了OpenAI GPT与MCP(模型上下文协议),以实现与外部工具的高级交互。
🚀 特点
- 实时聊天 实时流式传输答案
- 模式系统询问 vs 代理
- SQLite数据库 用于保持对话持久性
- 政策体系 用于MCP工具控制
- 现代界面 具有响应式设计
- 安全IPC(工业个人计算机/现场总线控制系统,具体含义根据上下文确定) 在Electron进程之间
🏗️ 建筑
Renderer Process ↔ Main Process ↔ OpenAI API
↓ ↓ ↓
UI/Chat.js → IPC Handlers → Streaming
↓ ↓ ↓
renderer.js → Database → SQLite
📁 项目结构
MCP-Agent/
├── main.js # Proceso principal de Electron
├── preload.js # Script de precarga seguro
├── index.html # Interfaz de usuario
├── styles.css # Estilos de la aplicación
├── chat.js # Lógica del chat
├── renderer.js # Gestión de UI y modos
├── openai.js # Cliente OpenAI con streaming
├── mcp.js # Adaptador MCP (mock)
├── policy.js # Motor de políticas
├── db/
│ ├── index.js # Configuración de base de datos
│ └── migrations/ # Migraciones SQL
└── package.json # Dependencias del proyecto
🛠️ 安装
-
克隆仓库:
git clone <repository-url> cd MCP-Agent -
安装依赖项:
yarn install # o npm install -
设置OpenAI的API密钥:
选项1:环境变量(推荐)
# Windows (PowerShell) $env:OPENAI_API_KEY="tu-api-key-aqui" # Windows (CMD) set OPENAI_API_KEY=tu-api-key-aqui # Linux/Mac export OPENAI_API_KEY="tu-api-key-aqui"选项2:通过应用程序
- 打开开发者控制台(F12)
- 执行:
await window.api.settings.set('openai_api_key', 'tu-api-key-aqui')
选项3:.env文件
- 副本
env.example一.env - 编辑(Edita,此处为假设的翻译,因为“Edita”本身可能是一个特定名称或品牌,在没有具体上下文的情况下,一般可译为“编辑”或根据具体情境译为其他更贴切的词汇)
.env并添加你的API密钥 - 应用程序将自动加载变量
-
运行应用程序:
yarn start # o npm start
🎯 使用
操作模式
- “询问”模式无MCP工具的基础聊天
- “代理”模式使用MCP工具的聊天
可用的MCP工具
filesystem.read- 读取文件(允许)filesystem.write- Escritura de archivos (REQUIRE_CONFIRMATION)playwright.goto- 网络浏览(需要确认)web_search- 网络搜索(允许)
🔧 开发
可用脚本
yarn start # Ejecutar en modo desarrollo
yarn dev # Ejecutar con hot reload
数据库结构
- 会议/会话/时段聊天对话
- 消息单条消息
- 设置应用程序设置
- 工具日志MCP工具使用记录
🔒 安全
- 上下文隔离已启用安全功能
- **CSP(Content Security Policy,内容安全策略)**已配置内容安全策略
- API密钥安全存储
- 工具政策细粒度访问控制
🚧 项目状态
✅ 已完成
- [x] 功能齐全的聊天界面
- [x] OpenAI的流媒体服务
- [x] SQLite数据库
- [x] 模式系统
- [x] MCP 工具面板
- [x] 基本政策体系
🔄 开发中
- [ ] 策略确认对话框
- [ ] 与真实MCP服务器的集成
- [ ] API密钥配置界面
- [ ] 多会话管理
📝 许可证
麻省理工学院许可证
🤝 贡献
欢迎贡献。请提交一个问题或拉取请求。
📞 支持
如需支持或提问,请在仓库中提交一个问题。
