Skip to main content
Glama
ajemssolutions

AJEMS MCP Connector

Official

AJEMS MCP Connector

Permite que Claude y ChatGPT respondan preguntas sobre un espacio de trabajo de AJEMS — y opcionalmente crear aplicaciones, formularios y registros — sin que nadie inicie sesión en AJEMS.

Un solo despliegue sirve a cada inquilino. Los usuarios inician sesión con el nombre de su organización y la clave secreta de AJEMS.


Archivos

Archivo

Función

server.js

Configuración, autenticación, transporte HTTP, salud, apagado

tools.js

Cada herramienta que la IA puede llamar

ajems.js

El único módulo que habla con la API de AJEMS

oauth.js

El apretón de manos OAuth que requieren Claude y ChatGPT

cache.js

Caché por inquilino y limitación de concurrencia ascendente

util.js

Pequeños ayudantes compartidos

diagnose.js

Comprobador de extremo a extremo de 11 pasos

mock-ajems.js

AJEMS falso con datos de muestra, para pruebas sin un espacio de trabajo real


Related MCP server: BackCrew ServiceM8 MCP Server

Inicio rápido

npm install
cp .env.example .env      # set PUBLIC_URL and AJEMS_HOST_TEMPLATE
npm start

Verifica contra un espacio de trabajo real:

node diagnose.js https://mcp.ajems.com <organisation> <secret-key>

O pruébalo sin AJEMS en absoluto:

npm run mock              # terminal 1
# set AJEMS_HOST_TEMPLATE=http://localhost:9090/{org}/json_builder
npm start                 # terminal 2
node diagnose.js http://localhost:8080 testco test-secret-key

Consulta DEPLOY.md para nginx, TLS, pm2 y ajustes.


Herramientas

Solo lectura por defecto. Establece ALLOW_WRITES=true para las cuatro herramientas de escritura.

Herramienta

Propósito

list_apps_and_forms

Descubrimiento — cada aplicación y formulario, con indicadores de lectura/escritura

describe_form

Claves de campo, etiquetas legibles, tipos, opciones de desplegable

query_responses

Registros con filtros, rango de fechas, selección de campos

aggregate_responses

count / sum / avg / min / max, opcionalmente agrupados

create_app

Nueva aplicación

create_form

Nuevo formulario; claves de campo generadas automáticamente

create_record

Uno o muchos registros, insertados con concurrencia limitada

update_record

Cambiar campos en un registro existente

search

Búsqueda por palabras clave en formularios y registros (ChatGPT)

fetch

Detalle completo para un resultado de búsqueda (ChatGPT)

aggregate_responses calcula en el servidor. Sin él, "total por ciudad" traería miles de filas al contexto del modelo y las contaría a mano — lento, costoso e incorrecto más allá de cierto tamaño.

search y fetch existen porque fuera del Modo Desarrollador, ChatGPT solo llama a herramientas con esos dos nombres e ignora todo lo demás.


Cómo se responde una pregunta

Claude pregunta "¿cuántas entradas en julio, por ciudad?":

  1. list_apps_and_forms → encuentra el formulario

  2. describe_form → aprende que date_1750943312417 es el campo de fecha y dropdown_1750943301432 contiene ciudades

  3. aggregate_responses con un rango de fechas y group_by → obtiene tres números

  4. Escribe la respuesta en inglés sencillo

Las claves de campo se generan automáticamente (date_1750943312417), por eso el paso 2 no es opcional. Las descripciones de las herramientas le indican esto al modelo, y él mismo encadena las llamadas.


Aislamiento de inquilinos

  • El inquilino proviene de la sesión, resuelto en el servidor a partir del token de portador

  • Ningún esquema de herramienta tiene un parámetro tenant, org o url — no existe nada que un modelo pueda ser convencido de cambiar

  • ajems.js es el único módulo que emite solicitudes salientes, y solo a la URL base de ese inquilino

  • Las claves de caché tienen un espacio de nombres por inquilino y un hash de la clave secreta, de modo que los inquilinos no pueden leer las entradas en caché de otros y una clave rotada se autoexpira

  • Los nombres de organización se reducen a caracteres seguros para subdominios, de modo que una entrada como evil.com/x no puede redirigir el servidor a otro lugar

  • Cada llamada a una herramienta se registra como JSON con inquilino y usuario

Al añadir una herramienta, vuelve a comprobar el segundo punto.


Pruebas

46 comprobaciones pasan contra el mock: autenticación, las 10 herramientas, filtros, rangos de fechas, el respaldo created_at, agregación agrupada, inserción masiva, invalidación de caché después de escrituras, mensajes de error, aislamiento de inquilinos, 20 usuarios concurrentes y limitación de velocidad.

F
license - not found
Not graded
quality - not tested
B
maintenance

Maintenance

0Maintainers
No issuesResponse time
0Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    B
    maintenance
    Enables an AI assistant to interact with ServiceM8 via natural language, supporting lookups and optionally creating or updating records, with tiered safety controls.
    36
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to interact with Jurisly workspaces for tasks like drafting invoices, finding hearing dates, and editing documents through natural language.
    Apache 2.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to directly interact with ERPNext/Frappe business data and operations, including document management, submissions, cancellations, reports, PDF generation, file uploads, and whitelisted method calls, with per-request permission enforcement.
    MIT

View all related MCP servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ajemssolutions/MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server