Ben f8eda211e6
All checks were successful
Build and Push Gitea MCP Docker Image / build (push) Successful in 17s
Fix gitea_api_call to accept both string and dict for params/body
The gitea_api_call tool was failing when MCP clients passed JSON objects
for the body or params parameters. The issue was that the tool signature
only accepted string types, but MCP frameworks parse JSON strings into
dicts before passing them to the tool.

This fix updates the function signature to accept Union[str, dict] for
both params and body parameters, and handles both cases appropriately.

Fixes #1
2025-12-26 20:02:26 +00:00
2025-12-22 04:46:35 +00:00
2025-12-22 04:46:35 +00:00
2025-12-22 04:46:35 +00:00
2025-12-22 04:46:35 +00:00

Gitea MCP Server

A lightweight Model Context Protocol (MCP) server for Gitea, following the Hybrid MCP Light pattern.

Features

  • 5 Curated Tools for common operations
  • API Pass-through for complete API coverage
  • Embedded API Reference for agent self-service
  • Health Check Endpoint for Docker/Kubernetes

Tools

Tool Description
get_my_user_info Get authenticated user info
search_repos Search repositories by keyword
list_my_repos List user's accessible repositories
get_repo Get repository details
list_repo_issues List issues for a repository
list_repo_commits List commits for a repository
gitea_api_call Raw API pass-through for any endpoint

Resources

Resource URI Description
gitea://api-reference Quick reference for common API endpoints

Setup

Environment Variables

GITEA_URL=https://gitea.example.com
GITEA_TOKEN=your_access_token

Local Development

# Install dependencies
uv pip install -e .

# Run server
python server.py

Docker

# Build and run
docker compose up -d

# Check health
curl http://localhost:8000/health

MCP Client Configuration

Gemini CLI (~/.gemini/settings.json)

{
  "mcpServers": {
    "gitea": {
      "url": "http://localhost:8000/mcp"
    }
  }
}

API Pass-through Examples

# Create a release
gitea_api_call(
    endpoint="/repos/myorg/myrepo/releases",
    method="POST",
    body='{"tag_name": "v1.0.0", "name": "Release 1.0"}'
)

# Get file contents
gitea_api_call(
    endpoint="/repos/myorg/myrepo/contents/README.md",
    params='{"ref": "main"}'
)

License

MIT

Description
MCP server for Gitea API - Hybrid MCP Light pattern
Readme 145 KiB
Languages
Python 97.1%
Dockerfile 2.9%