AJEMS MCP Connector
OfficialClick on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@AJEMS MCP ConnectorHow many entries in the contact form came from the website last week?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
AJEMS MCP Connector
Lets Claude and ChatGPT answer questions about an AJEMS workspace — and optionally create apps, forms and records — without anyone logging into AJEMS.
One deployment serves every tenant. Users sign in with their organisation name and AJEMS secret key.
Files
File | Role |
| Config, authentication, HTTP transport, health, shutdown |
| Every tool the AI can call |
| The only module that talks to the AJEMS API |
| The OAuth handshake Claude and ChatGPT require |
| Per-tenant caching and upstream concurrency limiting |
| Small shared helpers |
| 11-step end-to-end checker |
| Fake AJEMS with sample data, for testing without a live workspace |
Related MCP server: BackCrew ServiceM8 MCP Server
Quick start
npm install
cp .env.example .env # set PUBLIC_URL and AJEMS_HOST_TEMPLATE
npm startVerify against a real workspace:
node diagnose.js https://mcp.ajems.com <organisation> <secret-key>Or try it with no AJEMS at all:
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-keySee DEPLOY.md for nginx, TLS, pm2 and tuning.
Tools
Read-only by default. Set ALLOW_WRITES=true for the four write tools.
Tool | Shown as | Purpose |
| See my apps and forms | Discovery; returns |
| See what a form contains | Field keys, labels, types, options, record count |
| Count records | An exact number, optionally filtered |
| Find records | Records with filters, date range, field selection |
| Total or average records | sum / avg / min / max, optionally grouped |
| Create a new app | |
| Rename or restyle an app | |
| Create a new form | Field keys generated automatically |
| Change a form's settings | Name, description, external read/write access |
| Add records | One or many, bounded concurrency |
| Update a record | Only the fields you pass |
| Search everything | Keyword search across forms (ChatGPT) |
| Open a search result | Full detail for one result (ChatGPT) |
Read-only by default. Set ALLOW_WRITES=true for the six write tools.
Two rules the tools follow
Never make the model count. Every list carries an explicit total, placed first
in the response. Models that summarise long lists return numbers that drift between
identical questions; count_records exists so a "how many" question never depends
on counting an array.
No write happens without confirm: true. The first call returns a preview and a
warning instead of writing. For update_record the preview shows current values next
to the new ones. This is enforced in the tool, not left to the model's judgement.
summarise_records computes on the server. Without it, "total by city" would pull
thousands of rows into the model's context and add them by hand — slow, expensive,
and wrong past a certain size.
search and fetch keep those exact names because outside Developer Mode, ChatGPT
only calls tools named search and fetch and ignores everything else.
How a question gets answered
Claude asks "how many entries in July, by city?":
list_apps_and_forms→ finds the formshow_form_fields→ learns thatdate_1750943312417is the date field anddropdown_1750943301432holds citiessummarise_recordswith a date range andgroup_by→ gets three numbers backWrites the answer in plain English
Field keys are auto-generated (date_1750943312417), which is why step 2 is not optional. The tool descriptions tell the model this, and it chains the calls itself.
Tenant isolation
Tenant comes from the session, resolved server-side from the bearer token
No tool schema has a
tenant,orgorurlparameter — nothing exists for a model to be talked into changingajems.jsis the only module issuing outbound requests, and only to that tenant's base URLCache keys are namespaced by tenant and a hash of the secret key, so tenants can't read each other's cached entries and a rotated key self-expires
Organisation names are stripped to subdomain-safe characters, so an entry like
evil.com/xcan't redirect the server elsewhereEvery tool call is logged as JSON with tenant and user
When adding a tool, re-check the second point.
Testing
27 checks pass against the mock covering the tool layer: all 13 tools present with correct annotations, explicit totals, filtered counts, the confirmation gate blocking and then allowing every write, before/after previews, and search totals. An earlier suite covers authentication, tenant isolation, 20 concurrent users and rate limiting.
This server cannot be installed
Maintenance
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
Give AI agents access to form submissions — read, search, update, and process file attachments.
Give your AI agents the tools to build, manage, and run automation workflows.
Zero-setup MCP gateway securely connecting AI to your tools with authentication and workflows
Connect AI agents to Process Street workflows, tasks, runs, data sets, and operational records.
Related MCP Servers
- FlicenseAqualityDmaintenanceEnables AI assistants to interact with SMB platform APIs for querying business data, managing tasks, accessing connectors, dashboards, and monitoring security.16
- AlicenseBqualityBmaintenanceEnables an AI assistant to interact with ServiceM8 via natural language, supporting lookups and optionally creating or updating records, with tiered safety controls.36MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to interact with Jurisly workspaces for tasks like drafting invoices, finding hearing dates, and editing documents through natural language.Apache 2.0
- AlicenseNot gradedqualityCmaintenanceEnables 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
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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