Skip to main content
Glama
README.md
# Gitee MCP Server

> 让任意 AI 模型用自然语言管理 Gitee 仓库的 MCP Server。

[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
[![npm version](https://img.shields.io/npm/v/gitee-mcp.svg)](https://www.npmjs.com/package/gitee-mcp)
[![Glama](https://glama.ai/mcp/servers/PaulSeth/gitee-mcp-server/badge)](https://glama.ai/mcp/servers/PaulSeth/gitee-mcp-server)

一句话就能替你管 Gitee:**"social-media-bot-cn-generic 现在多少 star?"** **"给这几个 issue 打上 bug 标签"** **"基于最近 commit 帮我生成一份中文 CHANGELOG 贴进 README"**。

本 Server 是 **MCP(Model Context Protocol)** 标准实现,可接入任何支持 MCP 的 AI 客户端(WorkBuddy / Claude Desktop / Cursor / 任意 Agent 框架)。

---

## ✨ 功能(v1)

| 工具 | 作用 |
|------|------|
| `get_repo_stats` | 仓库统计:star / fork / watch / 开放 issue 数 |
| `list_stargazers` | 列出点 star 的用户(⚠️ 需 PAT) |
| `list_issues` | 列出 Issue,支持按状态/标签过滤 |
| `create_issue` | 新建 Issue(收需求/建任务) |
| `update_issue` | 更新 Issue 状态/标签(自动打标签/关单) |
| `generate_changelog` | **基于 commit 生成中文 CHANGELOG**(Gitee 无原生 API,靠 commits 组合拼出) |

**资源**:`gitee://repo/{owner}/{repo}` —— 返回仓库统计 + 最近 5 条 commit 快照,AI 可直接读取。

---

## 🚀 快速开始

### 方式一:npx 直接运行(推荐,无需克隆)

```bash
npx -y gitee-mcp
```

> 首次运行会自动下载;默认 Mock 模式,无需 token 即可演示。

### 方式二:源码运行

```bash
git clone https://gitee.com/jokerbhind/gitee-mcp-server.git
cd gitee-mcp-server
npm install
npm run build
npm start          # 默认 Mock 模式,无需 token 即可演示
```

### 接 WorkBuddy / Claude Desktop

在 `~/.workbuddy/mcp.json`(或对应 MCP 配置)中加入:

```json
{
  "mcpServers": {
    "gitee-mcp-server": {
      "command": "npx",
      "args": ["-y", "gitee-mcp"]
    }
  }
}
```

或使用本地构建产物(`command` 用绝对路径的 node,避免客户端不继承 PATH):

```json
{
  "mcpServers": {
    "gitee-mcp-server": {
      "command": "C:/绝对路径/node.exe",
      "args": ["H:/绝对路径/gitee-mcp-server/build/index.js"]
    }
  }
}
```

---

## 🔑 真实模式(Real)

复制 `.env.example` 为 `.env` 并填入 Gitee 私人令牌:

```bash
cp .env.example .env
# 编辑 .env:填入 GITEE_ACCESS_TOKEN
```

| 变量 | 说明 |
|------|------|
| `GITEE_ACCESS_TOKEN` | Gitee 私人令牌(设置 → 私人令牌,勾选 **projects** 权限)。**stargazers/subscribers 接口强制鉴权**,无 token 会 401 |
| `GITEE_MODE` | 留空=自动判定;`mock`=强制演示;`real`=强制真实(缺 token 自动回退 mock 并告警) |

Server 会自动从**项目根目录的 `.env`** 读取(无需设置 cwd),填好 token 后即自动切 Real 模式。

---

## 🐶 Dogfood 示例

本项目本身就用 `generate_changelog` 给 `jokerbhind/social-media-bot-cn-generic` 生成 CHANGELOG。真实 commit 输出示例:

```markdown
## CHANGELOG · jokerbhind/social-media-bot-cn-generic

> 基于最近 1 条 commit 自动生成(Gitee MCP Server)

### ✨ 新功能
- feat: 社媒客服 Bot 泛用版 Starter Kit _by PaulSeth(2026-09-03)_
```

> 这就是「gap filler」的溢价逻辑:Gitee 官方没有 CHANGELOG API,本 Server 用现成的 `/commits` 组合出人人想要的能力。

---

## 🧩 架构

```
AI 模型 ←→ MCP(STDIO) ←→ GiteeMcpServer
                                │
                         GiteeService(Mock/Real 双模式路由)
                           ├─ mock.ts  本地快照(无凭证可演示)
                           └─ api.ts   Gitee API v5(填 token 后生效)
```

Mock 模式让公开仓库也能 `npm start` 直接演示、被 Glama 自动收录,且不泄露任何凭证。

---

## 📦 发布与收录

| 目标 | 状态 | 做法 |
|------|------|------|
| **Gitee 公开仓** | ✅ 已上线 | https://gitee.com/jokerbhind/gitee-mcp-server |
| **GitHub 镜像仓** | ✅ 已上线 | https://github.com/PaulSeth/gitee-mcp-server |
| **npm** | ✅ 已发布 v0.1.0 | https://www.npmjs.com/package/gitee-mcp |
| **Glama** | ✅ 已提交并通过构建检查 | 提交 GitHub 镜像仓 URL 后由 Glama 自动生成镜像跑安全/质量检查 |
| **MCP Registry** | ⏳ 待发布 | `mcp-publisher login github` + `mcp-publisher publish`(读仓库根 `server.json`) |

> 本项目的 `CHANGELOG.md` 由 **本 Server 的 `generate_changelog` 工具自己生成**(dogfood)。

> Glama 索引的是 **GitHub** 仓库,故需先将本仓库镜像到 GitHub 再提交。

---

## 🗺️ Roadmap(Phase 2,按需再做)

- `comment_on_issue/pr`:AI 自动回复
- `webhook_auto_label`:监听 Webhook 自动打标签
- `gitee_to_github_mirror`:Gitee↔GitHub 双平台镜像
- `list_pulls` / `merge_pull`:PR 管理
- `create_release`:基于 CHANGELOG 自动发版

---

## 📄 License

[MIT](LICENSE) © 2026 Paul (Gitee: jokerbhind / GitHub: PaulSeth)

TDQS

A3.5/5.0

Scored across 6 tools

Disambiguation5/5

Each tool addresses a distinct resource or action: repo stats, stargazers, issue listing, issue creation, issue updating, and changelog generation. No two tools overlap enough to cause misselection; get_repo_stats returns aggregate counts while list_issues returns issue objects.

Naming Consistency5/5

All names follow a consistent snake_case verb_noun pattern (get_repo_stats, list_stargazers, list_issues, create_issue, update_issue, generate_changelog). There are no mixed conventions or vague verbs.

Tool Count5/5

Six tools is well-scoped for a focused Gitee assistant covering stats, stargazers, issue management, and changelog. Each tool has a clear purpose and none appear redundant or trivial.

Completeness3/5

The issue surface has list/create/update but lacks get-issue detail, delete, and commenting, and there is no direct commit or PR access despite the generic server name. These are notable gaps, though some can be worked around via list_issues and update_issue.

Maintenance

ActivityMaintained
ResponsivenessNo issues