Permisos de MCP
Los tres scopes de MCP - read, write, delete - qué cubre cada uno para concesiones OAuth y claves de API, cómo se heredan las claves creadas antes de que existieran los scopes, y cómo conceder o cambiar los scopes.
Tres scopes
Las concesiones OAuth y las claves de API fjk_ usan los mismos tres scopes. Los eliges en el consentimiento (OAuth) o al crear o editar una clave. Cada herramienta MCP está etiquetada con exactamente uno:
| Scope | Cubre |
|---|---|
read | Todas las herramientas list_*, get_* y search_*. |
write | Crear, actualizar, mover, asignar, reordenar y publicar. |
delete | Cualquier eliminación irreversible. |
delete se separa de write porque es la única categoría de herramienta que destruye datos. Los scopes no se acumulan en niveles: delete no implica write, y write no implica read. Una clave necesita cada scope que usa, de forma explícita.
Llamar a una herramienta sin el scope que requiere falla antes de que se ejecute ninguna consulta o mutación, con un error que indica qué falta y qué sí puede hacer el principal. Consulta Resolución de problemas para ver el mensaje exacto.
El scope no es la única barrera
Las herramientas de configuración también requieren ser OWNER o ADMIN del espacio, igual que en el panel. Un CONTRIBUTOR con write puede crear y editar posts, cambiar estados, etiquetar posts y comentar, pero no puede crear, actualizar ni eliminar tableros, estados o etiquetas, reordenarlos, crear, actualizar ni publicar entradas del changelog, ni fusionar, mover, destacar, reasignar o eliminar posts. Fijar un comentario o marcarlo como interno también es OWNER/ADMIN. Esas llamadas fallan con un error de permisos aunque el scope esté presente. Las claves de API se tratan como ADMIN; la barrera de rol solo varía en las concesiones OAuth. Consulta Herramientas MCP para ver la división completa.
Los conectores no son scopes
La URL elige el conector. La clave o la concesión OAuth elige los scopes. Se aplican los dos.
| Conector | URL | Qué ve el chat |
|---|---|---|
| Reader | /mcp/reader/ | Texto de los clientes. Sin herramientas de escritura ni de borrado. |
| Writer | /mcp/writer/ | Mutaciones. Sin títulos, cuerpos ni texto de comentarios en las respuestas. |
| Combinado | /mcp/ | Todo. Legado. Inseguro en un solo chat. |
Una clave con read+write en la URL Writer sigue sin poder llamar a get_post. tools/list la oculta; un tools/call directo está prohibido. Writer nunca devuelve campos de cliente, aunque la clave tenga read.
Una clave solo-lectura en la URL Writer puede ver las herramientas de escritura en la lista. La llamada falla por scope. Concede write (y delete si lo necesitas) a las claves que uses con Writer.
Mantén Reader y Writer en chats distintos. Consulta Servidor MCP.
Contra qué protege la división
El conector es la URL, no el token. La misma clave funciona en las dos, y el límite se sostiene porque un agente no puede cambiar a mitad de conversación la URL con la que se configuró. Esa es la amenaza que cierra: un post de feedback con instrucciones dentro no puede hacer que un chat Reader modifique nada, porque las herramientas de escritura no están en esa sesión.
No protege frente a un cliente hostil ni frente a una clave filtrada. Quien tenga una clave con scope write puede apuntarla a Writer por su cuenta. Para ese caso están los scopes: una clave de solo read no puede escribir desde ninguna URL.
Elegir y cambiar scopes
OAuth. Elige los scopes en la pantalla de consentimiento. Reader (/mcp/reader/) solo ofrece read: Write y Delete no aparecen. Writer y Combined siguen ofreciendo write y delete; write sale marcado si la app lo pidió, delete sale desmarcado. Un colaborador no puede conceder delete. Para cambiar la concesión, revoca la app en Dashboard -> Developers -> MCP -> Apps conectadas y vuelve a aprobar.
Claves de API. Elige los scopes al crear una clave en Dashboard -> Developers -> API keys. Puedes editar los scopes de una clave en cualquier momento desde la misma página - el cambio se aplica de inmediato, sin necesidad de generar una clave nueva.
Por defecto, usa solo read para cualquier cosa que solo consulte datos. Añade write para agentes de triaje y creación de contenido. Añade delete solo a principales en los que confíes para eliminar cosas de forma permanente - la mayoría de flujos de trabajo nunca lo necesitan.
Claves creadas antes de que existieran los scopes
El servidor MCP se lanzó antes que los scopes por clave. Cualquier clave creada antes de eso no tiene scopes almacenados, y hereda read + write, sin delete - las herramientas que ya podía llamar siguen funcionando, y ninguna gana la capacidad de destruir datos de forma permanente que antes no podía tocar. La herencia nunca incluye delete; concédelo de forma explícita si una clave antigua lo necesita.
OAuth de MCP
Conecta el MCP de Feedjolt con una URL y sin clave de API. Cómo funciona el consentimiento, por qué importa el host de redirección, los scopes, el step-up de delete y cómo revocar apps conectadas.
Herramientas MCP
Las 37 herramientas del servidor MCP de Feedjolt, agrupadas por recurso, cada una con su scope y su rol requeridos - además de los comportamientos que sorprenden: los guardarraíles al eliminar tableros y estados, borrador vs. publicación del changelog, y las reglas de edición de comentarios.
