@amonstack/gitea-mcp 0.3.1 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +51 -13
- package/README.zh-CN.md +51 -12
- package/dist/cli.d.ts +1 -1
- package/dist/cli.js +29 -1
- package/dist/cli.js.map +1 -1
- package/dist/skills.d.ts +6 -1
- package/dist/skills.js +25 -11
- package/dist/skills.js.map +1 -1
- package/package.json +4 -2
package/README.md
CHANGED
|
@@ -1,20 +1,50 @@
|
|
|
1
|
-
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img alt="gitea-mcp" src="https://raw.githubusercontent.com/amonstack/gitea_mcp/master/docs/assets/gitea-mcp-banner.png" />
|
|
3
|
+
<h3 align="center">gitea-mcp</h3>
|
|
4
|
+
<p align="center">MCP server that exposes Gitea issues, labels, milestones, and comments as tools for AI assistants</p>
|
|
5
|
+
</p>
|
|
2
6
|
|
|
3
|
-
|
|
7
|
+
---
|
|
4
8
|
|
|
5
|
-
|
|
6
|
-
|
|
9
|
+
[](https://www.npmjs.com/package/@amonstack/gitea-mcp)
|
|
10
|
+
[](https://codecov.io/gh/amonstack/gitea_mcp)
|
|
11
|
+
[](https://github.com/amonstack/gitea_mcp/blob/master/LICENSE)
|
|
12
|
+
[](https://www.npmjs.com/package/@amonstack/gitea-mcp)
|
|
13
|
+
[](https://www.typescriptlang.org)
|
|
14
|
+
[](https://modelcontextprotocol.io)
|
|
7
15
|
|
|
8
|
-
|
|
16
|
+
**English** | [中文文档](https://github.com/amonstack/gitea_mcp/blob/master/README.zh-CN.md)
|
|
9
17
|
|
|
10
|
-
`gitea-mcp` is a [Model Context Protocol (MCP)](https://modelcontextprotocol.io/)
|
|
11
|
-
server that exposes Gitea repository operations as tools. Once connected to an
|
|
12
|
-
MCP client (Claude Desktop, opencode, Cursor, etc.), an AI assistant can list,
|
|
13
|
-
create, update, and delete issues, labels, milestones, and comments on your
|
|
14
|
-
Gitea instance — all through natural language.
|
|
18
|
+
`gitea-mcp` is a [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) server that exposes Gitea repository operations as tools. Once connected to an MCP client (Claude Desktop, opencode, Cursor, etc.), an AI assistant can list, create, update, and delete issues, labels, milestones, and comments on your Gitea instance — all through natural language.
|
|
15
19
|
|
|
16
|
-
The server communicates over stdio and wraps the [Gitea REST API
|
|
17
|
-
|
|
20
|
+
The server communicates over stdio and wraps the [Gitea REST API (`/api/v1`)](https://docs.gitea.com/api/1.22/).
|
|
21
|
+
|
|
22
|
+
## Features
|
|
23
|
+
|
|
24
|
+
- **Full Gitea project management** — issues, labels, milestones, and comments via natural language
|
|
25
|
+
- **Zero-config auto-discovery** — reads `baseUrl`, `owner`, `repo`, and token from the project's git config; one global install serves many repos
|
|
26
|
+
- **Multi-source auth with failover** — tries `[gitea]` config tokens, `GITEA_TOKEN`, then the git credential store, advancing automatically on `401`/`403`
|
|
27
|
+
- **Action-scoped skills** — ships one skill per workflow (find, create, label, comment, plan milestones, …) for opencode, Claude Code, Cursor, and more
|
|
28
|
+
- **Client-agnostic** — works with any stdio-based MCP client; ships guidance prompts and on-demand reference resources too
|
|
29
|
+
|
|
30
|
+
## Table of Contents
|
|
31
|
+
|
|
32
|
+
- [Features](#features)
|
|
33
|
+
- [Requirements](#requirements)
|
|
34
|
+
- [Installation](#installation)
|
|
35
|
+
- [Configuration](#configuration)
|
|
36
|
+
- [MCP Client Setup](#mcp-client-setup)
|
|
37
|
+
- [Available Tools](#available-tools)
|
|
38
|
+
- [AI Guidance & Skills](#ai-guidance--skills)
|
|
39
|
+
- [Development](#development)
|
|
40
|
+
- [Contributing](#contributing)
|
|
41
|
+
- [License](#license)
|
|
42
|
+
|
|
43
|
+
## Requirements
|
|
44
|
+
|
|
45
|
+
- **Node.js ≥ 18** — uses the global `fetch`
|
|
46
|
+
- A **Gitea instance** (self-hosted or Gitea Cloud) reachable over HTTP
|
|
47
|
+
- A **Gitea API token** (or a git credential-store entry) for anything beyond reading public repositories
|
|
18
48
|
|
|
19
49
|
## Installation
|
|
20
50
|
|
|
@@ -324,6 +354,14 @@ npm ci
|
|
|
324
354
|
For the full architecture — module layout, dependency graph, core patterns, and
|
|
325
355
|
the guide to adding a new tool — see [`docs/architecture.md`](docs/architecture.md).
|
|
326
356
|
|
|
357
|
+
## Contributing
|
|
358
|
+
|
|
359
|
+
Contributions are welcome!
|
|
360
|
+
|
|
361
|
+
- Found a bug or have a feature idea? Please [open an issue](https://github.com/amonstack/gitea_mcp/issues).
|
|
362
|
+
- Pull requests are gladly accepted. This repo follows [Conventional Commits](https://www.conventionalcommits.org/) and the workflow described in [`AGENTS.md`](AGENTS.md) — please skim it before your first PR.
|
|
363
|
+
- For the module layout, dependency graph, and the guide to adding a new tool, see [`docs/architecture.md`](docs/architecture.md).
|
|
364
|
+
|
|
327
365
|
## License
|
|
328
366
|
|
|
329
|
-
MIT
|
|
367
|
+
[MIT](LICENSE) — Copyright (c) 2026 [amonstack](https://github.com/amonstack).
|
package/README.zh-CN.md
CHANGED
|
@@ -1,19 +1,50 @@
|
|
|
1
|
-
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img alt="gitea-mcp" src="https://raw.githubusercontent.com/amonstack/gitea_mcp/master/docs/assets/gitea-mcp-banner.png" />
|
|
3
|
+
<h3 align="center">gitea-mcp</h3>
|
|
4
|
+
<p align="center">MCP 服务端,将 Gitea 的议题、标签、里程碑与评论封装为工具,供 AI 助手调用</p>
|
|
5
|
+
</p>
|
|
2
6
|
|
|
3
|
-
|
|
7
|
+
---
|
|
4
8
|
|
|
5
|
-
|
|
6
|
-
|
|
9
|
+
[](https://www.npmjs.com/package/@amonstack/gitea-mcp)
|
|
10
|
+
[](https://codecov.io/gh/amonstack/gitea_mcp)
|
|
11
|
+
[](https://github.com/amonstack/gitea_mcp/blob/master/LICENSE)
|
|
12
|
+
[](https://www.npmjs.com/package/@amonstack/gitea-mcp)
|
|
13
|
+
[](https://www.typescriptlang.org)
|
|
14
|
+
[](https://modelcontextprotocol.io)
|
|
7
15
|
|
|
8
|
-
|
|
16
|
+
[English](https://github.com/amonstack/gitea_mcp/blob/master/README.md) | **中文文档**
|
|
9
17
|
|
|
10
|
-
`gitea-mcp` 是一个 [Model Context Protocol (MCP)](https://modelcontextprotocol.io/)
|
|
11
|
-
服务端,将 Gitea 仓库操作暴露为 MCP 工具。连接到 MCP 客户端(Claude Desktop、
|
|
12
|
-
opencode、Cursor 等)后,AI 助手即可通过自然语言在 Gitea 实例上创建、查询、
|
|
13
|
-
更新和删除议题、标签、里程碑和评论。
|
|
18
|
+
`gitea-mcp` 是一个 [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) 服务端,将 Gitea 仓库操作暴露为 MCP 工具。连接到 MCP 客户端(Claude Desktop、opencode、Cursor 等)后,AI 助手即可通过自然语言在 Gitea 实例上创建、查询、更新和删除议题、标签、里程碑和评论。
|
|
14
19
|
|
|
15
|
-
服务端通过 stdio 通信,封装了 [Gitea REST API
|
|
16
|
-
|
|
20
|
+
服务端通过 stdio 通信,封装了 [Gitea REST API (`/api/v1`)](https://docs.gitea.com/api/1.22/)。
|
|
21
|
+
|
|
22
|
+
## 功能特性
|
|
23
|
+
|
|
24
|
+
- **完整的 Gitea 项目管理** —— 通过自然语言管理议题、标签、里程碑与评论
|
|
25
|
+
- **零配置自动发现** —— 从项目 git 配置读取 `baseUrl`、`owner`、`repo` 与令牌;一次全局安装即可服务多个仓库
|
|
26
|
+
- **多来源认证 + 自动容错** —— 依次尝试 `[gitea]` 配置令牌、`GITEA_TOKEN`、git 凭据存储,遇 `401`/`403` 自动切换
|
|
27
|
+
- **按动作划分的技能** —— 每个工作流一个技能(查找、创建、打标签、评论、规划里程碑……),适配 opencode、Claude Code、Cursor 等
|
|
28
|
+
- **客户端无关** —— 兼容任何基于 stdio 的 MCP 客户端;同时内置引导提示与按需参考资源
|
|
29
|
+
|
|
30
|
+
## 目录
|
|
31
|
+
|
|
32
|
+
- [功能特性](#功能特性)
|
|
33
|
+
- [环境要求](#环境要求)
|
|
34
|
+
- [安装](#安装)
|
|
35
|
+
- [配置](#配置)
|
|
36
|
+
- [MCP 客户端配置](#mcp-客户端配置)
|
|
37
|
+
- [可用工具](#可用工具)
|
|
38
|
+
- [AI 引导与技能](#ai-引导与技能)
|
|
39
|
+
- [二次开发](#二次开发)
|
|
40
|
+
- [参与贡献](#参与贡献)
|
|
41
|
+
- [许可证](#许可证)
|
|
42
|
+
|
|
43
|
+
## 环境要求
|
|
44
|
+
|
|
45
|
+
- **Node.js ≥ 18** —— 使用全局 `fetch`
|
|
46
|
+
- 一个可通过 HTTP 访问的 **Gitea 实例**(自托管或 Gitea Cloud)
|
|
47
|
+
- 一个 **Gitea API 令牌**(或 git 凭据存储条目),用于读取公开仓库以外的操作
|
|
17
48
|
|
|
18
49
|
## 安装
|
|
19
50
|
|
|
@@ -306,6 +337,14 @@ npm ci
|
|
|
306
337
|
完整的架构说明(模块布局、依赖关系、核心模式,以及新增工具的指引)请参阅
|
|
307
338
|
[`docs/architecture.md`](docs/architecture.md)。
|
|
308
339
|
|
|
340
|
+
## 参与贡献
|
|
341
|
+
|
|
342
|
+
欢迎贡献!
|
|
343
|
+
|
|
344
|
+
- 发现 bug 或有功能建议?请[提交一个 issue](https://github.com/amonstack/gitea_mcp/issues)。
|
|
345
|
+
- 欢迎提交 Pull Request。本仓库遵循 [Conventional Commits](https://www.conventionalcommits.org/),工作流见 [`AGENTS.md`](AGENTS.md) —— 首次 PR 前请先浏览一遍。
|
|
346
|
+
- 模块布局、依赖关系、核心模式以及新增工具的指引,请参阅 [`docs/architecture.md`](docs/architecture.md)。
|
|
347
|
+
|
|
309
348
|
## 许可证
|
|
310
349
|
|
|
311
|
-
MIT
|
|
350
|
+
[MIT](LICENSE) —— 版权所有 (c) 2026 [amonstack](https://github.com/amonstack)。
|
package/dist/cli.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
export
|
|
2
|
+
export declare const TOP_LEVEL_USAGE = "Usage: gitea-mcp [command] [options]\n\nGitea MCP server \u2014 exposes Gitea issues, labels, milestones, and comments as\ntools for AI assistants. With no command, it starts the Model Context Protocol\nserver over stdio and auto-discovers baseUrl, owner, repo, and credentials from\nthe environment and the local git remote (.git/config).\n\nCommands:\n init Install bundled action skills into an AI tool's skills directory.\n\nOptions:\n -h, --help Show this help and exit.\n -V, --version Show version and exit.\n\nWith no command, gitea-mcp starts the MCP server. Run `gitea-mcp init --help`\nfor init-specific options.\n";
|
package/dist/cli.js
CHANGED
|
@@ -1,8 +1,36 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import { createRequire } from "node:module";
|
|
2
3
|
import { runServer } from "./server.js";
|
|
3
4
|
import { discoverConfig } from "./git-config.js";
|
|
5
|
+
const pkgVersion = createRequire(import.meta.url)("../package.json").version;
|
|
6
|
+
export const TOP_LEVEL_USAGE = `Usage: gitea-mcp [command] [options]
|
|
7
|
+
|
|
8
|
+
Gitea MCP server — exposes Gitea issues, labels, milestones, and comments as
|
|
9
|
+
tools for AI assistants. With no command, it starts the Model Context Protocol
|
|
10
|
+
server over stdio and auto-discovers baseUrl, owner, repo, and credentials from
|
|
11
|
+
the environment and the local git remote (.git/config).
|
|
12
|
+
|
|
13
|
+
Commands:
|
|
14
|
+
init Install bundled action skills into an AI tool's skills directory.
|
|
15
|
+
|
|
16
|
+
Options:
|
|
17
|
+
-h, --help Show this help and exit.
|
|
18
|
+
-V, --version Show version and exit.
|
|
19
|
+
|
|
20
|
+
With no command, gitea-mcp starts the MCP server. Run \`gitea-mcp init --help\`
|
|
21
|
+
for init-specific options.
|
|
22
|
+
`;
|
|
4
23
|
const argv = process.argv.slice(2);
|
|
5
|
-
|
|
24
|
+
const head = argv[0];
|
|
25
|
+
if (head === "-h" || head === "--help" || head === "help") {
|
|
26
|
+
process.stdout.write(TOP_LEVEL_USAGE);
|
|
27
|
+
process.exit(0);
|
|
28
|
+
}
|
|
29
|
+
if (head === "-V" || head === "--version") {
|
|
30
|
+
process.stdout.write(`gitea-mcp ${pkgVersion}\n`);
|
|
31
|
+
process.exit(0);
|
|
32
|
+
}
|
|
33
|
+
if (head === "init") {
|
|
6
34
|
// `gitea-mcp init [--tool <name>]` installs the bundled skills into a target
|
|
7
35
|
// AI tool's skills directory. It needs no Gitea credentials, so it is
|
|
8
36
|
// dispatched before the config-discovery logic below.
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,UAAU,GAAI,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,iBAAiB,CAAyB,CAAC,OAAO,CAAC;AAEtG,MAAM,CAAC,MAAM,eAAe,GAAG;;;;;;;;;;;;;;;;CAgB9B,CAAC;AAEF,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAErB,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;IAC1D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;IAC1C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,UAAU,IAAI,CAAC,CAAC;IAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;IACpB,6EAA6E;IAC7E,sEAAsE;IACtE,sDAAsD;IACtD,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;IACvD,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;QACnD,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;QACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;KAAM,CAAC;IACN,4EAA4E;IAC5E,6EAA6E;IAC7E,4EAA4E;IAC5E,4EAA4E;IAC5E,wEAAwE;IACxE,mEAAmE;IACnE,6EAA6E;IAC7E,mBAAmB;IACnB,MAAM,UAAU,GAAG,MAAM,cAAc,EAAE,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;QAC/D,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;QACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CACX,qCAAqC,OAAO,CAAC,GAAG,EAAE,wDAAwD,CAC3G,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,SAAS,CACP,UAAU,CAAC,OAAO,EAClB,UAAU,CAAC,UAAU,EACrB,UAAU,CAAC,YAAY,EACvB,UAAU,CAAC,WAAW,CACvB,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;QACvB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;QACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/skills.d.ts
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
export declare const USAGE = "Usage: gitea-mcp init [options]\n\nCopy every bundled action skill into an AI tool's skills directory so the tool\nloads them on next start. No Gitea credentials are required.\n\nOptions:\n -h, --help Show this help and exit.\n --tool <name> Target AI tool (default: opencode).\n --project Install into ./.<tool>/skills/ instead of its global skills dir.\n --dir <path> Install into this exact directory (overrides --tool and --project).\n\nSupported tools (<name>):\n amazon-q, antigravity, auggie, claude, cline, codex, codebuddy, continue,\n costrict, crush, cursor, factory, gemini, github-copilot, iflow, kilocode,\n opencode, qoder, qwen, roocode, windsurf";
|
|
1
2
|
export interface InitOptions {
|
|
2
3
|
tool: string;
|
|
3
4
|
project: boolean;
|
|
4
5
|
dir?: string;
|
|
6
|
+
/** Set by parseInitArgs when `-h` / `--help` is passed; runInitCommand prints usage and exits 0. */
|
|
7
|
+
help?: boolean;
|
|
5
8
|
}
|
|
6
9
|
/** A supported target tool and where its skills live. */
|
|
7
10
|
export interface ToolTarget {
|
|
@@ -25,7 +28,9 @@ export declare function bundledSkillsDir(): string;
|
|
|
25
28
|
* --project (./.<tool>/skills) > the tool's global skills dir.
|
|
26
29
|
*/
|
|
27
30
|
export declare function resolveInstallDir(opts: InitOptions): string;
|
|
28
|
-
/** Parse `gitea-mcp init [flags]`. Throws on unknown flags or missing values.
|
|
31
|
+
/** Parse `gitea-mcp init [flags]`. Throws on unknown flags or missing values.
|
|
32
|
+
* `-h` / `--help` is returned as `opts.help = true` (not thrown) so the caller
|
|
33
|
+
* can print usage to stdout and exit 0 instead of treating it as an error. */
|
|
29
34
|
export declare function parseInitArgs(argv: string[]): InitOptions;
|
|
30
35
|
/**
|
|
31
36
|
* Copy every skill (each subdirectory of `srcDir` containing a SKILL.md) into
|
package/dist/skills.js
CHANGED
|
@@ -5,11 +5,18 @@ import { fileURLToPath } from "node:url";
|
|
|
5
5
|
const BUNDLED_SKILLS_REL = ["assets", "skills"];
|
|
6
6
|
const SKILL_FILENAME = "SKILL.md";
|
|
7
7
|
const DEFAULT_TOOL = "opencode";
|
|
8
|
-
const USAGE = `Usage: gitea-mcp init [
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
export const USAGE = `Usage: gitea-mcp init [options]
|
|
9
|
+
|
|
10
|
+
Copy every bundled action skill into an AI tool's skills directory so the tool
|
|
11
|
+
loads them on next start. No Gitea credentials are required.
|
|
12
|
+
|
|
13
|
+
Options:
|
|
14
|
+
-h, --help Show this help and exit.
|
|
15
|
+
--tool <name> Target AI tool (default: ${DEFAULT_TOOL}).
|
|
16
|
+
--project Install into ./.<tool>/skills/ instead of its global skills dir.
|
|
17
|
+
--dir <path> Install into this exact directory (overrides --tool and --project).
|
|
18
|
+
|
|
19
|
+
Supported tools (<name>):
|
|
13
20
|
amazon-q, antigravity, auggie, claude, cline, codex, codebuddy, continue,
|
|
14
21
|
costrict, crush, cursor, factory, gemini, github-copilot, iflow, kilocode,
|
|
15
22
|
opencode, qoder, qwen, roocode, windsurf`;
|
|
@@ -80,12 +87,18 @@ export function resolveInstallDir(opts) {
|
|
|
80
87
|
return join(process.cwd(), target.projectSkillsDir);
|
|
81
88
|
return target.globalSkillsDir();
|
|
82
89
|
}
|
|
83
|
-
/** Parse `gitea-mcp init [flags]`. Throws on unknown flags or missing values.
|
|
90
|
+
/** Parse `gitea-mcp init [flags]`. Throws on unknown flags or missing values.
|
|
91
|
+
* `-h` / `--help` is returned as `opts.help = true` (not thrown) so the caller
|
|
92
|
+
* can print usage to stdout and exit 0 instead of treating it as an error. */
|
|
84
93
|
export function parseInitArgs(argv) {
|
|
85
|
-
const opts = { tool: DEFAULT_TOOL, project: false };
|
|
94
|
+
const opts = { tool: DEFAULT_TOOL, project: false, help: false };
|
|
86
95
|
for (let i = 0; i < argv.length; i++) {
|
|
87
96
|
const a = argv[i];
|
|
88
|
-
if (a === "--
|
|
97
|
+
if (a === "--help" || a === "-h") {
|
|
98
|
+
opts.help = true;
|
|
99
|
+
break;
|
|
100
|
+
}
|
|
101
|
+
else if (a === "--project") {
|
|
89
102
|
opts.project = true;
|
|
90
103
|
}
|
|
91
104
|
else if (a === "--tool") {
|
|
@@ -106,9 +119,6 @@ export function parseInitArgs(argv) {
|
|
|
106
119
|
else if (a.startsWith("--dir=")) {
|
|
107
120
|
opts.dir = a.slice("--dir=".length);
|
|
108
121
|
}
|
|
109
|
-
else if (a === "--help" || a === "-h") {
|
|
110
|
-
throw new Error(USAGE);
|
|
111
|
-
}
|
|
112
122
|
else {
|
|
113
123
|
throw new Error(`Unknown argument: ${a}\n${USAGE}`);
|
|
114
124
|
}
|
|
@@ -172,6 +182,10 @@ export async function installSkills(srcDir, destRoot) {
|
|
|
172
182
|
*/
|
|
173
183
|
export async function runInitCommand(argv) {
|
|
174
184
|
const opts = parseInitArgs(argv);
|
|
185
|
+
if (opts.help) {
|
|
186
|
+
process.stdout.write(USAGE + "\n");
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
175
189
|
const target = resolveTool(opts.tool);
|
|
176
190
|
const destRoot = resolveInstallDir(opts);
|
|
177
191
|
const installed = await installSkills(bundledSkillsDir(), destRoot);
|
package/dist/skills.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../src/skills.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,kBAAkB,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAU,CAAC;AACzD,MAAM,cAAc,GAAG,UAAU,CAAC;AAClC,MAAM,YAAY,GAAG,UAAU,CAAC;AAEhC,MAAM,KAAK,GAAG
|
|
1
|
+
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../src/skills.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@amonstack/gitea-mcp",
|
|
3
|
-
"version": "0.3.
|
|
4
|
-
"description": "MCP server
|
|
3
|
+
"version": "0.3.2",
|
|
4
|
+
"description": "MCP server that exposes Gitea issues, labels, milestones, and comments as tools for AI assistants",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "https://github.com/amonstack/gitea_mcp.git"
|
|
@@ -27,6 +27,7 @@
|
|
|
27
27
|
"test": "vitest run",
|
|
28
28
|
"test:watch": "vitest",
|
|
29
29
|
"test:integration": "vitest run --config vitest.integration.config.ts",
|
|
30
|
+
"test:coverage": "vitest run --coverage",
|
|
30
31
|
"smoke": "node scripts/smoke.mjs",
|
|
31
32
|
"scan": "gitleaks detect --source . --redact --report-format json -r .dist/leaks.json --no-banner"
|
|
32
33
|
},
|
|
@@ -49,6 +50,7 @@
|
|
|
49
50
|
},
|
|
50
51
|
"devDependencies": {
|
|
51
52
|
"@types/node": "^25.9.1",
|
|
53
|
+
"@vitest/coverage-v8": "^4.1.10",
|
|
52
54
|
"tsx": "^4.22.3",
|
|
53
55
|
"typescript": "^6.0.3",
|
|
54
56
|
"vitest": "^4.1.7"
|