Herramientas MCP
cc_server aloja un único registro de herramientas MCP (JSON-RPC 2.0), servido en el puerto principal del servidor (por defecto, 9030) en POST /mcp y GET /sse, con la versión de protocolo 2024-11-05. Todos los clientes llegan al mismo registro: la aplicación de escritorio, la versión web, los clientes MCP externos y el tiempo de ejecución de agentes integrado. Los servidores MCP externos pueden puentearse al mismo registro como una capa dinámica.
Tamaño del registro
Sección titulada «Tamaño del registro»| Medida | Recuento |
|---|---|
Herramientas registradas por cc_server |
110 |
De packages/cc_mcp |
108 |
De packages/cc_mcp_client (descubrimiento de herramientas) |
2 |
Registradas en el registro base (server_mcp_registry.dart) |
63 |
Registradas tras el arranque, a medida que se inician sus servicios (cc_server_runtime.dart) |
47 |
| De las 63 del registro base, condicionadas a un repositorio de grafo de código | 5 |
Las cinco herramientas del grafo de código solo se registran cuando el host pasa un repositorio de grafo de código a buildServerMcpRegistry. cc_server siempre pasa uno, así que las 110 están activas en el binario distribuido.
El registro completo se anuncia en tools/list sin ningún filtrado de descubrimiento. Las ediciones de tickets son herramientas tipadas.
Parámetros comunes
Sección titulada «Parámetros comunes»workspace_id
Sección titulada «workspace_id»Obligatorio en toda herramienta que toque datos con ámbito de espacio de trabajo. Un workspace_id ausente o no válido devuelve un error explícito, y un valor que no coincide con el espacio de trabajo de la entidad de destino se rechaza en lugar de ignorarse en silencio. Omítelo en las herramientas realmente globales: list_workspaces y las seis herramientas de noticias (list_feeds, list_articles, get_article, set_article_read, set_article_saved, refresh_feeds), que se sirven de la lista de fuentes por usuario del propietario del servidor. Las herramientas de descubrimiento (search_tool_bm25, list_my_tools) lo aceptan de forma opcional para poder clasificar si se pueden llamar según el modo de conversación. Cuando el servidor despacha a un agente, el espacio de trabajo se fuerza en el lado del servidor, así que el agente no puede alcanzar otro espacio de trabajo pasando un id ajeno.
Descubrimiento de herramientas
Sección titulada «Descubrimiento de herramientas»Ambas proceden de cc_mcp_client, no de cc_mcp, y las dos consultan el filtro de modo, de forma que informan de lo que se puede llamar en el modo de conversación actual.
| Herramienta | Descripción |
|---|---|
search_tool_bm25 |
Busca en el catálogo de herramientas por palabra clave; devuelve las herramientas coincidentes, sus esquemas de argumentos y si cada una se puede llamar en este momento |
list_my_tools |
Lista las herramientas que se pueden llamar ahora mismo en esta conversación, filtradas por su modo |
Hay una tercera herramienta de descubrimiento, search_tools, que solo existe dentro del arnés integrado y no forma parte de este registro MCP. Ordena la propia superficie de herramientas de la ejecución y, a diferencia de search_tool_bm25, carga los esquemas de lo que encuentra para que el agente pueda llamar a una coincidencia en su siguiente turno. Los agentes que usan el arnés deberían preferirla; los clientes MCP tienen search_tool_bm25.
Herramientas de agente
Sección titulada «Herramientas de agente»| Herramienta | Descripción |
|---|---|
list_agents |
Lista los agentes registrados en un espacio de trabajo |
Mensajería y delegación entre agentes pares
Sección titulada «Mensajería y delegación entre agentes pares»Los agentes hablan entre sí a través de espacios (duraderos y visibles en la lista de agentes). ask_agent es solicitud/respuesta con un tiempo de espera obligatorio; delegate_task está protegida en el lado del servidor por un límite de profundidad, detección de ciclos, envolvente de presupuesto y techo de autonomía.
| Herramienta | Descripción |
|---|---|
send_to_agent |
Envía un mensaje unidireccional a otro agente, dirigido por to_agent_id o por un to_agent_name exacto |
ask_agent |
Pregunta algo a otro agente y espera su respuesta, o agota el tiempo de espera |
delegate_task |
Delega una tarea en otro agente como ticket hijo con seguimiento |
consult_agent |
Añade al espacio el especialista que mejor encaja por sus skills y lo despacha con un encargo concreto |
todo_read |
Lee la lista de tareas persistida de esta conversación |
Herramientas de skills
Sección titulada «Herramientas de skills»Toda instalación y actualización pasa por una compuerta de análisis fail-closed antes de que ningún contenido de skill llegue al disco o a un prompt de agente.
| Herramienta | Descripción |
|---|---|
list_skills |
Lista los slugs de las skills disponibles en un espacio de trabajo |
create_skill |
Crea una skill nueva a partir de contenido markdown |
install_skill |
Instala el directorio completo de una skill desde un repositorio de GitHub en una ref fijada |
update_skill |
Actualiza una skill de GitHub instalada a una ref nueva, volviendo a analizarla y a fijarla |
list_skill_updates |
Lista las skills con una versión más reciente disponible |
verify_skills |
Verifica las skills bloqueadas contra sus hashes de contenido en disco |
pin_skill |
Calcula el hash de una skill existente en disco y lo escribe en skills-lock.json |
Herramientas de plan, playbook y artefactos
Sección titulada «Herramientas de plan, playbook y artefactos»| Herramienta | Descripción |
|---|---|
submit_plan |
El contrato de salida del modo plan: emite un PlanDocument tipado que se abre en Plan Studio |
create_playbook |
Guarda un plan como plantilla con nombre y versionada, con marcadores de posición {{param}} tipados |
run_playbook |
Instancia un playbook con valores de parámetros y produce un plan que el operador aprueba |
publish_artifact |
Publica una lista ordenada de bloques tipados (markdown, tabla, gráfico, mermaid, código, JSON) renderizados de forma nativa en el cliente |
revise_artifact |
Sustituye el contenido de un artefacto publicado |
list_artifacts |
Lista los artefactos del espacio de trabajo |
get_artifact |
Lee un artefacto |
complete_goal |
Declara alcanzado el objetivo duradero activo de la conversación (iniciado con /goal o /loop) |
Herramientas de espacio de trabajo
Sección titulada «Herramientas de espacio de trabajo»| Herramienta | Descripción |
|---|---|
list_workspaces |
Lista todos los espacios de trabajo con sus ids y nombres (global; sin workspace_id) |
Herramientas de repos
Sección titulada «Herramientas de repos»| Herramienta | Descripción |
|---|---|
list_repos |
Lista los repos registrados en un espacio de trabajo. Los agentes que la llaman reciben las rutas del worktree aislado de copia en escritura de su conversación, nunca los checkouts originales |
Herramientas de mensajería
Sección titulada «Herramientas de mensajería»| Herramienta | Descripción |
|---|---|
list_spaces |
Lista los espacios de mensajería de un espacio de trabajo |
get_messages |
Obtiene los mensajes de un espacio |
send_message |
Envía un mensaje a un espacio como un agente remitente con nombre |
get_space_notes |
Lee el documento de traspaso compartido de un espacio |
update_space_notes |
Sustituye el documento de traspaso compartido de un espacio |
todo_write |
Sustituye la lista de tareas de esta conversación en una sola llamada (pasa la lista completa) |
Herramientas de revisión
Sección titulada «Herramientas de revisión»| Herramienta | Descripción |
|---|---|
start_ai_review |
Inicia la revisión con IA de una PR: calcula las áreas de revisión, reparte los agentes revisores especialistas por el espacio de la PR, redacta el recorrido y la finaliza |
add_review_node |
Añade un hallazgo de revisión estructurado (archivo, línea, prioridad P0–P3) a un espacio de revisión |
confirm_review_node |
Confirma el hallazgo de un par; el autor no puede confirmarlo por sí mismo |
resolve_review_node |
Marca un hallazgo como corregido después de hacer realmente el cambio; publica un rastro en el espacio de revisión |
dismiss_review_node |
Descarta un hallazgo que no aplica; registra un hecho de supresión para que los revisores dejen de volver a marcarlo |
request_peer_review |
Pide a otro agente revisor una segunda opinión sobre un hallazgo |
dispatch_reviewers |
Despacha agentes revisores coincidentes a un espacio de revisión, de forma concurrente |
submit_reviewer_verdict |
Publica un veredicto ship/hold/block por revisor, con su confianza y una explicación |
finalize_review |
Calcula el consenso por nodo y el veredicto de la PR, y cierra la revisión |
set_cohort_summary |
Establece el resumen en lenguaje llano de una cohorte de revisión |
add_review_diagram |
Adjunta a una cohorte un diagrama estructurado y verificado por el grafo (sequence, entityRelation, stateMachine) |
publish_review_to_github |
Publica en GitHub la revisión finalizada como comentarios en línea más un cuerpo de resumen |
Herramientas de memoria
Sección titulada «Herramientas de memoria»| Herramienta | Descripción |
|---|---|
search_memory |
Busca hechos y políticas (por palabra clave, semántica o híbrida; la híbrida es la predeterminada) |
propose_fact |
Guarda un hecho breve en markdown en un dominio |
supersede_fact |
Marca un hecho como sustituido por otro |
propose_policy |
Guarda una regla normativa en un dominio (requiere permiso de escritura sobre él) |
supersede_policy |
Retira una política: la marca como inactiva y la conserva para auditoría |
list_policies |
Lista las políticas activas, con filtro opcional por dominio |
list_memory_domains |
Lista los dominios de memoria del espacio de trabajo con sus recuentos de hechos y políticas |
record_observation |
Registra una observación sin procesar en la memoria de trabajo del agente |
get_my_notes |
Lee el bloc de notas de la memoria de trabajo del agente que la llama |
update_my_notes |
Actualiza el bloc de notas de la memoria de trabajo del agente que la llama |
remember |
Añade una nota a la memoria de trabajo caliente del agente para esta sesión (con límites de TTL y de número) |
consolidate_memory |
Ejecuta una pasada de consolidación («sueño»): desaloja los elementos calientes caducados y convierte los duraderos en hechos a largo plazo |
harmonize_memory |
Ejecuta la armonización de creencias entre agentes (SHMR) y señala las contradicciones |
list_memory_conflicts |
Lista las contradicciones detectadas y cómo se resolvió cada una |
Herramientas de gobernanza
Sección titulada «Herramientas de gobernanza»| Herramienta | Descripción |
|---|---|
create_goal |
Crea un objetivo organizativo (de nivel de empresa, equipo, agente o tarea) |
list_goals |
Lista los objetivos con su nivel, estado y progreso agregado |
update_goal_progress |
Establece el progreso de un objetivo |
create_approval |
Abre una aprobación de la junta para una acción gobernada (salir del plan, fusionar, publicar, contratar, personalizada) |
list_approvals |
Lista las aprobaciones, con filtro opcional por estado |
decide_approval |
Registra una decisión: aprobar, rechazar, pedir una revisión o volver a enviar |
comment_approval |
Comenta en una aprobación de la junta |
exit_plan_mode |
Abre una aprobación plan_exit (y, una vez aprobada, la consume), sacando la conversación del modo plan |
agent_heartbeat |
Informa de la vitalidad (activo, inactivo, atascado); quedarse en silencio cambia la salud de ejecución a perdido recientemente y luego a desconectado |
list_runtime_health |
Lista la salud de ejecución de cada agente |
list_agent_presence |
Lista la presencia de cada agente (salud, ciclo de vida, recuentos en ejecución y en cola, capacidad) |
get_org_chart |
Lee el árbol de reporte, con el CEO en la raíz y anidado por reports_to |
create_work_product |
Crea un entregable duradero vinculado a un ticket |
save_work_product_revision |
Guarda una revisión nueva; pasa base_revision_id para que se rechace si hay una edición concurrente |
list_work_products |
Lista los productos de trabajo, con filtro opcional por un ticket |
get_work_product |
Lee un producto de trabajo con su historial de revisiones |
create_runtime_profile |
Define un perfil de ejecución reutilizable (familia de protocolo, comando de CLI, argumentos de lanzamiento fijos) |
list_runtime_profiles |
Lista los perfiles de ejecución del espacio de trabajo |
Herramientas de grafo de código
Sección titulada «Herramientas de grafo de código»Se registran solo cuando el host proporciona un repositorio de grafo de código. El índice cubre el conjunto de gramáticas distribuidas (Dart, JS/TS, PHP, Python, Rust, Zig, C/C++, Go, Java, Ruby, C#, Swift, Kotlin, R, Assembly, MATLAB, Ada); los símbolos de cualquier otro lenguaje no están presentes.
| Herramienta | Descripción |
|---|---|
search_code |
Busca símbolos indexados por nombre, firma y comentario de documentación (híbrida BM25 + semántica) |
code_symbol |
Busca símbolos por nombre exacto; devuelve file:line y la firma |
code_callers |
Lista los símbolos que llaman a un símbolo o dependen de él (aristas entrantes) |
code_callees |
Lista los símbolos a los que llama un símbolo o de los que depende (aristas salientes) |
code_impact |
Calcula el radio de impacto transitivo de un símbolo, hasta una profundidad |
Herramientas de tickets
Sección titulada «Herramientas de tickets»| Herramienta | Descripción |
|---|---|
create_ticket |
Crea un ticket en el proveedor configurado |
get_ticket |
Obtiene un ticket por su id |
list_tickets |
Lista tickets, con filtro opcional por estado o por persona asignada |
update_ticket |
Actualiza el estado, el título, la descripción, la prioridad o las etiquetas (el estado acepta alias como in_progress / completed) |
assign_ticket |
Asigna un ticket a un agente o a un equipo |
reassign_ticket |
Reasigna un ticket a otro agente |
add_ticket_collaborator |
Invita a un agente a colaborar en un ticket (se añade a su espacio) |
comment_on_ticket |
Comenta en un ticket |
close_ticket |
Cierra un ticket (lo marca como hecho) con una salida opcional |
fail_ticket |
Marca un ticket como fallido con un mensaje de error |
delegate_ticket |
Delega un ticket en un agente y crea un ticket con seguimiento |
ticket_pr_link |
Vincula o desvincula un ticket y una pull request por el id de nodo de la PR (action: link | unlink) |
ticket_relation |
Añade o quita una relación entre dos tickets — blocked_by, blocking, related_to, duplicate_of, duplicated_by, sub_issue_of, parent_of (action: add | remove) |
list_ticket_relations |
Lista el ticket padre, los subtickets y los vínculos de dependencia de un ticket |
Herramientas de equipo y pipeline
Sección titulada «Herramientas de equipo y pipeline»| Herramienta | Descripción |
|---|---|
record_team_activity |
Registra una entrada de actividad de un líder de equipo contra un ticket |
preview_trigger |
Simula (dry-run) qué ejecuciones de pipeline iniciaría un evento hipotético, sin confirmar nada |
submit_output |
Envía la carga de salida estructurada de la ejecución de pipeline actual del solicitante; se valida contra el esquema de salida declarado de la ejecución |
Herramientas de orquestación
Sección titulada «Herramientas de orquestación»| Herramienta | Descripción |
|---|---|
propose_orchestration |
Emite un plan de orquestación multiagente estructurado para una única aprobación por adelantado; valida y devuelve cualquier incumplimiento |
Herramientas de noticias
Sección titulada «Herramientas de noticias»| Herramienta | Descripción |
|---|---|
list_feeds |
Lista las fuentes RSS/Atom registradas |
list_articles |
Lista artículos, con filtro opcional por fuente, no leídos o guardados |
get_article |
Obtiene un artículo |
set_article_read |
Marca un artículo como leído o no leído |
set_article_saved |
Guarda o quita de guardados un artículo |
refresh_feeds |
Vuelve a obtener ahora todas las fuentes habilitadas |
Herramientas de recinto (rig)
Sección titulada «Herramientas de recinto (rig)»Dirigen máquinas desechables —un navegador o un escritorio Linux con recinto, un
emulador de Android o un simulador de iOS— desde dentro de una ejecución. Se
registran tras el arranque, de forma incondicional: si una máquina puede
arrancar de verdad es una pregunta que las herramientas responden con una sonda
en cada llamada. Las llamadas repetidas en una misma conversación reutilizan una
sola máquina; las capturas de pantalla se devuelven como contenido de imagen con
un presupuesto de una imagen por resultado, y el contenido de página o de
interfaz extraído se delimita como datos no fiables. Las cuatro herramientas de
uso más rig_close declaran la clase de acción
enclosureControl (las herramientas de uso también declaran networkEgress y
processSpawn; mobile_use e ios_use también declaran packageInstall), así
que los modos de solo lectura las deniegan. rig_list no declara ninguna: solo
lee el estado del espacio de trabajo. El vocabulario completo de verbos por
superficie está en la referencia de rigs.
| Herramienta | Descripción |
|---|---|
computer_use |
Dirige un escritorio Linux en una VM con recinto: mover, hacer clic, arrastrar, desplazar, escribir, redimensionar, portapapeles, captura de pantalla |
browser_use |
Dirige un Chromium, Firefox o WebKit headless (engine): navegar, hacer clic, rellenar, extraer (a11y/DOM/consola), portapapeles, captura de pantalla |
mobile_use |
Dirige Android a través de ADB: inspección/entrada, capturas de pantalla, instalar/iniciar/detener/reiniciar/desinstalar apps, enlaces profundos y comandos de dispositivo con forma de argv |
ios_use |
Dirige el simulador de iOS a través de WebDriverAgent/CoreSimulator: inspección/entrada, capturas de pantalla, instalar/iniciar/detener/desinstalar apps, enlaces profundos y procesos del simulador con forma de argv |
rig_list |
Lista los rigs de un espacio de trabajo con su superficie, estado, tamaño de pantalla y controlador |
rig_close |
Destruye un rig y descarta el estado de la máquina que posee |
No expuesto por MCP
Sección titulada «No expuesto por MCP»El calendario y las reuniones no tienen herramientas MCP. Los agentes no pueden leer tu calendario, tus reuniones, tus transcripciones, tus tareas ni tus decisiones. El resumen que produce las tareas y las decisiones se ejecuta como el pipeline meeting_summary integrado, no como una herramienta que un agente pueda llamar.
Control de herramientas por modo
Sección titulada «Control de herramientas por modo»El control se aplica dos veces a partir de una sola tabla (ModeToolPolicy): una en el despachador MCP del adaptador de Claude Code y otra en el registro del arnés integrado. Una llamada bloqueada devuelve el motivo.
| Modo | Superficie de herramientas |
|---|---|
chat |
Todas las herramientas registradas; sin lista de permitidos |
plan |
Una lista de permitidos seleccionada. Sin escrituras en el worktree ni verbos de ticket create / assign / delegate, pero se permiten la memoria, los artefactos, las tareas, submit_plan, exit_plan_mode y los verbos de finalización de ticket sobre el ticket despachado |
review |
Una lista de permitidos seleccionada: participación en la revisión, comunicación, captadores de contexto de solo lectura y el conjunto completo de verbos de ticket, incluidos create_ticket y assign_ticket |
orchestrate |
Una lista de permitidos seleccionada: herramientas de investigación y lectura más propose_orchestration, create_playbook y run_playbook. La contratación, la descomposición y la finalización de tickets ocurren de forma determinista tras la aprobación, nunca a mitad de ejecución |
Permitido en todos los modos, independientemente de la lista de permitidos:
| Conjunto | Herramientas |
|---|---|
| Memoria y artefactos | search_memory, propose_fact, propose_policy, supersede_fact, supersede_policy, record_observation, update_my_notes, get_my_notes, list_memory_domains, list_policies, publish_artifact, revise_artifact, list_artifacts, get_artifact |
| Grafo de código | search_code, code_symbol, code_callers, code_callees, code_impact |
| Mecánica de ejecución | search_tool_bm25, list_my_tools, todo_write, todo_read |
Estar en una lista de permitidos no hace que una herramienta se pueda llamar, y lo contrario también se cumple: la capacidad de preguntar al operador es una herramienta del arnés (ask_user), así que no aparece en este catálogo MCP en absoluto.
Herramientas sujetas a aprobación
Sección titulada «Herramientas sujetas a aprobación»Una herramienta puede declarar requiresApproval. El despachador construye entonces un ApprovalPayload y lo muestra a través del ConfirmationPort antes de que se ejecute la herramienta; cc_server conecta ese puerto, así que la compuerta está activa.
Herramientas registradas que lo declaran: create_ticket, update_ticket, assign_ticket, reassign_ticket, close_ticket, ticket_relation, create_goal, update_goal_progress, create_approval, decide_approval, comment_approval, create_work_product, save_work_product_revision, create_runtime_profile, install_skill, update_skill.
De forma independiente, las barandillas de acciones unificadas controlan cualquier herramienta que declare un conjunto no vacío de ActionClass. Una decisión prompt sin ningún aprobador conectado se deniega. Consulta Barandillas.
Capacidades sin ninguna herramienta detrás
Sección titulada «Capacidades sin ninguna herramienta detrás»No todas las capacidades del producto son alcanzables por un agente. Estas no tienen ninguna herramienta, así que un nombre que hayas visto referenciado en otro sitio devuelve “unknown tool”:
| Capacidad | Dónde vive en su lugar |
|---|---|
| Contratar, despedir o editar un agente | La interfaz de agentes. No hay ninguna herramienta hire_agent / fire_agent / update_agent |
| Crear un espacio de trabajo | workspace.upsert por RPC, que siembra y marca la propiedad |
| Proyectos (crear / listar / actualizar / asignar) | La interfaz de tickets. Los proyectos son una superficie del operador; consulta Proyectos |
| Preguntar al operador una pregunta bloqueante | La herramienta ask_user del arnés, no MCP. Renderiza un formulario en la conversación y se bloquea hasta la respuesta |
| Diagnóstico por agente | Nada. No hay ningún doctor; consulta Diagnóstico de agentes |
| Calendario y reuniones | RPC solo para clientes humanos (véase arriba) |