Skip to main content
Glama

otama

Un servidor MCP que da a los asistentes de IA — Cursor, Claude Desktop o tu propio agente de voz — acceso a tus repositorios git locales.

Las operaciones de lectura se ejecutan libremente. Cualquier operación de escritura devuelve antes un token de confirmación y un resumen en lenguaje claro, y solo actúa cuando se llama una segunda vez con ese token. El asistente pregunta antes de hacer commit.

You:  commit my changes in api-service with message "fix auth timeout"
LLM:  Commit 3 changed files in api-service with message 'fix auth timeout'. Confirm?
You:  yes
LLM:  Committed — a4f21c9 fix auth timeout

Por qué

La mayoría de los servidores MCP de sistema de archivos dan al modelo acceso de lectura y escritura sin restricciones a un árbol de directorios. Eso está bien cuando vigilas cada llamada a herramienta. No está bien cuando el modelo está guiando a un asistente de voz, trabajando sin supervisión o acaba de oírte mal.

otama asume que el modelo se equivocará de vez en cuando y hace que las consecuencias sean pequeñas:

  • Un sandbox de rutas. Cada ruta se resuelve antes de comprobarse contra tus raíces configuradas. .., los enlaces simbólicos y las rutas absolutas no pueden escapar.

  • Confirmación en dos fases. Las herramientas de escritura y ejecución llamadas sin un token no hacen nada más que describir lo que harían. Los tokens son de un solo uso, caducan a los dos minutos y están vinculados a la herramienta que los emitió.

  • Una lista de comandos permitidos. run_command rechaza por completo cualquier cosa fuera de la lista en lugar de ofrecerla para confirmación. Un malentendido nunca debe estar a un «sí» de rm -rf.

Related MCP server: Git MCP Server

Instalación

Requiere Python 3.11+ y git en PATH.

git clone https://github.com/Ronith2906/otama.git
cd otama
python -m venv .venv
.venv/bin/pip install -r requirements.txt          # Windows: .venv\Scripts\pip.exe
cp otama.example.toml otama.toml

Edita otama.toml y define project_roots con la carpeta o carpetas que contienen tus repositorios. Usa barras normales en Windows.

[projects]
project_roots = ["C:/Users/you/code"]

Verifica:

.venv/bin/python -c "import asyncio; from projects_server import otama; print([t.name for t in asyncio.run(otama.list_tools())])"

Diez nombres de herramienta significa que está en ejecución.

Conectarlo

Cursor — ~/.cursor/mcp.json. Claude Desktop — claude_desktop_config.json (Ajustes → Desarrollador → Configurar la configuración). El mismo formato en ambos casos:

{
  "mcpServers": {
    "otama-projects": {
      "command": "/absolute/path/to/otama/.venv/bin/python",
      "args": ["/absolute/path/to/otama/projects_server.py"]
    }
  }
}

En Windows usa \\ en la primera línea JSON — C:\\Users\\you\\otama\\.venv\\Scripts\\python.exe.

Reinicia la aplicación por completo. Una recarga no basta; los servidores MCP se cargan al arrancar.

Herramientas

Lectura — se ejecutan en el momento

Tool

Devuelve

list_projects

Todo repositorio o carpeta bajo tus raíces, con un flag is_git_repo

project_tree

Árbol de dos niveles, omitiendo node_modules, .venv, dist y otras

read_file

Un archivo de texto, con límite de tamaño

search_code

Regex en todo un proyecto, con nombres de archivo y números de línea

git_status

Rama, archivos sin commitear, últimos cinco commits

git_diff

Diff del árbol de trabajo, truncado

daily_brief

Lo que cambió en cada repositorio en los últimos N días

Escritura y ejecución — requieren confirmación

Herramienta

Hace

git_commit

Hacer stage de todo y crear un commit

write_file

Crear o sobrescribir un archivo

run_command

Ejecutar un comando de desarrollo permitido

Configuración

[projects]
project_roots            = ["C:/Users/you/code"]
max_file_bytes           = 200000   # refuse to read anything larger
command_timeout_seconds  = 120
confirmation_ttl_seconds = 120      # how long a token stays valid

# run_command refuses anything not on this list. This is not something a
# confirmation can override — add what you actually use.
allowed_commands = ["git","npm","npx","pnpm","yarn","node",
                    "python","py","pip","pytest","ruff","uv",
                    "dotnet","cargo","go"]

Notas para colaboradores

El patrón de dos fases se encuentra en stage(), redeem() y _expire(). Si añades una herramienta con efectos secundarios, espera con ella.

Una sutileza llamada a tener en cuenta: redeem() no consume el token cuando el tipo de herramienta no coincide. Un modelo que llama por error a la herramienta equivocada no debe quemar la aprobación del usuario ni obligarle a confirmar todo de nuevo. Este fue un bug real, detectado en las pruebas.

Los nuevos servidores de capacidades deberían seguir la misma forma — un archivo, un dominio, herramientas de lectura gratuitas, herramientas de escritura restringidas, rechazar en lugar de confirmar cuando la acción esté fuera del entorno permitido.

Estado

En sus primeras etapas. El servidor de proyectos está probado y en uso diario; el plan incluye más servidores de capacidades (media, correo, navegador) como parte de un proyecto mayor de asistente de voz. Se aceptan issues y pull requests.

Licencia

MIT

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    A lightweight MCP server that enables AI assistants to manage local Git repositories by executing commands like status, add, and commit. It streamlines development workflows by providing repository context and diffs directly to the assistant.
    Apache 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that provides tools for interacting with Git repositories, enabling AI assistants to manage repositories, branches, commits, and files through a standardized interface.
    1,633 npm
    1
    Apache 2.0
  • F
    license
    Not graded
    quality
    D
    maintenance
    A local MCP server that turns AI clients into power users of local git repositories, enabling clone, browse, search, and inspect code without burning API tokens.
    -
  • A
    license
    B
    quality
    D
    maintenance
    A lightweight MCP server that acts as a secure proxy for AI assistants to run local Git operations and GitHub API macros simultaneously.
    1
    ISC