# github_watch_dual **Repository Path**: wisdomfriend/github_watch_dual ## Basic Information - **Project Name**: github_watch_dual - **Description**: 介绍使用mcp和cli两种方法进行大模型自动进行gitee的项目维护 - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-14 - **Last Updated**: 2026-04-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # GitHub 监控 Demo(MCP + CLI 双接口) 这个示例工程对应你博客里的对比场景: 同一个能力(获取仓库最新版本号 SHA),分别用两种接口实现: - 接口 1:MCP(HTTP MCP) - 接口 2:CLI(Windows 默认 `powershell`) 并且使用标准工具调用流程(`tools + tool_choice + tool_calls`)演示“模型如何调工具”。 --- ## 1. 功能说明 - 获取目标 Gitee 仓库最新提交 SHA(版本号) - CLI 模式:模型先生成 PowerShell 命令,再执行命令获取 SHA - MCP 模式:模型先发起 `mcp_get_latest_sha` 工具调用,工具内部走 MCP 获取 SHA - 输出统一结构结果(核心字段:`version`) - 可选额外调用大模型生成博客更新文案 - 提供两种使用方式: - 命令行执行(`python -m src.main`) - HTTP 接口执行(FastAPI) --- ## 2. 安装依赖 ```bash cd github_watch_dual pip install -r requirements.txt ``` --- ## 3. 配置 复制配置模板: ```bash cp .env.example .env ``` Windows PowerShell 可手动复制内容到 `.env`。核心配置如下: - `GITHUB_OWNER`:仓库 owner - `GITHUB_REPO`:仓库名 - `MCP_SERVER_URL`:远程 MCP 地址(例如 Gitee 官方 `https://api.gitee.com/mcp`) - `GITEE_ACCESS_TOKEN`:访问 Gitee MCP 的 token(远程模式建议配置) - `CLI_COMMAND`:CLI 命令名(Windows 推荐 `powershell`,也可改为 `gh`) - `STATE_FILE`:本地状态文件(用于判断是否有新提交) - `LOG_FILE`:提示词日志文件(会记录下发给模型的 prompt) - `OPENAI_API_KEY`:必填(工具调用由模型驱动) - `OPENAI_BASE_URL`:OpenAI 兼容接口地址(例如 DeepSeek) > 注意:Windows 下 CLI 推荐直接用 `powershell`,无需安装 `gh`。 > > 这个示例默认使用 `MCP_SERVER_URL` 远程模式(无需本地安装 mcp-gitee)。 --- ## 4. 运行示例(命令行) ### 4.1 单次检查(同时跑 MCP + CLI) ```bash python -m src.main --mode both ``` ### 4.2 仅跑 CLI ```bash python -m src.main --mode cli ``` ### 4.3 打印提示词并调用真实 LLM ```bash python -m src.main --mode both --call-llm ``` --- ## 5. HTTP 接口(FastAPI) 启动: ```bash uvicorn src.api:app --reload --port 8090 ``` 接口: - `GET /check/cli`:走 CLI 工具调用链获取最新 SHA - `GET /check/mcp`:走 MCP 工具调用链获取最新 SHA - `GET /`:Web 页面(可选 MCP / CLI) - `POST /run`:Web 页面调用的统一执行接口 或者使用启动入口: ```bash python run.py ``` 返回字段包含: - `version`:仓库最新版本号(SHA) - `commit`:提交结构化信息(含来源) - `generated_command`:CLI 模式下模型生成并执行的命令 - `mcp_tool_call`:MCP 模式下模型发起的工具调用信息 - `llm_output`:勾选“额外生成文案”时返回(可选) --- ## 6. 工程结构 ```text github_watch_dual/ ├─ .env.example ├─ requirements.txt ├─ README.md └─ src/ ├─ config.py ├─ models.py ├─ github_providers.py # MCP/CLI 两种 provider ├─ prompting.py # LangChain PromptTemplate ├─ service.py # 统一监控逻辑 + 状态持久化 ├─ api.py # FastAPI 接口 └─ main.py # 命令行入口 ``` --- ## 7. 典型演示点(可直接放博客) 1. 同一能力,MCP/CLI 两条调用链对比 2. CLI 链路更短,工具描述更轻 3. MCP 在可控/安全上更适合严格场景 4. 无论哪种接口,都能统一接到同一个 LangChain 提示词管线 5. 所有下发给模型的提示词都会落盘到 `LOG_FILE`