Skip to main content
Glama
masx200

Persistent Terminal MCP Server

by masx200
quick-start.md4.13 kB
# 快速开始 - 让 AI 创建持久终端 API ## 🚀 30 秒快速开始 ### 1. 复制这段话发给 AI(Claude、GPT-4、Gemini 等) ``` 我需要你帮我开发一个持久终端管理系统的后端 API。 这个系统通过 REST API 提供终端会话管理功能,主要用于让 AI 助手能够执行长时间运行的命令(如 npm start)而不会被阻塞。 我已经准备了详细的需求文档,请仔细阅读并严格按照要求实现: [然后粘贴 docs/meta/project-prompt.md 的完整内容] 请确认你理解了所有需求,然后开始创建项目。 ``` ### 2. 等待 AI 确认理解 ### 3. 让 AI 开始编码 ``` 很好!请开始创建项目。请按照文档中的项目结构创建所有文件。 ``` --- ## 📁 你需要的文件 ### 主文件(必须) - **docs/meta/project-prompt.md** - 完整的项目需求(发给 AI) ### 补充文件(可选) - **docs/reference/technical-details.md** - 技术实现细节(如果 AI 需要更多细节) - **docs/zh/prompt-usage.md** - 详细的使用指南(给你看的) - **docs/zh/quick-start.md** - 本文档(快速参考) --- ## 🎯 核心需求(AI 必须实现) ### 7 个 API 端点 1. `POST /api/terminals` - 创建终端 2. `POST /api/terminals/:id/input` - 发送命令 3. `GET /api/terminals/:id/output` - 读取输出 4. `GET /api/terminals/:id/stats` - 获取统计 5. `GET /api/terminals` - 列出所有终端 6. `DELETE /api/terminals/:id` - 终止终端 7. `GET /api/health` - 健康检查 ### 2 个关键功能 1. **自动执行命令**:用户发送 `"pwd"` 时自动添加 `\n` 执行 2. **完全清理资源**:kill 终端时从所有 Map 中删除 --- ## ✅ 验证 AI 是否理解 在 AI 开始前,问它: ``` 在开始之前,请回答: 1. 用户发送 "pwd" 时,系统应该如何处理? 2. kill 终端后需要清理哪些资源? ``` **正确答案:** 1. 自动添加 `\n` 变成 `"pwd\n"` 并执行 2. 从 ptyProcesses、outputBuffers、sessions 三个 Map 中删除 --- ## 🧪 测试项目 AI 完成后,运行这些命令测试: ```bash # 1. 安装依赖 npm install # 2. 启动服务器 npm run dev # 3. 创建终端 curl -X POST http://localhost:3001/api/terminals \ -H "Content-Type: application/json" \ -d '{"cwd": "/tmp"}' # 返回: {"success": true, "data": {"terminalId": "xxx", ...}} # 4. 发送命令(注意:不需要 \n) curl -X POST http://localhost:3001/api/terminals/xxx/input \ -H "Content-Type: application/json" \ -d '{"input": "pwd"}' # 5. 等待 1 秒 # 6. 读取输出 curl http://localhost:3001/api/terminals/xxx/output # 应该看到: {"success": true, "data": {"output": "/tmp\n", ...}} ``` --- ## 📋 检查清单 - [ ] 发送 `"pwd"` 会自动执行(不需要 `\n`) - [ ] kill 后终端从列表中消失 - [ ] 支持增量读取(since 参数) - [ ] 支持智能截断(head-tail 模式) - [ ] 有完整的 README.md - [ ] 有 API 文档 - [ ] 代码使用 TypeScript --- ## 🐛 常见问题快速修复 ### 问题 1: 命令不执行 **告诉 AI:** ``` 命令不会自动执行。请在 writeToTerminal 方法中添加: const inputToWrite = input.endsWith('\n') || input.endsWith('\r') ? input : input + '\n'; ptyProcess.write(inputToWrite); ``` ### 问题 2: kill 后终端仍在列表 **告诉 AI:** ``` kill 后终端仍在列表中。请在 killTerminal 方法中添加: this.ptyProcesses.delete(terminalId); this.outputBuffers.delete(terminalId); this.sessions.delete(terminalId); ``` --- ## 💡 推荐的 AI - ✅ **Claude (Anthropic)** - 最推荐,理解能力强 - ✅ **GPT-4 (OpenAI)** - 很好,需要明确指令 - ✅ **Gemini (Google)** - 支持超长上下文 - ⚠️ **GPT-3.5** - 可以,但需要分步指导 - ⚠️ **Codex CLI** - 可以,但可能需要多次迭代 --- ## 📞 需要更多帮助? 查看这些文档: - **如何使用提示词.md** - 详细的使用指南 - **docs/reference/technical-details.md** - 技术实现细节 --- **就这么简单!复制提示词,发给 AI,等待项目完成。** 🎉

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/masx200/persistent-terminal-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server