Skip to main content
Glama
deployment-guide.md13 kB
# 本地部署指南 ## 概述 `deploy-local.sh` 是一个交互式部署脚本,用于快速将 Gitea MCP 工具部署到本地 `~/.gitea-mcp/` 目录。该脚本提供了友好的菜单界面,支持选择性部署 MCP Server、CLI 工具或全部组件。 ## 快速开始 在项目根目录下运行: ```bash ./deploy-local.sh ``` ## 主要特性 ### 1. 交互式菜单系统 脚本提供清晰的菜单导航: - **主菜单** - 检查更新或选择部署模式 - **版本检查** - 自动检测并比较本地与远程版本 - **确认菜单** - 确认部署信息 - **部署后菜单** - 再次部署或查看文档 - **文档菜单** - 查看各类文档 ### 2. 灵活的部署选项 #### 选项 1: 仅部署 MCP Server 适用场景: - 只使用 AI 工具(Claude Desktop、Cline等)集成 - 不需要命令行工具 - 最小化部署 部署内容: - `dist/index.js` - MCP Server 主文件 - `dist/index.js.map` - Source map - `package.json` - 包信息 - `docs/` - 文档目录 #### 选项 2: 仅部署 CLI 工具 适用场景: - 只使用命令行管理 Gitea - 脚本自动化 - CI/CD 集成 部署内容: - `dist/cli/index.js` - CLI 主文件 - `dist/cli/` - CLI 相关文件 - `package.json` - 包信息 - `docs/` - 文档目录 #### 选项 3: 部署全部 适用场景: - 同时使用 MCP 和 CLI - 完整功能支持 - 推荐选择 部署内容: - 所有 MCP Server 文件 - 所有 CLI 工具文件 - 完整文档 ### 3. 自动版本检测 脚本支持自动检测版本更新: - 从 Gitea API 获取最新发布版本 - 与本地版本进行比较 - 提供更新建议和操作指引 - 支持私有仓库(通过 `GITEA_API_TOKEN` 环境变量) **版本检查流程**: ``` 检查远程版本 → 比较版本号 → 显示结果 → 提供更新建议 ``` **支持的场景**: - ✅ 自动检测:发现新版本时提示更新 - ✅ 版本相同:确认已是最新版本 - ✅ 开发版本:识别本地版本较新的情况 - ✅ 离线模式:无法连接时优雅降级 ### 4. 返回功能 每个菜单都支持返回上一步: ``` 主菜单 ← 确认菜单 ← 部署后菜单 ↓ (版本检查) ↑ ↓ ↓ └─── 文档菜单 └→ 返回主菜单 ``` ### 5. 自动依赖检查 脚本启动时自动检查: - Node.js 是否安装(要求 18+) - npm 是否可用 - 是否在项目根目录 ## 使用流程 ### 步骤 1: 选择操作 ``` ========================================== Gitea MCP Server - 本地部署工具 ========================================== 请选择操作: 1) 检查版本更新 2) 仅部署 MCP Server 3) 仅部署 CLI 工具 (keactl) 4) 部署全部 (MCP + CLI) 5) 退出 请输入选项编号 (1-5): ``` **版本检查示例**: ``` ========================================== 版本检查 ========================================== [STEP] 检查远程最新版本... [INFO] 远程最新版本: 1.3.0 📦 当前版本: 1.3.0 🌐 最新版本: 1.3.0 [SUCCESS] 当前已是最新版本 按回车键继续... ``` **发现新版本时**: ``` 📦 当前版本: 1.2.0 🌐 最新版本: 1.3.0 [WARN] 发现新版本!建议更新到 1.3.0 [INFO] 更新方法: 1. git pull # 拉取最新代码 2. npm install # 更新依赖 3. 重新运行此脚本部署 按回车键继续... ``` ### 步骤 2: 确认部署信息 ``` ---------------------------------------- 📦 部署模式: 部署全部 (MCP + CLI) 📂 目标目录: /Users/username/.gitea-mcp 📄 部署文件: dist/index.js, dist/cli/index.js ---------------------------------------- 1) 确认部署 2) 返回上一步 3) 退出 请选择操作 (1-3): ``` ### 步骤 3: 自动构建和部署 ``` ========================================== 开始部署 ========================================== [STEP] 构建项目... ✓ 构建完成 [STEP] 部署 MCP Server 到 /Users/username/.gitea-mcp... ✓ MCP Server 部署完成 [STEP] 部署 CLI 工具到 /Users/username/.gitea-mcp... ✓ CLI 工具部署完成 [STEP] 部署公共文件... ✓ 公共文件部署完成 ``` ### 步骤 4: 查看部署结果 ``` ========================================== 部署成功完成! ========================================== 📦 版本: v1.3.0 📂 路径: /Users/username/.gitea-mcp/ ✅ MCP Server: /Users/username/.gitea-mcp/dist/index.js (375KB) ✅ CLI 工具: /Users/username/.gitea-mcp/dist/cli/index.js (97KB) [INFO] MCP Server 配置: 1. 编辑 ~/.claude.json 2. 确认: "args": ["/Users/username/.gitea-mcp/dist/index.js"] 3. 重启 Claude Code [INFO] CLI 工具使用: keactl config init # 初始化配置 keactl --help # 查看帮助 ``` ### 步骤 5: 部署后操作 ``` 1) 再次部署 2) 查看文档 3) 退出 请选择操作 (1-3): ``` ## 文档查看功能 部署后可以直接查看内置文档: ``` ========================================== 文档和资源 ========================================== 1) CLI 使用指南 2) 初始化文档 3) 上下文管理文档 4) 返回 请选择要查看的文档 (1-4): ``` 文档会使用 `less` 命令打开,支持: - 空格键/PgDn - 向下翻页 - b/PgUp - 向上翻页 - q - 退出查看 - / - 搜索 - h - 帮助 ## 常见使用场景 ### 场景 1: 首次部署 ```bash # 1. 运行脚本 ./deploy-local.sh # 2. 选择 "1) 检查版本更新" (可选) # 3. 选择 "4) 部署全部" # 4. 选择 "1) 确认部署" # 5. 等待部署完成 # 6. 选择 "3) 退出" ``` ### 场景 2: 检查更新 ```bash # 1. 运行脚本 ./deploy-local.sh # 2. 选择 "1) 检查版本更新" # 3. 查看版本比较结果 # 4. 如有新版本,按提示更新 # 5. 重新运行脚本部署最新版本 ``` ### 场景 3: 仅更新 MCP Server ```bash # 1. 运行脚本 ./deploy-local.sh # 2. 选择 "2) 仅部署 MCP Server" # 3. 确认部署 # 4. 完成后重启 Claude Code ``` ### 场景 4: 仅更新 CLI 工具 ```bash # 1. 运行脚本 ./deploy-local.sh # 2. 选择 "3) 仅部署 CLI 工具" # 3. 确认部署 # 4. 立即可用,无需重启 ``` ### 场景 5: 连续多次部署 ```bash # 1. 运行脚本一次 ./deploy-local.sh # 2. 完成第一次部署后 # 3. 选择 "1) 再次部署" # 4. 选择新的部署模式 # 5. 重复流程 ``` ### 场景 6: 部署并查看文档 ```bash # 1. 运行脚本并完成部署 ./deploy-local.sh # 2. 部署完成后选择 "2) 查看文档" # 3. 选择要查看的文档 # 4. 使用 less 浏览文档 # 5. 按 q 退出文档查看 # 6. 选择其他文档或返回 ``` ## 部署目标结构 部署完成后,`~/.gitea-mcp/` 目录结构: ### 完整部署(选项 3) ``` ~/.gitea-mcp/ ├── dist/ │ ├── index.js # MCP Server (375KB) │ ├── index.js.map # Source map │ └── cli/ │ ├── index.js # CLI 主文件 (97KB) │ └── ... # CLI 其他文件 ├── docs/ │ ├── cli-guide.md │ ├── initialization.md │ ├── context-management.md │ └── ... ├── package.json └── README.md ``` ### 仅 MCP(选项 1) ``` ~/.gitea-mcp/ ├── dist/ │ ├── index.js │ └── index.js.map ├── docs/ ├── package.json └── README.md ``` ### 仅 CLI(选项 2) ``` ~/.gitea-mcp/ ├── dist/ │ └── cli/ │ ├── index.js │ └── ... ├── docs/ ├── package.json └── README.md ``` ## 配置说明 ### MCP Server 配置 部署完成后,需要配置 MCP 客户端: **Claude Code 配置 (~/.claude.json):** ```json { "mcpServers": { "gitea-mcp-tool": { "type": "stdio", "command": "node", "args": ["/Users/username/.gitea-mcp/dist/index.js"], "env": { "GITEA_BASE_URL": "https://gitea.ktyun.cc", "GITEA_API_TOKEN": "your_token_here" } } } } ``` **重启 Claude Code** 以加载新版本。 ### CLI 工具配置 CLI 工具部署后可立即使用: **方式 1: 直接调用** ```bash node ~/.gitea-mcp/dist/cli/index.js --help ``` **方式 2: 创建别名** ```bash # 添加到 ~/.bashrc 或 ~/.zshrc alias keactl='node ~/.gitea-mcp/dist/cli/index.js' # 使用 keactl config init keactl repo list ``` **方式 3: 全局安装** ```bash cd ~/.gitea-mcp npm link # 然后可以直接使用 keactl --help ``` ## 环境变量配置 ### GITEA_API_TOKEN(可选) 用于访问私有仓库的版本信息: ```bash # 设置环境变量 export GITEA_API_TOKEN="your_gitea_token_here" # 运行脚本 ./deploy-local.sh ``` **何时需要**: - 仓库为私有时 - 需要访问受限的版本信息时 - 频繁检查版本更新时(避免 API 限制) **获取 Token**: 1. 登录 Gitea 2. 进入 Settings → Applications → Generate New Token 3. 选择适当的权限范围(读取仓库即可) 4. 复制生成的 Token ## 故障排除 ### 问题 1: 构建失败 **症状:** ``` [ERROR] 构建失败! ``` **解决方法:** ```bash # 1. 确保依赖已安装 npm install # 2. 清理并重新构建 rm -rf dist node_modules npm install npm run build # 3. 再次运行部署脚本 ./deploy-local.sh ``` ### 问题 2: 权限错误 **症状:** ``` Permission denied: ./deploy-local.sh ``` **解决方法:** ```bash chmod +x deploy-local.sh ./deploy-local.sh ``` ### 问题 3: Node.js 版本过低 **症状:** ``` [ERROR] Node.js 未安装,请先安装 Node.js 18+ ``` **解决方法:** ```bash # 使用 nvm 安装最新版本 nvm install 20 nvm use 20 # 验证版本 node --version ``` ### 问题 4: 文档查看失败 **症状:** ``` [WARN] 文档文件不存在: ~/.gitea-mcp/docs/cli-guide.md ``` **原因:** 部署时 docs 目录未成功复制 **解决方法:** ```bash # 手动复制文档 cp -r docs ~/.gitea-mcp/ ``` ### 问题 5: MCP Server 未生效 **症状:** 部署成功但 Claude Code 仍使用旧版本 **解决方法:** 1. 确认配置文件路径正确 2. 完全退出 Claude Code(不是关闭窗口) 3. 重新启动 Claude Code 4. 检查 MCP 日志确认加载成功 ### 问题 6: 版本检测失败 **症状:** ``` [WARN] 无法获取远程版本信息 ``` **可能原因:** 1. 网络连接问题 2. 仓库为私有且未配置 Token 3. Gitea 服务器暂时不可用 **解决方法:** **情况 1: 公开仓库无法访问** ```bash # 检查网络连接 curl -I https://gitea.ktyun.cc # 检查 curl 是否安装 which curl which wget # 如果都未安装,安装其中之一 # macOS brew install curl # Linux sudo apt-get install curl ``` **情况 2: 私有仓库** ```bash # 设置 API Token export GITEA_API_TOKEN="your_token_here" # 重新运行脚本 ./deploy-local.sh ``` **情况 3: 离线环境** - 版本检测会自动降级为 "unknown" - 不影响部署功能 - 可以忽略警告继续使用 ## 高级技巧 ### 技巧 1: 快速重新部署 ```bash # 使用默认选项(全部部署)并自动确认 echo -e "3\n1\n3" | ./deploy-local.sh ``` ### 技巧 2: 部署到自定义目录 修改脚本中的 `TARGET_DIR` 变量: ```bash # 编辑 deploy-local.sh TARGET_DIR="$HOME/my-custom-path" ``` ### 技巧 3: 部署后自动重启服务 在脚本末尾添加: ```bash # 重启 Claude Code (macOS) killall "Claude Code" open -a "Claude Code" ``` ### 技巧 4: 部署前自动测试 在部署前运行测试: ```bash # 在 perform_build() 函数中添加 npm test npm run lint ``` ## 最佳实践 1. **定期检查更新** - 使用版本检查功能定期检查新版本 2. **开发迭代** - 每次修改代码后立即部署测试 3. **版本验证** - 部署后检查版本号确认更新成功 4. **配置备份** - 部署前备份重要配置文件 5. **日志检查** - 部署后检查 MCP 日志确认正常运行 6. **文档查阅** - 遇到问题先查看内置文档 7. **Token 管理** - 私有仓库使用时妥善保管 API Token ## 相关资源 - [CLI 使用指南](./cli-guide.md) - [初始化文档](./initialization.md) - [上下文管理文档](./context-management.md) - [主 README](../README.md) ## 总结 `deploy-local.sh` 提供了: ✅ **自动版本检测** - 智能检查更新,及时提醒 ✅ **交互式菜单** - 易于使用,操作直观 ✅ **灵活的部署选项** - MCP/CLI/全部,按需选择 ✅ **返回功能** - 支持修改选择,随时返回 ✅ **详细的部署信息展示** - 清晰的进度和结果反馈 ✅ **内置文档查看** - 便捷的文档访问 ✅ **完整的错误处理** - 友好的错误提示和解决方案 ✅ **私有仓库支持** - 通过 Token 访问受限资源 **核心优势**: - 🚀 快速部署 - 一键完成构建和部署 - 🔄 版本管理 - 自动检测更新,保持最新 - 🎯 灵活选择 - 支持选择性部署 - 📚 文档集成 - 随时查阅使用文档 - 🛡️ 安全可靠 - 完整的错误处理和验证 适合各种开发和部署场景,是开发者的得力助手。

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/SupenBysz/gitea-mcp-tool'

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