Skip to main content
Glama
MCP Parse Server

MCP Parse Server

MCP Parse Server

⚠️ Este repo usa pnpm desde el 2026-10-20. Si ya lo tenías instalado con npm, después de bajar el cambio corre una vez bash scripts/pnpm-setup.sh para reinstalar las dependencias (detalles en «Cambio de npm a pnpm», al final).

Servidor MCP (Model Context Protocol) completo para Parse Server con funcionalidades de CRUD, gestión de schemas, roles, ACL y Cloud Functions.

🚀 Características

📖 Lectura de Datos

  • parse_get_object - Obtener objeto por ID

  • parse_query - Consultar con filtros, ordenamiento y paginación

  • parse_count - Contar objetos con filtros

  • parse_aggregate - Queries de agregación (MongoDB pipeline)

✍️ Escritura de Datos

  • parse_create_object - Crear nuevos objetos

  • parse_update_object - Actualizar objetos existentes

  • parse_delete_object - Eliminar objetos

  • parse_batch - Operaciones batch (múltiples operaciones)

  • parse_increment_field - Incrementar campos numéricos

  • parse_add_to_array - Añadir elementos a arrays

  • parse_remove_from_array - Remover elementos de arrays

🗂️ Gestión de Schemas

  • parse_get_schemas - Listar todos los schemas

  • parse_get_schema - Obtener schema de una clase

  • parse_create_class - Crear nueva clase con schema

  • parse_update_schema - Actualizar schema de clase

  • parse_delete_class - Eliminar clase

  • parse_add_field - Añadir campo a clase

  • parse_delete_field - Eliminar campo de clase

🔐 Seguridad (Roles, Users, ACL)

  • parse_create_role - Crear rol

  • parse_get_role - Obtener rol

  • parse_list_roles - Listar roles

  • parse_update_role - Actualizar rol

  • parse_delete_role - Eliminar rol

  • parse_add_users_to_role - Añadir usuarios a rol

  • parse_remove_users_from_role - Remover usuarios de rol

  • parse_update_clp - Actualizar Class Level Permissions

  • parse_create_user - Crear usuario

  • parse_get_user - Obtener usuario

  • parse_list_users - Listar usuarios

☁️ Cloud Functions

  • parse_call_cloud_function - Llamar Cloud Function

  • parse_run_job - Ejecutar Background Job

  • parse_get_cloud_code_info - Información de Cloud Code

Related MCP server: PocketBase MCP Server

📦 Instalación

Requiere pnpm 11 (corepack enable); npm install queda bloqueado por el preinstall.

pnpm install --frozen-lockfile

⚙️ Configuración

Crea un archivo .env en la raíz del proyecto:

PARSE_URL=https://tu-parse-server.com/parse
PARSE_APP_ID=tu-app-id
PARSE_REST_KEY=tu-rest-key
PARSE_MASTER_KEY=tu-master-key

# Opcional: Permite certificados autofirmados (solo desarrollo)
ALLOW_SELF_SIGNED_CERT=true
# O alternativamente:
# NODE_TLS_REJECT_UNAUTHORIZED=0

Notas importantes:

  • PARSE_MASTER_KEY es opcional pero necesario para operaciones de schema, roles y algunas operaciones administrativas.

  • ALLOW_SELF_SIGNED_CERT=true permite certificados SSL autofirmados. ⚠️ Solo usar en desarrollo local, nunca en producción.

🏃 Uso

Iniciar el servidor

pnpm start

Modo desarrollo (con watch)

pnpm dev

📁 Estructura del Proyecto

mcp-parse-server/
├── index.mjs                 # Punto de entrada principal
├── src/
│   ├── utils/
│   │   ├── config.js         # Configuración y variables de entorno
│   │   └── parse-client.js   # Cliente HTTP para Parse REST API
│   └── tools/
│       ├── read.js           # Herramientas de lectura
│       ├── write.js          # Herramientas de escritura
│       ├── schema.js         # Herramientas de schema
│       ├── security.js       # Herramientas de roles y ACL
│       └── cloud.js          # Herramientas de Cloud Functions
├── package.json
├── .env
└── README.md

🔧 Configuración en Claude Desktop / VS Code

Añade esta configuración a tu archivo de configuración MCP:

Para Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "parse-server": {
      "command": "node",
      "args": ["/ruta/absoluta/a/mcp-parse-server/index.mjs"],
      "env": {
        "PARSE_URL": "https://tu-parse-server.com/parse",
        "PARSE_APP_ID": "tu-app-id",
        "PARSE_REST_KEY": "tu-rest-key",
        "PARSE_MASTER_KEY": "tu-master-key",
        "ALLOW_SELF_SIGNED_CERT": "true"
      }
    }
  }
}

Para VS Code:

Configura en tu settings.json del workspace o global.

📚 Ejemplos de Uso

Crear una clase con schema

{
  "className": "Product",
  "fields": {
    "name": {
      "type": "String",
      "required": true
    },
    "price": {
      "type": "Number",
      "required": true
    },
    "category": {
      "type": "Pointer",
      "targetClass": "Category"
    },
    "tags": {
      "type": "Array"
    }
  }
}

Query con filtros

{
  "className": "Product",
  "where": {
    "price": { "$gte": 10, "$lte": 100 },
    "category": {
      "__type": "Pointer",
      "className": "Category",
      "objectId": "abc123"
    }
  },
  "order": "-createdAt",
  "limit": 20,
  "include": "category"
}

Crear rol con usuarios

{
  "name": "Moderator",
  "users": ["userId1", "userId2"],
  "ACL": {
    "*": { "read": true },
    "role:Admin": { "write": true }
  }
}

Actualizar CLP

{
  "className": "Product",
  "permissions": {
    "get": { "*": true },
    "find": { "*": true },
    "create": { "requiresAuthentication": true },
    "update": { "role:Admin": true },
    "delete": { "role:Admin": true }
  }
}

🛡️ Permisos

Algunas operaciones requieren la Master Key:

  • Operaciones de schema (crear/modificar/eliminar clases)

  • Gestión de roles

  • Operaciones administrativas

  • Background Jobs

  • Queries de agregación

Asegúrate de configurar PARSE_MASTER_KEY en tu .env para estas operaciones.

📝 Licencia

MIT

🤝 Contribuciones

Las contribuciones son bienvenidas. Por favor abre un issue o pull request.

Cambio de npm a pnpm (una sola vez, después de bajar el cambio)

Este repo usa pnpm (packageManager en package.json). Si ya tenías el repo instalado con npm, corre una vez:

bash scripts/pnpm-setup.sh          # o: npm run setup:pnpm   (--dry-run para ver qué hará)

Instala pnpm de la versión del repo (con Volta o Corepack; usa Node 22 si tu Node es menor a 22.13), borra los node_modules que armó npm en las partes que ahora son pnpm y reinstala con pnpm install --frozen-lockfile. Las carpetas que siguen con npm (las que se instalan en servidores, con package-lock.json) no se tocan. Después: pnpm install y pnpm run <script>; npm install queda bloqueado. Un worktree nuevo sólo necesita pnpm install (pnpm reutiliza su store global, no vuelve a descargar paquetes).

Available Tools

35 tools
parse_add_fieldB

Añade un nuevo campo a una clase existente. Especifica fieldName, fieldType (String, Number, Boolean, Date, Pointer, etc), y opcionalmente targetClass, required, defaultValue. Requiere master key.

Inputs: inputSchema (required).

parse_add_relationA

Agrega uno o más objetos a un campo de tipo Relation en Parse Server. Las relaciones permiten crear vínculos muchos-a-muchos entre objetos. Proporciona className, objectId del objeto que contiene la relación, el nombre del campo de relación y un array de objectIds de los objetos a agregar.

Inputs: inputSchema (required).

parse_add_to_arrayC

Añade elementos a un campo array de forma atómica. Si unique=true, usa AddUnique para evitar duplicados. Solo acepta valores primitivos (string, number, boolean, null).

Inputs: inputSchema (required).

parse_add_users_to_roleA

Añade uno o más usuarios a un rol existente mediante sus objectIds. Los usuarios heredarán los permisos del rol. Requiere master key.

Inputs: inputSchema (required).

parse_aggregateA

Ejecuta queries de agregación avanzados usando pipeline de MongoDB (match, group, sort, project, etc). Requiere master key. Útil para estadísticas, agrupaciones y cálculos complejos.

Inputs: inputSchema (required).

parse_batchA

Ejecuta múltiples operaciones (POST/crear, PUT/actualizar, DELETE/eliminar) en una sola llamada. Útil para operaciones masivas. Cada request tiene method, path y body opcional.

Inputs: inputSchema (required).

parse_call_cloud_functionC

Ejecuta una Cloud Function definida en Parse Server. Proporciona functionName y opcionalmente params como objeto JSON. Retorna el resultado de la función.

Inputs: inputSchema (required).

parse_countB

Cuenta el número total de objetos en una clase de Parse Server. Opcionalmente acepta filtros where para contar solo objetos que cumplan ciertos criterios.

Inputs: inputSchema (required).

parse_create_classA

Crea una nueva clase (tabla) en Parse Server con su estructura de campos. Define className, fields (nombre: {type, targetClass, required, defaultValue}) y opcionalmente classLevelPermissions. Requiere master key.

Inputs: inputSchema (required).

parse_create_objectA

Crea un nuevo objeto (registro) en una clase de Parse Server. Proporciona className y un objeto data con los campos y valores. Retorna el objectId del objeto creado.

Inputs: inputSchema (required).

parse_create_roleA

Crea un nuevo rol en Parse Server para control de acceso. El campo ACL es OBLIGATORIO y debe ser un objeto que defina los permisos de lectura y escritura para usuarios, roles o público. Ejemplo de input: { "name": "Administrador", "ACL": { "*": { "read": true }, "role:Admin": { "read": true, "write": true } } }. Opcionalmente puedes agregar arrays de userIds y roleIds. Requiere master key.

Inputs: inputSchema (required).

parse_create_userA

Crea un nuevo usuario en Parse Server. Requiere username y password obligatorios. Opcionalmente email y campos adicionales (additionalFields). Retorna sessionToken para autenticación.

Inputs: inputSchema (required).

parse_delete_classA

Elimina permanentemente una clase y TODOS sus objetos de Parse Server. Esta operación es irreversible. Requiere master key.

Inputs: inputSchema (required).

parse_delete_fieldA

Elimina permanentemente un campo de una clase. Los datos de ese campo en todos los objetos se perderán. Requiere master key.

Inputs: inputSchema (required).

parse_delete_objectA

Elimina permanentemente un objeto de Parse Server. Requiere className y objectId del objeto a eliminar.

Inputs: inputSchema (required).

parse_delete_roleA

Elimina permanentemente un rol de Parse Server. Los usuarios que tenían este rol perderán sus permisos asociados. Requiere master key.

Inputs: inputSchema (required).

parse_get_cloud_code_infoA

Lista todas las Cloud Functions y Background Jobs disponibles en Parse Server. Útil para descubrir qué funciones puedes llamar. Requiere master key.

Inputs: inputSchema (required).

parse_get_objectA

Obtiene un objeto específico de Parse Server por su className y objectId. Útil para recuperar un registro individual cuando conoces su ID.

Inputs: inputSchema (required).

parse_get_roleA

Obtiene los detalles de un rol específico por su objectId: nombre, ACL, y relaciones con usuarios. Requiere master key.

Inputs: inputSchema (required).

parse_get_schemaA

Obtiene el schema completo de una clase específica: sus campos, tipos de datos, relaciones y permisos (CLP). Requiere master key.

Inputs: inputSchema (required).

parse_get_schemasA

Lista todos los schemas (estructuras de clases) disponibles en Parse Server. Muestra nombres de clases, campos, tipos y permisos. Requiere master key.

Inputs: inputSchema (required).

parse_get_userA

Obtiene los detalles de un usuario específico por su objectId. Muestra username, email y campos personalizados (pero no password). Requiere master key.

Inputs: inputSchema (required).

parse_increment_fieldA

Incrementa (o decrementa con valor negativo) un campo numérico de forma atómica. Útil para contadores, puntuaciones, etc. El amount por defecto es 1.

Inputs: inputSchema (required).

parse_list_rolesA

Lista todos los roles en Parse Server. Opcionalmente filtra con where (ej: {"name": "Admin"}) y limita resultados. Requiere master key.

Inputs: inputSchema (required).

parse_list_usersA

Lista todos los usuarios en Parse Server. Opcionalmente filtra con where (ej: {"username": "admin"}) y limita resultados. Requiere master key.

Inputs: inputSchema (required).

parse_queryA

Consulta múltiples objetos de una clase en Parse Server. Soporta filtros con where (JSON), ordenamiento, paginación (limit/skip), selección de campos (keys) e inclusión de relaciones (include). El where usa sintaxis de Parse Query: {"field": "value"} para igualdad, {"field": {"$gt": 10}} para comparaciones, etc.

Inputs: inputSchema (required).

parse_query_relationA

Consulta y obtiene los objetos relacionados en un campo de tipo Relation. Soporta filtros, ordenamiento y paginación para explorar las relaciones existentes.

Inputs: inputSchema (required).

parse_remove_from_arrayB

Elimina elementos específicos de un campo array de forma atómica. Solo acepta valores primitivos (string, number, boolean, null).

Inputs: inputSchema (required).

parse_remove_relationA

Remueve uno o más objetos de un campo de tipo Relation en Parse Server. Proporciona className, objectId del objeto que contiene la relación, el nombre del campo de relación y un array de objectIds de los objetos a remover.

Inputs: inputSchema (required).

parse_remove_users_from_roleA

Remueve uno o más usuarios de un rol mediante sus objectIds. Los usuarios perderán los permisos asociados a ese rol. Requiere master key.

Inputs: inputSchema (required).

parse_run_jobA

Ejecuta un Background Job (tarea programada) definido en Parse Server. Útil para tareas pesadas, limpiezas, reportes, etc. Requiere master key.

Inputs: inputSchema (required).

parse_update_clpA

Define permisos a nivel de clase (quién puede get, find, create, update, delete, addField). Usa "*" para público, "requiresAuthentication" para usuarios autenticados, o "role:RoleName" para roles específicos. Requiere master key.

Inputs: inputSchema (required).

parse_update_objectB

Actualiza campos de un objeto existente en Parse Server. Requiere className, objectId y un objeto data con los campos a modificar. Solo actualiza los campos especificados.

Inputs: inputSchema (required).

parse_update_roleA

Modifica el nombre o ACL de un rol existente. Para gestionar usuarios del rol usa parse_add_users_to_role o parse_remove_users_from_role. Requiere master key.

Inputs: inputSchema (required).

parse_update_schemaA

Modifica el schema de una clase existente: añade nuevos campos o actualiza Class Level Permissions (CLP). No puede eliminar campos (usa parse_delete_field). Requiere master key.

Inputs: inputSchema (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.7/5.0

    Scored across 35 tools

    Disambiguation5/5

    Each tool targets a distinct resource and action, with clear separation between object, schema, role, user, and relation operations. Even similar deletes (field, class, object) are unambiguous due to explicit resource naming.

    Naming Consistency5/5

    All tools follow a consistent parse_<verb>_<resource> pattern, using clear verbs like create, get, update, delete, list, add, remove, and query. Minor variations like get vs list are contextually appropriate (singular vs plural).

    Tool Count4/5

    35 tools is above typical ranges, but the server covers the broad domain of Parse Server management including objects, schemas, roles, users, relations, and cloud code. Each tool serves a distinct purpose, making the large count justified for the scope.

    Completeness3/5

    Object, schema, role, and relation operations have comprehensive CRUD coverage, but user management is incomplete: users can be created, fetched, and listed, yet there are no update_user or delete_user tools. This leaves a notable lifecycle gap.

    Maintenance

    ActivityMaintained
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers