Skip to main content
Glama

gitea-mcp

MCP server for Gitea, built for autonomous AI agents.

Features

  • Repositories, issues, pull requests, releases, labels, milestones

  • File content management (create, read, update, delete)

  • Branches, tags, commits, and status checks

  • Actions / CI workflows and artifacts

  • Long-running waiters - workflow_runs_wait / workflow_jobs_wait block until a run or job finishes (streaming progress via MCP notifications); non-blocking *_wait_start / *_wait_poll(max_block=...) / *_wait_cancel + waits_list keep the agent responsive. Waits tolerate transient API errors (max_poll_failures, default 3 consecutive), background waits self-terminate after max_lifetime (default 2h), and all wait ops live in gitea_read - they only ever GET

  • Organizations, teams, and user management

  • Webhooks, deploy keys, notifications, wiki, packages

  • Admin endpoints for instance-level operations

  • Risk-graded meta-tools (gitea_read / gitea_write / gitea_execute / gitea_delete / gitea_admin_read / gitea_admin_write) — agents pick a tool surface by the kind of side effect, not the HTTP verb

  • Per-param help with operation='help' params={'search': 'foo'} for substring filtering and cross-group hints

  • Zero-config install via uvx

Related MCP server: gitea-mcp

Quick Start

Add the following to your MCP client configuration (Claude Desktop, Cursor, Claude Code, etc.). For Claude Code global config on macOS: ~/.claude.json"mcpServers".

{
  "mcpServers": {
    "gitea": {
      "command": "uvx",
      "args": ["--refresh", "--extra-index-url", "https://nikitatsym.github.io/gitea-mcp/simple", "gitea-mcp"],
      "env": {
        "GITEA_URL": "https://gitea.example.com",
        "GITEA_TOKEN": "your-api-token"
      }
    }
  }
}

Or use the interactive Setup Page to generate the config.

HTTP

gitea-mcp --http serves streamable HTTP at http://127.0.0.1:8000/mcp (--host, --port) instead of stdio, same environment variables. No authentication: put a gateway in front.

The package can also be imported: mcp, Settings, the client class, and client_var (a ContextVar the host sets per request) let one process serve several instances.

Configuration

Variable

Required

Description

GITEA_URL

Yes

Base URL of your Gitea instance (e.g. https://gitea.example.com)

GITEA_TOKEN

Yes

Personal access token with appropriate permissions. For CreateUserAccessToken self-rotation, must include write:user (or all) scope.

MCP_GITEA_BRIEF_MAX

No

Max character length for the <brief>summary</brief> tag enforced on issue/PR bodies (default: 100; 0 disables the requirement)

By default, creating public repos and orgs is blocked — agents must pass private=true explicitly. To allow public repos, add --allow-public to the command args:

"args": ["--refresh", "--extra-index-url", "https://nikitatsym.github.io/gitea-mcp/simple", "gitea-mcp", "--allow-public"]

Tool Groups

Operations are exposed through risk-graded meta-tools — one tool surface per scope, dispatched via operation + params.

Meta-tool

Scope

Examples

gitea_read

GET, safe / read-only

ListRepos, GetIssue, ListPullRequests

gitea_write

Create + update (POST/PUT/PATCH)

CreateRepo, EditIssue, CreatePullRequest

gitea_execute

Action triggers with real-world side effects

MergePullRequest, DispatchWorkflow

gitea_delete

Destructive DELETE

DeleteRepo, DeleteBranch

gitea_admin_read

Admin-scope GET

AdminListUsers, AdminListRunners

gitea_admin_write

Admin-scope writes + admin actions

AdminCreateUser, AdminRunCronJob

Each meta-tool takes operation (PascalCase op name, or help / schema) plus params (dict):

gitea_read(operation="help")                                                # list every op in this group
gitea_read(operation="help", params={"search": "merge"})                    # filter by substring; surfaces cross-group hits
gitea_read(operation="schema", params={"op": "GetRepo"})                    # full JSON Schema for one op
gitea_read(operation="GetRepo", params={"owner": "alice", "repo": "x"})     # invoke

gitea_write(operation="CreateIssue", params={"owner": "alice", "repo": "x", "title": "Bug", "body": "<brief>repro</brief>"})
gitea_execute(operation="MergePullRequest", params={"owner": "alice", "repo": "x", "index": 7, "merge_type": "squash"})

Params are validated strictly via Pydantic: unknown keys, wrong types, and missing required fields return a contextual error result with field-level detail.

Creating a Gitea API Token

  1. Log in to your Gitea instance.

  2. Go to Settings > Applications.

  3. Under Manage Access Tokens, enter a token name (e.g. mcp-server).

  4. Select the permissions your agent needs (read/write on repos, issues, etc.).

  5. Click Generate Token and copy the value immediately -- it is shown only once.

Development

dev.py is the single gate entry point (dev-script contract): lint (ruff + tackbox), e2e (boots the dockerized Gitea, runs the integration suite), test (unit + e2e), check (lint + test). Pre-commit and CI both run ./dev.py check — install the hook once per clone with python dev.py hook, which points core.hooksPath at the tracked .githooks/.

npm scripts cover the docker lifecycle around it:

# unit tests (no docker, fast)
npm test

# bring up Gitea container + bootstrap admin user + write tests/.env
npm run gitea:up

# run integration tests against the live container
npm run test:integration

# tear down
npm run gitea:down

# one-shot: up + integration + down (exits with the pytest status code)
npm run test:integration:full

npm run gitea:bootstrap is idempotent — re-running against an already-bootstrapped instance no-ops if tests/.env carries a still-valid token, otherwise deletes the named token and creates a fresh one. The bootstrap script (scripts/bootstrap.py) is also runnable directly via uv run python scripts/bootstrap.py.

tests/.env schema:

GITEA_URL=http://localhost:3000
GITEA_TOKEN=<sha1>
GITEA_ADMIN_USER=testadmin
GITEA_ADMIN_PASSWORD=testadmin1234

Integration tests are gated behind @pytest.mark.integration and skipped unless GITEA_URL + GITEA_TOKEN are present — npm test will not require docker.

License

MIT

Available Tools

7 tools
gitea_admin_readB

Gitea admin read operations (GET /admin/*).

operation='help' — list ops with parameter names + types. operation='help' params={'search':'X'} — same, filtered to ops whose name contains X (case-insensitive). operation='schema' — JSON Schema for one op. params={'op': 'OpName'} or params={} to list op names. operation='' params={...} — invoke. Params validated strictly: unknown keys, wrong types, missing required → ValueError with field-level detail.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo
operationYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full transparency burden. It discloses strict parameter validation and the meta-operation behavior (help/schema), which is useful. However, it does not mention authentication, rate limits, response format, or potential side-effect-free nature beyond the word 'read'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and well-structured with clear line breaks separating operational modes. Every sentence contributes to usability. It avoids unnecessary prose while covering the essential mechanics.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the dynamic dispatcher complexity and lack of output schema/annotations, the description explains how to discover operations (help), inspect schemas (schema), and invoke with validation details. It is sufficiently complete for a meta-tool, though examples of actual operations and return values would enhance completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema lists 'operation' and 'params' without descriptions (0% schema coverage). The description compensates by explaining the three operation modes ('help', 'schema', '<OpName>') and the role of 'params' as a validated pass-through argument object. This adds significant meaning beyond the raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States 'Gitea admin read operations (GET /admin/*)' which clearly identifies the resource and verb scope. It distinguishes from write/delete/execute siblings by the 'admin' and 'read' qualifiers, though it does not explicitly differentiate from the generic sibling 'gitea_read'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides detailed operational instructions (help, schema, invoke) but gives no guidance on when to choose this tool over alternatives like gitea_read or gitea_admin_write. No explicit 'use this when...' or 'instead of...' statements. Usage context is only implied by the tool name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gitea_admin_writeA

Gitea admin write operations (POST/PUT/PATCH/DELETE /admin/*) and admin-scope actions like running cron jobs.

operation='help' — list ops with parameter names + types. operation='help' params={'search':'X'} — same, filtered to ops whose name contains X (case-insensitive). operation='schema' — JSON Schema for one op. params={'op': 'OpName'} or params={} to list op names. operation='' params={...} — invoke. Params validated strictly: unknown keys, wrong types, missing required → ValueError with field-level detail.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo
operationYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description fully shoulders the transparency burden. It discloses that operations are write-oriented, describes strict parameter validation with field-level error details, and explains the behavior of help, schema, and invocation modes. It could be more explicit about side effects like actual data mutation, but 'write operations' suffices.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, using a few sentences to cover all operational modes. It is structured in a readable bullet-point-like manner. However, the formatting could be cleaner with explicit lists for better scannability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (multiple operations like help, schema, invoke), the description covers all aspects thoroughly. It explains each operational mode, error handling, and parameter behavior. No output schema exists, but the description implies the nature of returns (list of ops, schema, or invocation results). This is complete for the tool's purpose.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% coverage with no descriptions, but the description adds comprehensive semantics for both parameters: operation strings ('help', 'schema', '<OpName>') and params (optional object used for search filtering and invocation arguments). This fully compensates for the lack of schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool is for admin write operations (POST/PUT/PATCH/DELETE /admin/*) and admin-scope actions like running cron jobs. It distinguishes itself from siblings such as gitea_admin_read and gitea_write by specifying the scope and HTTP methods.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear usage context: it is for admin write operations and admin-scope actions. It describes how to use help and schema operations for exploration. However, it does not explicitly state when not to use it or provide direct comparisons with sibling tools, missing clear exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gitea_deleteA

Gitea delete operations (DELETE) — destructive.

operation='help' — list ops with parameter names + types. operation='help' params={'search':'X'} — same, filtered to ops whose name contains X (case-insensitive). operation='schema' — JSON Schema for one op. params={'op': 'OpName'} or params={} to list op names. operation='' params={...} — invoke. Params validated strictly: unknown keys, wrong types, missing required → ValueError with field-level detail.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo
operationYes

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, description fully carries the burden. It discloses destructive nature, strict validation with field-level errors, and meta-operations (help, schema). This provides clear behavioral expectations beyond a simple 'delete' operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense and structured with line breaks for each mode of operation. It is informative but could be more concise by grouping related info. The length is acceptable given the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and complex meta-operations, the description provides essential context. It explains help, schema, and invocation behavior, and mentions field-level errors. However, it lacks examples of specific delete operations and return value formats.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite 0% schema coverage, the description explains the 'operation' parameter in detail: values like 'help', 'schema', and '<OpName>' with specific behaviors. For 'params', it states validation rules. However, it does not enumerate all possible operation names or their required parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Gitea delete operations (DELETE) — destructive', specifying the verb and resource. It explains the operation parameter with help, schema, and invocation modes, distinguishing it from sibling tools focused on read, write, admin, etc.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance on using 'help' to list ops, 'schema' for one op's schema, and '<OpName>' to invoke. Mentions strict validation and error behavior. However, lacks advice on when to prefer this over sibling tools or specific prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gitea_executeA

Gitea action triggers — merge PRs, dispatch workflows, and other side-effecting actions beyond plain CRUD.

operation='help' — list ops with parameter names + types. operation='help' params={'search':'X'} — same, filtered to ops whose name contains X (case-insensitive). operation='schema' — JSON Schema for one op. params={'op': 'OpName'} or params={} to list op names. operation='' params={...} — invoke. Params validated strictly: unknown keys, wrong types, missing required → ValueError with field-level detail.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo
operationYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden and does well: it discloses the side-effecting nature ('side-effecting actions') and warns about strict validation ('Params validated strictly: unknown keys, wrong types, missing required → ValueError'). It also explains the introspection operations 'help' and 'schema' which let the agent discover behavior. It does not mention permissions or reversibility, but the side-effect warning is a strong disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is moderately sized but every line is functional. The intro line defines scope, then bullet-like code lines explain each operation mode. It is well-structured and front-loaded with the core purpose. It could be slightly trimmed, but it is not wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool is a generic dispatcher with potentially many operations, the description is fairly complete. It explains the invocation pattern, discovery mechanisms, and validation behavior. It doesn't list all possible ops, but the 'help' operation exists for that. It could mention return values, but the 'schema' operation likely provides that for each op. Overall, it covers the essential usage context well.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides only 'operation' and 'params' with no descriptions, and 0% coverage. The description adds rich semantics: operation selects the op, params holds arguments, and it details special operations ('help', 'schema') with usage examples. This fully compensates for the schema's vagueness.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Gitea action triggers — merge PRs, dispatch workflows, and other side-effecting actions beyond plain CRUD.' This gives a specific verb (trigger) and resource (Gitea actions), and explicitly distinguishes it from the CRUD siblings by saying 'beyond plain CRUD'. It also provides concrete examples (merge PRs, dispatch workflows).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies when to use this tool: for side-effecting actions beyond plain CRUD. It also explains discoverability via 'help' and 'schema' operations. However, it does not explicitly name sibling alternatives or state 'use this instead of gitea_write for workflow dispatch'. The boundary is clear but not explicitly exclusionary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gitea_readA

Gitea read operations — safe, GET-only.

operation='help' — list ops with parameter names + types. operation='help' params={'search':'X'} — same, filtered to ops whose name contains X (case-insensitive). operation='schema' — JSON Schema for one op. params={'op': 'OpName'} or params={} to list op names. operation='' params={...} — invoke. Params validated strictly: unknown keys, wrong types, missing required → ValueError with field-level detail.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo
operationYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses that operations are safe and GET-only, implying no side effects. Also mentions strict param validation with ValueError. Missing details on authentication or rate limits, but these are likely shared across tools.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Concise with bullet-point structure, front-loading the purpose. Each sentence provides necessary information without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers the meta-operation system thoroughly, including help and schema retrieval. Lacks details on error handling beyond validation errors and does not specify output format, but the schema mechanism addresses schema queries.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 0% description coverage, but description compensates by explaining the meaning of 'operation' and 'params', including the meta-pattern for listing ops and schemas. Adds value beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'Gitea read operations — safe, GET-only', specifying the verb (read) and resource (Gitea operations). Distinguishes from sibling tools (admin_read, write, delete, etc.) via the 'safe, GET-only' phrase.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit instructions for using operation='help', 'schema', and specific operation invocations. However, does not explicitly state when to not use this tool vs siblings, though the name and 'safe, GET-only' imply a read-only scope.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gitea_versionA

Get the Gitea MCP server version and service version.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Description only states 'get version', no mention of side effects, permissions, or idempotency. With no annotations, the burden is entirely on the description, which is lacking.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, concise and front-loaded with the key action and target. No waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a simple version retrieval tool with no parameters, though it could mention expected return format (e.g., version strings).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters, so baseline score of 4 applies. Description adds no parameter info, but none needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly describes retrieving the Gitea MCP server and service version, which is distinct from sibling tools like gitea_read or gitea_delete.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implied usage for checking version, but no explicit guidance on when to use or not use it, nor alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gitea_writeA

Gitea write operations — create or update resources (POST/PUT/PATCH).

operation='help' — list ops with parameter names + types. operation='help' params={'search':'X'} — same, filtered to ops whose name contains X (case-insensitive). operation='schema' — JSON Schema for one op. params={'op': 'OpName'} or params={} to list op names. operation='' params={...} — invoke. Params validated strictly: unknown keys, wrong types, missing required → ValueError with field-level detail.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo
operationYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description bears the transparency burden. It discloses strict validation behavior (ValueError with field-level detail), how to list operations via 'help', and how to retrieve JSON schemas. It lacks information on authentication, rate limits, or the side effects beyond the generic 'write' implication, but the included behavioral details are specific and useful.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the core purpose, followed by a clean line-based breakdown of operation modes. Each sentence serves a distinct purpose, and there is no redundant or filler content. The formatting enhances scannability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having no output schema, the description provides a complete self-service approach: users can query 'help' for operation lists and 'schema' for detailed parameter schemas. It covers invocation, validation, and error behavior, making it sufficiently complete for a complex dispatcher tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description fully compensates by explaining the 'operation' parameter (accepts 'help', 'schema', or an op name) and the 'params' parameter (optional object with default null, used for search filters, op selection, or invocation arguments). It also clarifies validation rules, adding meaning far beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Gitea write operations — create or update resources (POST/PUT/PATCH),' clearly identifying the tool's function as a dispatcher for write operations. This distinguishes it from sibling tools like gitea_read, gitea_delete, and gitea_execute, and the specific verb+resource phrasing leaves no ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description conveys that this tool is for writes, which is a clear usage context. However, it does not explicitly contrast with alternatives or state when not to use it (e.g., 'for reads use gitea_read'). The self-service help and schema mechanisms effectively guide usage for discovery, but explicit exclusions are absent.

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.

  1. 3 tool updatesv1.0.57
    • Addedgitea_admin_read
    • Addedgitea_execute
    • Addedgitea_write
  2. 3 tool updatesv1.0.44
    • Removedgitea_admin_read
    • Removedgitea_execute
    • Removedgitea_write
  3. 7 tool updatesv1.0.37
    • Addedgitea_admin_read
    • Addedgitea_admin_write
    • Addedgitea_delete
    • Addedgitea_execute
    • Addedgitea_read
    • Addedgitea_version
    • Addedgitea_write
  4. 7 tool updatesv1.0.35
    • Removedgitea_admin_read
    • Removedgitea_admin_write
    • Removedgitea_create
    • Removedgitea_delete
    • Removedgitea_read
    • Removedgitea_update
    • Removedgitea_version
  5. 7 tool updatesv1.0.0
    • First observedgitea_admin_read
    • First observedgitea_admin_write
    • First observedgitea_create
    • First observedgitea_delete
    • First observedgitea_read
    • First observedgitea_update
    • First observedgitea_version

TDQS

A3.9/5.0

Scored across 7 tools

Disambiguation3/5

The tools are divided by operation category (read, write, delete, etc.) with clear names, but there is overlap: gitea_delete and gitea_admin_write both handle DELETE operations, and gitea_execute may overlap with gitea_write for actions like merge PR. An agent may be uncertain which umbrella tool to use for a given operation.

Naming Consistency4/5

All tools share the gitea_ prefix and use snake_case, which is consistent. However, gitea_version is a noun while the others are verbs (read, write, delete, execute), a minor deviation from the otherwise verb-based pattern.

Tool Count5/5

With 7 tools, the count is well within the typical range for a server that wraps a full API. Each umbrella tool covers a broad category of operations, making the top-level count compact and manageable.

Completeness4/5

The set covers the core domains: version info, read/write/delete operations, admin read/write, and side-effecting actions. The split between gitea_write and gitea_execute is somewhat redundant for certain actions, and there is no dedicated search tool, but overall coverage is strong.

Maintenance

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    A comprehensive MCP server suite that enables AI interaction with Gitea for repository management, secure command execution, and Docker monitoring. It provides additional tools for long-term memory, filesystem access, and web searching to support full development cycles.
    -
  • A
    license
    A
    quality
    B
    maintenance
    MCP server for managing Gitea repositories via the Gitea API, enabling operations on issues, comments, labels, milestones, and repository info.
    72
    73 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    MCP server for OpenDev Gitea and Gerrit APIs, enabling repository browsing, code review, and change management for LLM agents.
    Apache 2.0