PaulSeth/gitee-mcp-server
This MCP server lets AI clients inspect and manage Gitee repositories via natural language through six tools and one resource.
get_repo_stats: get star/fork/watch counts and open issue count for a repo.list_stargazers: list users who starred a repo (requires PAT; falls back to mock without credentials).list_issues: list issues filtered by state (open/closed/all) and comma-separated labels.create_issue: create a new issue with title, optional body, and labels.update_issue: update an issue's state and/or labels, e.g. auto-label or close it.generate_changelog: generate a Chinese CHANGELOG from recent commits, with optional max count and since_tag.Resource
gitee://repo/{owner}/{repo}: returns repo stats plus a snapshot of the latest 5 commits.Supports mock mode for demos/no token and real Gitee API v5 mode with
GITEE_ACCESS_TOKEN.
Provides tools for interacting with Gitee repositories via the Gitee API (v5), enabling AI agents to fetch repository stats (stars, forks, watches, open issues), list stargazers, list issues with status/label filters, create and update issues (status/labels), and generate Chinese CHANGELOGs from commit history. Also exposes a gitee://repo/{owner}/{repo} resource returning repo statistics plus a snapshot of the latest 5 commits.
Gitee MCP Server
让任意 AI 模型用自然语言管理 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)
工具 | 作用 |
| 仓库统计:star / fork / watch / 开放 issue 数 |
| 列出点 star 的用户(⚠️ 需 PAT) |
| 列出 Issue,支持按状态/标签过滤 |
| 新建 Issue(收需求/建任务) |
| 更新 Issue 状态/标签(自动打标签/关单) |
| 基于 commit 生成中文 CHANGELOG(Gitee 无原生 API,靠 commits 组合拼出) |
资源:gitee://repo/{owner}/{repo} —— 返回仓库统计 + 最近 5 条 commit 快照,AI 可直接读取。
Related MCP server: Gitingest MCP Server
🚀 快速开始
方式一:npx 直接运行(推荐,无需克隆)
npx -y gitee-mcp首次运行会自动下载;默认 Mock 模式,无需 token 即可演示。
方式二:源码运行
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 配置)中加入:
{
"mcpServers": {
"gitee-mcp-server": {
"command": "npx",
"args": ["-y", "gitee-mcp"]
}
}
}或使用本地构建产物(command 用绝对路径的 node,避免客户端不继承 PATH):
{
"mcpServers": {
"gitee-mcp-server": {
"command": "C:/绝对路径/node.exe",
"args": ["H:/绝对路径/gitee-mcp-server/build/index.js"]
}
}
}🔑 真实模式(Real)
复制 .env.example 为 .env 并填入 Gitee 私人令牌:
cp .env.example .env
# 编辑 .env:填入 GITEE_ACCESS_TOKEN变量 | 说明 |
| Gitee 私人令牌(设置 → 私人令牌,勾选 projects 权限)。stargazers/subscribers 接口强制鉴权,无 token 会 401 |
| 留空=自动判定; |
Server 会自动从项目根目录的 .env 读取(无需设置 cwd),填好 token 后即自动切 Real 模式。
🐶 Dogfood 示例
本项目本身就用 generate_changelog 给 jokerbhind/social-media-bot-cn-generic 生成 CHANGELOG。真实 commit 输出示例:
## 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 公开仓 | ✅ 已上线 | |
GitHub 镜像仓 | ✅ 已上线 | |
npm | ✅ 已发布 v0.1.0 | |
Glama | ✅ 已提交并通过构建检查 | 提交 GitHub 镜像仓 URL 后由 Glama 自动生成镜像跑安全/质量检查 |
MCP Registry | ⏳ 待发布 |
|
本项目的
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 © 2026 Paul (Gitee: jokerbhind / GitHub: PaulSeth)
Available Tools
6 toolscreate_issueB
在仓库新建 Issue(收需求/建任务)
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | 正文,可选 | |
| repo | Yes | 仓库名 | |
| owner | Yes | 仓库所有者 | |
| title | Yes | 标题 | |
| labels | No | 逗号分隔标签,可选 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full behavioral burden. It says nothing about required permissions, whether the issue is mutable afterward, or what the caller receives. Only the implicit creation semantics are conveyed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with zero waste, front-loading the verb and resource immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description omits permissions, response behavior, and sibling routing. The schema documents parameters, but key behavioral context is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 5 parameters are documented in the schema itself. The description adds no field-level semantics beyond the verb/resource, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('新建 Issue'), clear enough to distinguish from read-only siblings like list_issues or get_repo_stats. Not a 5 because it does not explicitly name or differentiate from the closest sibling update_issue.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical '收需求/建任务' implies intended use cases (collect requests / create tasks), giving implied guidance. But it does not state when to prefer this over update_issue or when-not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_changelogB
基于最近 commit 生成中文 CHANGELOG(Gitee 无原生 API,靠 commits 组合)
| Name | Required | Description | Default |
|---|---|---|---|
| max | No | 最多取多少条 commit,默认 50 | |
| repo | Yes | 仓库名 | |
| owner | Yes | 仓库所有者 | |
| since_tag | No | 从此 tag/分支之后的 commit,可选 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does add real context: output is in Chinese and the changelog is composed from commits because Gitee has no native API, which signals derivation and potential fidelity limits. However, it says nothing about permissions, rate limits, where the changelog is written/returned, or whether repeat calls are idempotent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence with the core action front-loaded and the caveat appended in parentheses. No wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no annotations, yet the description does not say what is returned (markdown string? file path?), nor how the commit range interacts with since_tag/max. It is adequate for invocation but leaves the agent guessing about the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (owner, repo, max, since_tag) are already documented in the schema. The description adds no parameter-level semantics beyond that, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource: generate a Chinese CHANGELOG from recent commits. It is clearly distinguishable from the sibling list (stats, stargazers, issues, etc.), though it does not explicitly name which sibling to prefer. The parenthetical clarifies the generation mechanism.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance, no prerequisites (e.g., whether the repo must have tags, whether commits must exist), and no mention of alternatives. The only usage signal is implicit in '基于最近 commit'. An agent gets no routing help beyond the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_repo_statsB
获取 Gitee 仓库统计:star/fork/watch 数、开放 issue 数
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | 仓库名,如 social-media-bot-cn-generic | |
| owner | Yes | 仓库所有者,如 jokerbhind |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It implies a read-only aggregation but says nothing about authentication requirements, rate limits, caching/staleness of the counts, or whether private repos are supported — all relevant for a stats endpoint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence that front-loads the action and then lists the returned metrics. No filler, though it trades brevity for leaving behavior and usage unspecified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read tool with full schema coverage, the description is largely sufficient, and it usefully enumerates the returned metrics given no output schema exists. It lacks any note on auth or freshness, which is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters (owner, repo) are documented with examples in the schema, so the baseline is 3. The description adds no syntax or format detail beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource (获取 Gitee 仓库统计) and enumerates what is aggregated: star/fork/watch counts and open issue count. This distinguishes it from siblings like list_stargazers and list_issues, which enumerate individual items rather than return counts, though the differentiation is implicit rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus list_stargazers or list_issues, and no prerequisites (e.g., whether the repo must be public or whether auth is required). Usage is only implied by the fact that it returns counts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_issuesC
列出仓库 Issue,支持按状态/标签过滤
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | 仓库名 | |
| owner | Yes | 仓库所有者 | |
| state | No | 默认 open | |
| labels | No | 逗号分隔标签,可选 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does not disclose that this is a read-only operation, how many issues are returned, pagination behavior, or ordering. For a listing tool with zero structured behavioral hints, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the resource and its filter capability come first. It is appropriately sized for an operation of this simplicity, though slightly terse given the missing behavioral context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The core purpose and filters are covered, but with no annotations and no output schema the description should say more about the read-only nature and return/pagination behavior. Adequate but with clear gaps for a 4-parameter listing tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so repo, owner, state, and labels are already documented in the schema, including the state enum default. The description's mention of state/label filtering adds no syntax or format detail beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('列出仓库 Issue') plus the supported filtering axes, so an agent knows this is a read-list tool. It does not differentiate itself from siblings like get_repo_stats or list_stargazers, but the verb/resource pair is unambiguous against create_issue/update_issue.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The sentence describes capability ('支持按状态/标签过滤') rather than when to pick this tool over get_repo_stats, list_stargazers, or the create/update siblings. No prerequisites, no exclusions, no alternative routing – usage is only implied by the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_stargazersA
列出给仓库点 star 的用户(需 PAT,无凭证走 mock)
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 页码,默认 1 | |
| repo | Yes | 仓库名 | |
| owner | Yes | 仓库所有者 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full burden and does disclose key behavioral traits: it requires a PAT, and without credentials it falls back to mock data. This is valuable context about authentication and data reliability. However, it doesn't cover pagination behavior, rate limits, or return format details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, concise sentence that packs the core purpose and critical credential behavior without any waste. Front-loads the main action and appends the important auth caveat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (list operation, 3 params, no output schema, no annotations), the description covers the essential purpose and the auth/mock behavior. It could be more complete by mentioning pagination or return format, but is largely sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters (page, repo, owner) with descriptions. The description adds no parameter-level meaning beyond what the schema provides. Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (list) and resource (stargazers/users who starred the repo), clearly distinguishing this from siblings like get_repo_stats or list_issues. An agent can immediately understand the tool lists users who starred a repository.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage context by noting PAT requirement and mock fallback, but does not explicitly state when to use this tool versus alternatives. No guidance on prerequisites or when-not-to-use scenarios beyond the credential note.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_issueC
更新 Issue 状态或标签(自动打标签/关单)
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | 仓库名 | |
| owner | Yes | 仓库所有者 | |
| state | No | 目标状态 | |
| labels | No | 逗号分隔标签,可选 | |
| number | Yes | Issue 编号 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden for a mutation tool. It never states whether omitted fields (state or labels) are left unchanged, whether the update is partial or full-replace, what permissions are required, or whether closing is reversible. The '(自动打标签/关单)' phrasing is vague about what actually happens on the server side.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the resource front-loaded and no filler. It is efficient, though the parenthetical is cryptic rather than informative, so it is not maximally well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a five-parameter mutation tool with no annotations, no output schema, and no return-value documentation, the description is far too thin. It leaves the agent without knowledge of partial-update semantics, permission requirements, or the effect of the automatic labeling/closing behavior it alludes to.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and all five parameters (owner, repo, number, state, labels) are documented in the schema, so the baseline is 3. The description echoes state and labels but adds no format or constraint detail beyond the schema's enum and comma-separated hint.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource ('更新 Issue 状态或标签') and names the two mutable fields, which distinguishes it from list_issues, create_issue, and the read-only siblings. It stops short of explicit sibling differentiation, but the verb+resource pairing is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as create_issue when a new issue is needed. The parenthetical '(自动打标签/关单)' hints at automatic labeling/closing but does not explain the conditions under which an agent should invoke the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
v0.1.0- First observed
create_issue - First observed
generate_changelog - First observed
get_repo_stats - First observed
list_issues - First observed
list_stargazers - First observed
update_issue
TDQS
Scored across 6 tools
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.
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.
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.
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
Related MCP Connectors
MCP server for GLM chat completions using Zhipu AI models via AceDataCloud
Related MCP Servers
- AlicenseBqualityDmaintenanceMCP Tool Server for Gitee, supporting the management of repository files/branches, Issues, and Pull Requests.20227MIT
- MIT
- MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server for managing your repositories on Forgejo/Gitea server.66Mozilla Public 2.0