Herramientas MCP
cc_server aloja un único registro de herramientas MCP (JSON-RPC 2.0), servido en el puerto principal del servidor (9030 de forma predeterminada) en POST /mcp y GET /sse, con la versión de protocolo 2024-11-05. Todos los clientes llegan al mismo registro: el escritorio, la versión web, los clientes MCP externos y el entorno de ejecución de agentes integrado. Los servidores MCP externos se pueden puentear hacia el 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 después del arranque, a medida que se levantan 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 ninguna compuerta de descubrimiento. Las ediciones de tickets son herramientas con tipo.
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 inválido devuelve un error explícito, y un valor que no coincida con el espacio de trabajo de la entidad de destino se rechaza en lugar de ignorarse en silencio. Omítelo en las herramientas verdaderamente globales: list_workspaces y las seis herramientas del feed de noticias (list_feeds, list_articles, get_article, set_article_read, set_article_saved, refresh_feeds), que van sobre la lista de feeds 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 algo se puede llamar según el modo de la conversación. Cuando el servidor despacha a un agente, el espacio de trabajo se fuerza del 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 vienen de cc_mcp_client, no de cc_mcp, y ambas consultan el guardián del modo para informar qué 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 |
Enumera las herramientas que se pueden llamar ahora mismo en esta conversación, filtradas por su modo |
Una tercera herramienta de descubrimiento, search_tools, existe solo dentro del arnés integrado y no forma parte de este registro de MCP. Clasifica 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 |
Enumera 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 se comunican entre sí a través de espacios (duraderos y visibles en la lista de participantes). ask_agent es solicitud/respuesta con un tiempo de espera obligatorio; delegate_task está protegido del lado del servidor por un límite de profundidad, detección de ciclos, una envolvente de presupuesto y un 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 to_agent_name exacto |
ask_agent |
Hace una pregunta a otro agente y espera su respuesta, o agota el tiempo de espera |
delegate_task |
Delega una tarea a otro agente como un ticket hijo rastreado |
consult_agent |
Agrega al espacio al especialista que mejor coincide por skills y lo despacha con instrucciones enfocadas |
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 cualquier contenido de skill llegue al disco o al prompt de un agente.
| Herramienta | Descripción |
|---|---|
list_skills |
Enumera los slugs de 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 instalada de GitHub a una ref nueva, volviendo a analizarla y a fijarla |
list_skill_updates |
Enumera las skills con una versión más reciente disponible |
verify_skills |
Verifica las skills fijadas contra los hashes de su contenido en disco |
pin_skill |
Calcula el hash de una skill existente en disco y lo escribe en skills-lock.json |
Herramientas de planes, playbooks y artefactos
Sección titulada «Herramientas de planes, playbooks y artefactos»| Herramienta | Descripción |
|---|---|
submit_plan |
El contrato de salida del modo plan: emite un PlanDocument con tipo que se abre en Plan Studio |
create_playbook |
Guarda un plan como una plantilla con nombre y versión, con marcadores {{param}} tipados |
run_playbook |
Instancia un playbook con valores de parámetros, lo que produce un plan que el operador aprueba |
publish_artifact |
Publica una lista ordenada de bloques con tipo (markdown, tabla, gráfico, mermaid, código, JSON) que se renderizan de forma nativa en el cliente |
revise_artifact |
Reemplaza el contenido de un artefacto publicado |
list_artifacts |
Enumera los artefactos del espacio de trabajo |
get_artifact |
Lee un artefacto |
complete_goal |
Declara cumplido 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 |
Enumera 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 |
Enumera los repos registrados en un espacio de trabajo. Quien llama como agente recibe las rutas de los worktrees aislados con copy-on-write de su conversación, nunca los checkouts originales |
Herramientas de mensajería
Sección titulada «Herramientas de mensajería»| Herramienta | Descripción |
|---|---|
list_spaces |
Enumera 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 |
Reemplaza el documento de traspaso compartido de un espacio |
todo_write |
Reemplaza 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 revisores especialistas en el espacio de la PR, redacta el recorrido guiado y finaliza |
add_review_node |
Agrega 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 confirmar el suyo propio |
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 marcarlo de nuevo |
request_peer_review |
Pide a otro agente revisor una segunda opinión sobre un hallazgo |
dispatch_reviewers |
Despacha de forma concurrente agentes revisores que coinciden hacia un espacio de revisión |
submit_reviewer_verdict |
Publica un veredicto ship/hold/block por revisor, con confianza y una explicación |
finalize_review |
Calcula el consenso por nodo y el veredicto por 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 la revisión finalizada en GitHub 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 |
Almacena un hecho breve en markdown en un dominio |
supersede_fact |
Marca un hecho como reemplazado por otro |
propose_policy |
Almacena una regla normativa en un dominio (requiere permiso de escritura sobre él) |
supersede_policy |
Retira una política: la marca como inactiva pero la conserva para auditoría |
list_policies |
Enumera las políticas activas, con filtro opcional por dominio |
list_memory_domains |
Enumera los dominios de memoria del espacio de trabajo con 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 memoria de trabajo del agente que llama |
update_my_notes |
Actualiza el bloc de memoria de trabajo del agente que llama |
remember |
Agrega una nota a la memoria de trabajo activa del agente para esta sesión (acotada por TTL y por recuento) |
consolidate_memory |
Ejecuta una pasada de consolidación («sueño»): expulsa los elementos activos que expiraron y traslada los duraderos a hechos de largo plazo |
harmonize_memory |
Ejecuta la armonización de creencias entre agentes (SHMR) y marca las contradicciones |
list_memory_conflicts |
Enumera 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 organizacional (a nivel de empresa, equipo, agente o tarea) |
list_goals |
Enumera los objetivos con su nivel, estado y progreso agregado |
update_goal_progress |
Establece el progreso de un objetivo |
create_approval |
Abre una aprobación del consejo para una acción gobernada (salida de plan, fusión, lanzamiento, contratación, personalizada) |
list_approvals |
Enumera las aprobaciones, con filtro opcional por estado |
decide_approval |
Registra una decisión: aprobar, rechazar, solicitar revisión o reenviar |
comment_approval |
Comenta en una aprobación del consejo |
exit_plan_mode |
Abre (y, una vez aprobada, consume) una aprobación plan_exit, lo que saca a la conversación del modo plan |
agent_heartbeat |
Informa la vitalidad (activo, inactivo, atascado); quedarse en silencio cambia la salud de ejecución a perdido recientemente y luego a sin conexión |
list_runtime_health |
Enumera la salud de ejecución de cada agente |
list_agent_presence |
Enumera 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, anidado por reports_to |
create_work_product |
Crea un entregable duradero adjunto a un ticket |
save_work_product_revision |
Guarda una revisión nueva; pasa base_revision_id para que se rechace ante una edición concurrente |
list_work_products |
Enumera los productos de trabajo, con filtro opcional a un solo 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 |
Enumera los perfiles de ejecución del espacio de trabajo |
Herramientas de grafo de código
Sección titulada «Herramientas de grafo de código»Solo se registran 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íbrido BM25 + semántico) |
code_symbol |
Busca símbolos por su nombre exacto; devuelve file:line y la firma |
code_callers |
Enumera los símbolos que llaman a un símbolo o dependen de él (aristas entrantes) |
code_callees |
Enumera 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 |
Enumera los tickets, con filtro opcional por estado o responsable |
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 equipo (o a ambos) |
reassign_ticket |
Reasigna un ticket a un agente distinto |
add_ticket_collaborator |
Invita a un agente a colaborar en un ticket (se agrega a su espacio) |
comment_on_ticket |
Comenta en un ticket |
close_ticket |
Cierra un ticket (lo marca como terminado) con salida opcional |
fail_ticket |
Marca un ticket como fallido con un mensaje de error |
delegate_ticket |
Delega un ticket a un agente y crea un ticket hijo rastreado |
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 |
Agrega 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 |
Enumera el ticket padre, los subtickets y los enlaces de dependencia de un ticket |
Herramientas de equipo y pipelines
Sección titulada «Herramientas de equipo y pipelines»| Herramienta | Descripción |
|---|---|
record_team_activity |
Registra una entrada de actividad de un líder de equipo contra un ticket |
preview_trigger |
Simula qué ejecuciones de pipeline iniciaría un evento hipotético, sin confirmar nada |
submit_output |
Envía la carga útil de salida estructurada para la ejecución de pipeline actual de quien llama; 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 previa; valida y devuelve las infracciones que encuentre |
Herramientas del feed de noticias
Sección titulada «Herramientas del feed de noticias»| Herramienta | Descripción |
|---|---|
list_feeds |
Enumera los feeds RSS/Atom registrados |
list_articles |
Enumera los artículos, con filtro opcional por feed, 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 mismo todos los feeds habilitados |
Herramientas de recinto (rig)
Sección titulada «Herramientas de recinto (rig)»Controla 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 después del arranque, sin condiciones: si una máquina puede arrancar de
verdad es una pregunta de sondeo que las herramientas responden 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 que no son de confianza. 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 |
Controla un escritorio Linux en una VM con recinto: mover, hacer clic, arrastrar, desplazar, escribir, cambiar tamaño, portapapeles, captura de pantalla |
browser_use |
Controla un Chromium, Firefox o WebKit sin interfaz (engine): navegar, hacer clic, rellenar, extraer (a11y/DOM/console), portapapeles, captura de pantalla |
mobile_use |
Controla Android por ADB: inspección/entrada, capturas de pantalla, instalar/iniciar/detener/restablecer/desinstalar apps, enlaces profundos y comandos de dispositivo con forma de argv |
ios_use |
Controla el simulador de iOS mediante 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 |
Enumera 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 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, las transcripciones, los elementos de acción ni las decisiones. El resumen que produce elementos de acción y decisiones se ejecuta como el pipeline meeting_summary integrado, no como una herramienta que un agente pueda llamar.
Condicionamiento de herramientas por modo
Sección titulada «Condicionamiento de herramientas por modo»El condicionamiento se aplica dos veces a partir de una sola tabla (ModeToolPolicy): una en el despachador de MCP para el 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 y sin los verbos de tickets create / assign / delegate, pero sí se permiten memoria, artefactos, tareas pendientes, submit_plan, exit_plan_mode y los verbos de finalización de tickets sobre el ticket despachado |
review |
Una lista de permitidos seleccionada: participación en revisiones, comunicación, recuperadores de contexto de solo lectura y el conjunto completo de verbos de tickets, incluidos create_ticket y assign_ticket |
orchestrate |
Una lista de permitidos seleccionada: herramientas de investigación y de 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 después de la aprobación, nunca a mitad de la ejecución |
Se permiten en todos los modos, sin importar 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 mismo vale a la inversa: la capacidad de preguntar al operador es una herramienta del arnés (ask_user), así que no aparece en absoluto en este catálogo de MCP.
Herramientas con compuerta de aprobación
Sección titulada «Herramientas con compuerta de aprobación»Una herramienta puede declarar requiresApproval. El despachador entonces crea un ApprovalPayload y lo expone 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 unificadas de acciones condicionan 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 lugar devuelve “unknown tool”:
| Capacidad | Dónde vive en su lugar |
|---|---|
| Contratar, despedir o editar un agente | La interfaz de agentes. No existe ninguna herramienta hire_agent / fire_agent / update_agent |
| Crear un espacio de trabajo | workspace.upsert por RPC, que siembra y estampa la propiedad |
| Proyectos (crear / listar / actualizar / archivar) | La interfaz de tickets. Los proyectos son una superficie del operador; consulta Proyectos |
| Hacer al operador una pregunta bloqueante | La herramienta ask_user del arnés, no de MCP. Muestra un formulario en la conversación y se bloquea hasta recibir la respuesta |
| Diagnóstico por agente | Nada. No existe ningún doctor; consulta Diagnosticar un agente |
| Calendario y reuniones | RPC solo para clientes humanos (ver arriba) |