Public MCP server for operating ArduMaker's Projects app (stages, tasks, checklists, comments, attachments, calendar, meetings, GitHub repos) and cloud infrastructure (VPS lifecycle, domains, Linux users, systemd services and scheduled tasks, GitHub deploys, SSH tunnels) on behalf of a real user, with their explicit authorization.
Standard: OAuth 2.1 + PKCE, with Dynamic Client Registration (RFC 7591). Any modern MCP client can do this on its own just by pointing at the protocol endpoint:
https://mcp.ardumaker.com/mcp
The flow, in short:
POST /register).GET /authorize in the user's browser — this redirects to an ArduMaker
page where the user approves or rejects access, and chooses the scope independently for projects
(all of them, or a specific selection) and for VPS (all of them, or a specific selection).access_token (valid 8 hours) plus a
refresh_token (POST /token).grant_type=refresh_token. No new authorization screen: the session stays up.Standard OAuth metadata at
/.well-known/oauth-authorization-server and
/.well-known/oauth-protected-resource.
The endpoint above serves every tool this server has. That is the safe default and it is not going anywhere — but it is also the most expensive thing you can ask for: an agent pays for the whole catalogue in its context window before it says a word. If your agent only does one kind of work, point it at the matching path instead and it will see only those tools:
https://mcp.ardumaker.com/mcp | Everything this server exposes. |
https://mcp.ardumaker.com/mcp/vps | VPS lifecycle, domains and nginx, Linux users, systemd, scheduled tasks, databases, GitHub deploys, SSH tunnels and logs. |
https://mcp.ardumaker.com/mcp/proyectos | Projects, stages, tasks, checklists, comments, attachments, folders, calendar, meetings, linked infrastructure, trash and bug reports. |
https://mcp.ardumaker.com/mcp/infra | Email, domains and DNS, blogs, company billing status, RouterIA and SearchAPI keys, and the WhatsApp sandbox. |
https://mcp.ardumaker.com/mcp/wordpress | WordPress sites: content, Elementor, WooCommerce, plugins, users, files, wp-cli, database, backups, staging and browser checks. |
Same server, same credentials, same OAuth flow — only the URL changes. A token issued for one path works on all of them, so switching is editing one line of config, and switching back is editing it again.
Full machine-readable reference, generated live from this server's own tool registry:
https://mcp.ardumaker.com/tools.json.
| Health | ping (no authentication), ver_contexto_inicial, ver_operacion |
| Flows | publicar_repo_en_dominio, configurar_tunel_entre_vps, crear_proyecto_con_etapas, crear_correo_de_dominio |
| Bugs | reportar_bug, listar_mis_bugs, ver_bug |
| Bug triage | listar_bugs_triage, ver_bug_triage, comentar_bug_triage, actualizar_bug_triage, ver_resumen_bugs_triage (solo admin del sistema) |
| School requests | listar_solicitudes_escuela, ver_solicitud_escuela, crear_solicitud_escuela, actualizar_solicitud_escuela, eliminar_solicitud_escuela, comentar_solicitud_escuela, editar_comentario_solicitud_escuela, eliminar_comentario_solicitud_escuela, aprobar_solicitud_escuela, rechazar_solicitud_escuela (solo admin del sistema; CRUD completo; aprobar y rechazar mandan correo a quien se postuló) |
| Blogs | listar_blogs, ver_blog, listar_mis_blogs, crear_blog, ver_mi_blog, editar_blog, publicar_blog, despublicar_blog, traducir_blog, agregar_seccion_blog, eliminar_seccion_blog, listar_media_blog, crear_media_blog, eliminar_media_blog |
| Domains & DNS | listar_dominios_empresa, crear_dominio_empresa, ver_dominio_empresa, eliminar_dominio_empresa, ver_estado_ns_dominio, listar_registros_dns, crear_registro_dns, editar_registro_dns (no delete de registro) |
listar_dominios_correo, crear_dominio_correo, ver_dominio_correo, ver_stats_dominio_correo, verificar_dns_dominio_correo, eliminar_dominio_correo, listar_alias_dominio_correo, crear_alias_dominio_correo, eliminar_alias_dominio_correo, listar_cuentas_correo, crear_cuenta_correo, listar_planes_correo, ver_cuenta_correo, editar_cuota_cuenta_correo, listar_cuentas_bot_correo, crear_cuenta_bot_correo, cambiar_token_cuenta_bot_correo, editar_cuenta_bot_correo, eliminar_cuenta_bot_correo, ver_api_correo, ver_cola_correo, listar_envios_correo, ver_envio_correo, listar_api_keys_correo, crear_api_key_correo, cambiar_token_api_key_correo, revocar_api_key_correo, listar_mensajes_correo, ver_mensaje_correo, marcar_leido_correo, enviar_correo, listar_carpetas_correo, crear_carpeta_correo, listar_alias_correo, crear_alias_correo, eliminar_alias_correo, listar_filtros_correo, crear_filtro_correo, eliminar_filtro_correo (no delete de cuenta) | |
| Company | ver_empresa, ver_estado_verificacion_empresa, listar_servicios_empresa, ver_consumo_periodo_empresa (todo solo lectura) |
| Prepaid | ver_prepago_servicio, crear_prepago_servicio, cambiar_renovacion_prepago |
| RouterIA | listar_claves_router_ia, crear_clave_router_ia, ver_clave_router_ia, revocar_clave_router_ia, reactivar_clave_router_ia (nunca expone el token salvo al crear) |
| SearchAPI | listar_tokens_search_api, crear_token_search_api, ver_token_search_api, revocar_token_search_api, reactivar_token_search_api, ver_costos_operaciones_search_api (no expone los proxies de busqueda en si) |
| WhatsApp sandbox | listar_numeros_whatsapp, listar_numeros_sandbox_whatsapp, crear_numero_sandbox_whatsapp, ver_numero_sandbox_whatsapp, editar_numero_sandbox_whatsapp, eliminar_numero_sandbox_whatsapp, simular_mensaje_sandbox_whatsapp, simular_estado_sandbox_whatsapp, listar_chat_sandbox_whatsapp (solo numeros de prueba: no envia ni lee chats reales), crear_webhook_whatsapp, editar_webhook_whatsapp, eliminar_webhook_whatsapp, configurar_transcripcion_whatsapp |
| Projects | listar_proyectos, crear_proyecto, ver_proyecto, editar_proyecto, buscar_en_proyecto |
| Stages | listar_etapas, ver_etapa, crear_etapa, editar_etapa, eliminar_etapa, editar_etapas_en_lote |
| Tasks | listar_tareas, ver_tarea, crear_tarea, editar_tarea, eliminar_tarea, editar_tareas_en_lote |
| Checklist | listar_checklist_items, agregar_checklist_item, editar_checklist_item, eliminar_checklist_item, editar_checklist_en_lote |
| Comments | listar_comentarios_tarea, comentar_tarea, listar_comentarios_adjunto, cambiar_secreto_comentario_adjunto |
| Attachments | listar_adjuntos, ver_adjunto, crear_adjunto, editar_adjunto, eliminar_adjunto, mover_adjuntos |
| Folders | listar_carpetas, crear_carpeta, editar_carpeta, eliminar_carpeta |
| Calendar | ver_calendario_proyecto, ver_disponibilidad |
| Meetings | listar_reuniones, ver_reunion, crear_reunion, editar_reunion, cancelar_reunion |
| Recordings | listar_grabaciones, ver_grabacion, leer_transcripcion_grabacion, buscar_en_grabaciones, mover_grabacion, ver_fotograma_grabacion, crear_recorte_grabacion, ver_recorte_grabacion, editar_grabacion, eliminar_grabacion, editar_transcripcion_grabacion, reintentar_procesamiento_grabacion, eliminar_recorte_grabacion, crear_tarea_desde_propuesta_grabacion |
| Members | listar_miembros_proyecto (read-only) |
| GitHub | vincular_repo_github, desvincular_repo_github, listar_commits_repo, ver_commit_repo, crear_repo_github, ver_propietarios_github |
| Resources | listar_recursos_proyecto (solo lectura: vincular y desvincular se hacen desde el proyecto) |
| Logs | ver_logs_proyecto |
| Trash | listar_papelera, ver_papelera, restaurar_papelera, listar_proyectos_eliminados |
| Cloud – Catalog | listar_planes_vps, ver_opciones_vps, listar_empresas, ver_funciones_por_sistema |
| Cloud – Logs & network | ver_logs_nginx_vps, ver_logs_systemd_vps, ver_logs_tarea_vps, ver_estado_red_vps |
| Cloud – GitHub deploy logs | listar_commits_repo_github_vps, ver_commit_repo_github_vps, listar_logs_repo_github_vps, ver_log_repo_github_vps |
| Cloud – VPS | listar_vps, listar_todos_los_vps, crear_vps, ver_vps, editar_vps, ver_estado_vps, ver_funciones_vps, controlar_vps, cambiar_plan_vps, ejecutar_comando_vps, ver_historial_comandos_vps, leer_archivo_vps, guardar_archivo_vps, redeploy_repo_github |
| Cloud – Domains & port forwards | verificar_dominio_vps, crear_dominio_vps, activar_dominio_vps, listar_dominios_vps, eliminar_dominio_vps, ver_nginx_dominio_vps, editar_nginx_dominio_vps, listar_redirecciones_vps, crear_redireccion_vps, eliminar_redireccion_vps, ver_politica_ip_puertos_vps, cambiar_politica_ip_puertos_vps |
| Cloud – Databases | listar_motores_db_vps, probar_conexion_db_vps, guardar_credencial_db_vps, listar_bases_db_vps, listar_tablas_db_vps, describir_tabla_db_vps, leer_filas_db_vps, contar_filas_db_vps, consultar_sql_db_vps, explicar_sql_db_vps, insertar_fila_db_vps, actualizar_fila_db_vps, borrar_fila_db_vps, ejecutar_ddl_db_vps, historial_operaciones_db_vps |
| Cloud – Backups | listar_backups_vps, ver_backup_vps, crear_backup_vps, crear_descarga_backup_vps, ver_estado_descarga_backup_vps, configurar_backups_vps (no expone borrar una copia) |
| Cloud – Linux users | listar_usuarios_vps, crear_usuario_vps, ver_usuario_vps, editar_usuario_vps, eliminar_usuario_vps |
| Cloud – Systemd services | listar_servicios_vps, crear_servicio_vps, ver_servicio_vps, editar_servicio_vps, eliminar_servicio_vps, controlar_servicio_vps |
| Cloud – Scheduled tasks | listar_tareas_vps, crear_tarea_vps, ver_tarea_vps, editar_tarea_vps, eliminar_tarea_vps, controlar_tarea_vps |
| Cloud – GitHub deploy | listar_repos_github_vps, vincular_repo_github_vps, ver_repo_github_vps, editar_repo_github_vps, eliminar_repo_github_vps, crear_repo_github_vps |
| Cloud – SSH tunnel receiver | configurar_receptor_tunel_vps, eliminar_receptor_tunel_vps, ver_estado_receptor_tunel_vps, listar_claves_receptor_tunel_vps, agregar_clave_receptor_tunel_vps, eliminar_clave_receptor_tunel_vps |
| Cloud – Apps | listar_apps_empresa, ver_app, ver_catalogo_apps, ver_preflight_app, ver_operacion_app, ver_acceso_app, instalar_app, reintentar_operacion_app, refrescar_apps, controlar_app, cambiar_lista_ip_app, revelar_credencial_app, revocar_acceso_app, desinstalar_app, ver_asistente_git_app, ver_config_deploy_app, guardar_config_deploy_app |
| Cloud – SSH tunnel initiator | configurar_iniciador_tunel_vps, eliminar_iniciador_tunel_vps, ver_estado_iniciador_tunel_vps, listar_tuneles_vps, crear_tunel_vps, ver_tunel_vps, eliminar_tunel_vps, controlar_tunel_vps |
| WordPress | listar_sitios_wordpress, ver_sitio_wordpress, leer_logs_wordpress, ver_web_wordpress, probar_web_wordpress, editar_contenido_wordpress, editar_menus_wordpress, editar_medios_wordpress, configurar_sitio_wordpress, controlar_extensiones_wordpress, editar_usuarios_wordpress, editar_seo_wordpress, editar_elementor_wordpress, editar_diseno_elementor_wordpress, editar_tienda_wordpress, ver_reportes_tienda_wordpress, editar_archivos_wordpress, ejecutar_wp_cli_wordpress, consultar_base_wordpress, controlar_cron_wordpress, controlar_cache_wordpress, configurar_correo_wordpress, editar_integraciones_wordpress, crear_backup_wordpress, listar_backups_wordpress, eliminar_backup_wordpress, restaurar_backup_wordpress, crear_staging_wordpress, cambiar_direccion_wordpress |
eliminar_usuario_vps asks for the username
back before it does it.Some tools return text written by people who are not the user who authorized the agent: email bodies and subjects, task and attachment comments, nginx/systemd/deploy logs, commit messages, and the output of shell commands. Those responses come wrapped and labelled as untrusted so the model treats them as data, not as instructions. That marking lowers the odds; it is not a security boundary.
The boundary is the scope you grant. These combinations are riskier than either half on its own — worth knowing before you approve one:
| Reading email + running shell commands | Anyone who knows one of your mailbox addresses can put text in front of your agent. If that same agent can also open a shell on a VPS, a well-written email is a remote-code-execution attempt that costs the attacker nothing and needs no account on ArduMaker. Neither half is dangerous on its own. Give an agent that answers email a scope without VPS access, and an agent that operates servers a scope without mailboxes. |
| Reading email + sending email from the same domain | An incoming message can talk the agent into replying to a third party from your domain — phishing your own customers, with your DKIM signature on it. Read-only scope is enough for triage and summaries. Grant sending only to agents whose whole job is to send. |
| Reading email or comments + querying databases | Untrusted text plus arbitrary SQL is a data-exfiltration path: the agent runs the query it was talked into and puts the answer somewhere the attacker can read. Keep database access on agents that never read third-party content. |
Each connection is tied to a specific user and client — a single user can have several agents connected at the same time.
The user can see their connected agents — with last activity and absolute expiry — and revoke any of them, or all at once, from their ArduMaker account. Revoking kills the refresh chain too, so a revoked agent cannot renew its way back in.