gitea-mcp-serverSAFE
Gitea MCP Server – A Model Context Protocol implementation for Gitea. Provides tools and resources for AI agents to interact with Gitea repositories, issues, pull requests, and more, much more. Built with FastMCP for seamless Gitea integration.
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
[](https://github.com/pxsloot/gitea-mcp-server/actions/workflows/ci.yml) [](pyproject.toml) [](LICENSE) [](https://github.com/astral-sh/ruff)
Model Context Protocol server that provides ~400 auto-generated tools and resources for LLM agents to interact with Gitea and Forgejo instances. Built with FastMCP 3.x.
How it works
Your Gitea/Forgejo instance
│
▼ (Swagger/OpenAPI spec)
gitea-mcp-server
│ ┌────────────────────────────┐
│ │ Auto-generates ~400 tools │
│ │ from the API spec │
│ │ Adds lazy loading, scope │
│ │ filtering, annotations, │
│ │ workflow guides, resources │
│ └────────────────────────────┘
│
▼ (MCP protocol: stdio or HTTP)
Your LLM agent
│
├─ call_tool("gitea_issue_create_issue", ...)
├─ read_resource("gitea://repos/owner/repo")
└─ search_tools("list pull requests")Requirements
- Python 3.11+ and uv (package manager)
- A Gitea or Forgejo instance (local or remote)
- An API token with sufficient scopes (Settings → Applications → Generate Token)
Quick Start
git clone https://github.com/pxsloot/gitea-mcp-server.git && cd gitea-mcp-server cp .env.example .env # then edit GITEA_URL and GITEA_TOKEN uv sync uv run python -m gitea_mcp_server
Install from git (pip)
pip install git+https://github.com/pxsloot/gitea-mcp-server.git gitea-mcp
Configuration
b9b134b62f8eOBSERVED · 2026-10-11Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.
claude mcp add gitea-mcp-server --env GITEA_TOKEN=${GITEA_TOKEN} -- uvx gitea-mcp-server{
"mcpServers": {
"gitea-mcp-server": {
"command": "uvx",
"args": [
"gitea-mcp-server"
],
"env": {
"GITEA_TOKEN": "${GITEA_TOKEN}"
}
}
}
}Exposed tools (44)
44 read · 0 write · 0 destructive.
| Tool | Risk | Description |
|---|---|---|
empty_annotations | read | A tool with null annotations fields |
gitea_array_primitives_tool | read | A tool |
gitea_bar | read | No annotations |
gitea_baz | read | Partial |
gitea_doc_tool | read | Read a doc |
gitea_foo | read | Some tool |
gitea_free_form_object_tool | read | A tool |
gitea_issue_list | read | List issues |
gitea_issue_list_issues | read | List issues in a repository |
gitea_known_tool | read | A known tool |
gitea_repo_list | read | List repos |
gitea_repo_pull_request_is_merged | read | Check if a pull request has been merged |
gitea_search_tools | read | Search tools |
gitea_test | read | A test tool |
gitea_test_tool | read | Test tool |
gitea_tool_array_of_strings | read | A tool returning an array of strings |
gitea_tool_concise_envelope | read | A tool |
gitea_tool_no_schema_included | read | A tool |
gitea_tool_with_array_result | read | A tool that returns an array |
gitea_tool_with_pagination | read | A paginated tool |
gitea_tool_with_refs | read | A tool |
gitea_tool_with_schema | read | A tool |
gitea_tool_with_string_result | read | A tool that returns a string |
gitea_user_get_current | read | Get the authenticated user |
hint_tool | read | A tool with hints |
issue_list_issues | read | Autogen list tool. |
minimal_tool | read | |
no_annotations | read | A tool without annotations |
read_doc_like | read | Synthetic tool with a format-only profile. |
synth_fmt | read | Synthetic tool. |
synth_tool | read | Synthetic tool. |
synth_val | read | Synthetic validation tool. |
t | read | |
tagged_tool | read | A tool with tags |
test_api | read | Test API tool |
test_calltool | read | Test CallToolResult |
test_list | read | Test list tool |
test_meta | read | Test meta |
test_nowrap | read | Test no wrap |
test_tool | read | A test tool. |
tool_a | read | First tool |
tool_b | read | Second tool |
unregistered | read | An unregistered tool. |
with_annotations | read | A tool with annotations |
Trust audit
SAFEgrade B · trust 85/100 Nothing in the source contradicts what it says it does. Grade A is reserved for packages that have also passed the behavioural sandbox.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | WARN |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (1 observation(s))
- Network
- declared (8 observation(s))
- Shell
- none-observed
- Dependencies
- pinned
- Secrets in source
- found
Findings (13)
token="test-token-prefix_last8",
.git-blame-ignore-revs
importlib.import_module(module_name)
importlib.import_module(mod)
mod = importlib.import_module(module_name)
module = importlib.import_module(module_name)
module = importlib.import_module(module_name)
logger.debug("Skipping non-dict token entry", extra={"type": type(token).__name__})"path/../../etc",
"sub/../../etc",
"../../parent",
return base64.b64decode(response.get("content") or "").decode("utf-8")**All (public, private, and limited)** -- Full access to everything the user can see. No restrictions on scopes.
Gates applied: no_behavioural_pass.
b9b134b62f8efull audit observations/trust-audit/mcp-server/pxsloot__gitea-mcp-server.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-11 | b9b134b62f8e | SAFE | B | 85 | first audit |
Questions
What is the gitea-mcp-server MCP server?
Gitea MCP Server – A Model Context Protocol implementation for Gitea. Provides tools and resources for AI agents to interact with Gitea repositories, issues, pull requests, and more, much more. Built with FastMCP for seamless Gitea integration.
What tools does gitea-mcp-server expose?
44 in total: 44 read-only, 0 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.
Is gitea-mcp-server safe to connect to an agent?
The audit found nothing in the source that contradicts what it says it does, and graded it B (85/100). Grade A is held back for packages that have also passed a sandboxed behavioural run, which is why a clean server reads B.
What credentials does gitea-mcp-server need?
It reads GITEA_TOKEN from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.
How current is this page?
The grade is for one exact copy of the source (b9b134b62f8e), read on 2026-10-11. The repository is watched and re-audited when it changes.