Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者による説明(英語の原文)
Model Context Protocol server for Gitea (and Forgejo, Codeberg).
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
GITEA_URL, GITEA_TOKEN, GITEA_TIMEOUT, GITEA_MAX_RETRIES, GITEA_RETRY_BASE_DELAY「秘密」と表示された値は、あなたのアカウントの鍵です。絶対に人に教えたり、チャットに貼り付けたりしないでください。
必要なもの
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます
{
"mcpServers": {
"gitea": {
"command": "uvx",
"args": [
"gitea-mcp"
],
"env": {
"GITEA_URL": "your-value",
"GITEA_TOKEN": "your-value",
"GITEA_TIMEOUT": "your-value",
"GITEA_MAX_RETRIES": "your-value",
"GITEA_RETRY_BASE_DELAY": "your-value"
}
}
}
}ターミナルでこれを実行します
claude mcp add gitea --env GITEA_URL=your-value --env GITEA_TOKEN=your-value --env GITEA_TIMEOUT=your-value --env GITEA_MAX_RETRIES=your-value --env GITEA_RETRY_BASE_DELAY=your-value -- uvx gitea-mcp動かす前に、空欄の値を入力してください。
プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"gitea": {
"command": "uvx",
"args": [
"gitea-mcp"
],
"env": {
"GITEA_URL": "your-value",
"GITEA_TOKEN": "your-value",
"GITEA_TIMEOUT": "your-value",
"GITEA_MAX_RETRIES": "your-value",
"GITEA_RETRY_BASE_DELAY": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"gitea": {
"type": "stdio",
"command": "uvx",
"args": [
"gitea-mcp"
],
"env": {
"GITEA_URL": "your-value",
"GITEA_TOKEN": "your-value",
"GITEA_TIMEOUT": "your-value",
"GITEA_MAX_RETRIES": "your-value",
"GITEA_RETRY_BASE_DELAY": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
GITEA_TIMEOUT envGITEA_MAX_RETRIES envGITEA_RETRY_BASE_DELAY envこの設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月8日にチェック
レジストリ名は、リポジトリを所有するGitHubアカウント werebear73 で確認済みです
このリポジトリはまだGitHubから読み取っていません
このリポジトリはまだGitHubから読み取っていません
これはパソコンで動くため、インターネット上のエンドポイントはありません
パソコンで動き、代わりにローカルの設定を使います
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
入力が必要なもの:GITEA_URL, GITEA_TOKEN
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
GitHubリポジトリの最終更新は–、最新バージョン(0.5.1)がレジストリに届いたのは5 か月前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにPython (uv)も必要です。
同じカテゴリには:Spec Driven Development, Remote Desktop Commander, ProAgentStore
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
MCP-first control plane for ProAgentStore agents and private instances.
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
A Model Context Protocol server for Gitea — lets AI assistants (Claude, ChatGPT, Copilot, and anything else that speaks MCP) read, create, and manage issues, repositories, and releases on any Gitea instance you can reach.
Also works against [Forgejo](https://forgejo.org) and [Codeberg](https://codeberg.org) (API-compatible).
Self-hosted Gitea is a popular GitHub alternative for solo developers, small teams, and privacy-conscious organizations. With this MCP server installed, your AI assistant can:
| Resource | Tools |
|---|---|
| Issues | create_issue, list_issues, get_issue, update_issue, add_comment |
| Repos | list_repos, list_labels, list_milestones, list_branches |
| Pulls | list_pull_requests, get_pull_request, add_comment_on_pr, create_pr, merge_pr |
| Files | read_file, commit_changes, create_branch |
| Releases | list_releases, create_release |
| Meta | get_server_info, get_server_version |
httpx and FastMCPpip install gitea-mcp
Or with uv:
uv pip install gitea-mcp
In your Gitea instance, go to Settings → Applications → Generate New Token and grant at least:
read:repositorywrite:issueread:userAdd write:repository if you also want to create releases.
Claude Desktop (interactive): run
gitea-mcp init
It prompts for the Gitea URL and Personal Access Token, verifies the connection, and writes (or merges into) the right claude_desktop_config.json for your OS. Restart Claude Desktop and you're done.
To check that the server can reach your Gitea instance at any time:
gitea-mcp doctor
doctor reads GITEA_URL and GITEA_TOKEN from the environment, runs a GET /api/v1/user, and reports the authenticated username plus the state of the MCP tool surface. Exit 0 = ready; exit 1 = connection/load failure; exit 2 = missing config.
Any MCP client (manual): add gitea-mcp to the client's MCP config. The recommended form uses uvx so the client launches the latest published wheel in an isolated env without needing gitea-mcp on its own PATH (this is what gitea-mcp init writes):
{
"mcpServers": { "gitea": { "command": "uvx", "args": ["gitea-mcp"], "env": { "GITEA_URL": "https://your-gitea-instance.example.com", "GITEA_TOKEN": "your-personal-access-token" } } } }
If you'd rather use a globally pip-installed gitea-mcp binary, drop args and set command to "gitea-mcp" directly — works as long as the binary is on the MCP client's PATH at launch time.
See mcp.json for a complete example. The same shape works for Claude Desktop, VS Code, Cowork, Claude Code, and any other MCP-compatible client.
Configuration is read from environment variables.
| Variable | Required | Default | Description |
|---|---|---|---|
GITEA_URL | Yes | — | Base URL of your Gitea instance (e.g., https://gitea.example.com) |
GITEA_TOKEN | Yes | — | Personal Access Token from your Gitea user settings |
GITEA_TIMEOUT | No | 30 | HTTP request timeout in seconds |
GITEA_MAX_RETRIES | No | 3 | Max retries for transient failures on idempotent methods (GET/PUT/DELETE). Set to 0 to disable retries. POST and PATCH are never auto-retried — they could create duplicate issues, comments, or releases. 429 Too Many Requests is retried for any method, honoring Retry-After when present. |
GITEA_RETRY_BASE_DELAY | No | 0.5 | Base delay (seconds) for exponential backoff between retries. Effective delay grows as base * 2^attempt with jitter, capped at 4 seconds. |
By default gitea-mcp runs in stdio mode — each MCP client (Claude Desktop, Cowork, etc.) launches its own subprocess on demand. For self-hosting one instance that multiple clients connect to over the network, use the streamable-HTTP transport:
gitea-mcp serve --transport http --host 0.0.0.0 --port 8000 --path /mcp
All four flags can also be provided via environment variables (handy for Docker / systemd units):
| Variable | Default | Flag |
|---|---|---|
GITEA_MCP_TRANSPORT | stdio | --transport |
GITEA_MCP_HOST | 127.0.0.1 | --host |
GITEA_MCP_PORT | 8000 | --port |
GITEA_MCP_PATH | /mcp | --path |
MCP clients connect to the resulting URL (e.g. https://gitea-mcp.example.com/mcp) just like they would to a local stdio server, except they share the one running instance.
Auth model (this release). The server reads GITEA_TOKEN from its own environment, so any client that reaches the URL acts as that one Gitea user. Run it for yourself behind your own access controls (firewall, reverse-proxy auth, VPN, Tailscale). Multi-tenant bring-your-own-token is on the roadmap.
The no-args invocation (gitea-mcp with no subcommand) still runs in stdio mode, so existing Claude Desktop / Cowork / Claude Code integrations are unaffected by this addition.
| Server | Status |
|---|---|
| Gitea (self-hosted) | ✅ Primary target |
| Forgejo | ✅ Expected to work (API-compatible) |
| Codeberg | ✅ Expected to work (Codeberg runs Forgejo) |
git clone https://github.com/werebear73/gitea-mcp.git
cd gitea-mcp pip install -e ".[dev]" pre-commit install # commit-stage hooks (ruff + mypy) pre-commit install --hook-type pre-push # push-stage hooks (pytest + build check) pytest
The two-stage pre-commit policy keeps the commit loop snappy (lint + type only) while making git push block on the slow stuff that's actually caught CI/release bugs in the past — the full test suite and python -m build && twine check dist/*, which surfaces setuptools_scm version surprises before they reach a tag push.
See docs/ROADMAP.md for what's shipped, what's next, and what's out of scope.
server.json.docs/PUBLISHING.md.Semantic versioning, derived from git tags via setuptools_scm. See VERSIONING.md for the release process.
Issues and pull requests welcome. For substantial changes, please open an issue first to discuss the approach.
MIT — use it however you like, including commercial products.
Built by Waretech Services.