AJERIS
TourBlogDocsLog inText us
Log inText us
← Guides

Bring your own MCP server: connect any HTTPS endpoint to your agent

MCP is the protocol that lets you teach the agent tools we did not build. How to write a custom MCP, what to put in it, what our most ambitious users built.

Ajeris team·May 6, 2026·5 min read
Code on a laptop in warm light. MCP is the protocol that lets you teach the agent tools we did not build.

The agent ships with 21 built-in OAuth integrations. They cover most everyday and work tools. They do not cover everything. Custom MCP is the answer to "I have a niche tool we depend on; how do I make my agent able to use it?" The mechanism is a small server you write (or copy from a template) that exposes your tool to the agent via the Model Context Protocol.

This post is how to write one, what to put in it, what to skip, and what we have seen our most ambitious users build.

★What is MCP?

MCP (Model Context Protocol) is an open standard for AI agents to use external tools. An MCP server exposes tools, prompts, and resources; an MCP-compatible agent like Ajeris calls them as if they were built-in. You can write one in 50-100 lines of code; the agent picks up the new tools on the next turn.

When to write a custom MCP

Three real cases.

You have an internal tool. Your company has a custom CRM or operations dashboard. The agent should be able to read from it and write to it. Build a small MCP server that wraps your internal API; the agent now has those tools.

You have a third-party tool we did not integrate. A niche industry tool (lab management, freight ops, regulatory filing). The tool has an API; you wrap it; the agent has the integration without us having to build it generically.

You want a tool we will not build. Some tools (high-frequency-trading APIs, regulated-industry-specific tools) are not on our roadmap because they are not generally applicable. Custom MCP lets you have them anyway.

The minimum viable MCP

A representative server. The full code is ~80 lines.

import { Server } from '@modelcontextprotocol/sdk/server';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio';
 
const server = new Server(
  { name: 'my-tools', version: '0.1.0' },
  { capabilities: { tools: {} } }
);
 
// Define a tool
server.tool('lookup_customer', {
  description: 'Look up a customer in our CRM by email.',
  parameters: {
    type: 'object',
    properties: {
      email: { type: 'string' }
    },
    required: ['email']
  }
}, async ({ email }) => {
  const customer = await fetch(
    `https://your-crm.com/api/customers?email=${email}`,
    { headers: { 'Authorization': `Bearer ${process.env.CRM_TOKEN}` }}
  ).then(r => r.json());
 
  return { content: [{ type: 'text', text: JSON.stringify(customer) }] };
});
 
// Define another tool
server.tool('create_invoice', {
  description: 'Create a new invoice in our billing system.',
  parameters: {
    type: 'object',
    properties: {
      customer_id: { type: 'string' },
      amount: { type: 'number' },
      description: { type: 'string' }
    },
    required: ['customer_id', 'amount']
  }
}, async ({ customer_id, amount, description }) => {
  const invoice = await fetch('https://your-billing.com/api/invoices', {
    method: 'POST',
    headers: { 'Authorization': `Bearer ${process.env.BILLING_TOKEN}` },
    body: JSON.stringify({ customer_id, amount, description })
  }).then(r => r.json());
 
  return { content: [{ type: 'text', text: `Invoice ${invoice.id} created.` }] };
});
 
const transport = new StdioServerTransport();
await server.connect(transport);

That is the entire surface. Run it once locally to test, deploy it (Cloudflare Workers, Vercel, your own VPS), and connect the URL to your Ajeris account. The agent picks up the new tools.

Multiple monitors displaying ambient code, the visual of a developer environment ready for custom tool development.
An MCP server is small. Most are 50-200 lines. The hard part is naming the tools well.

What to put in your tools

Three principles from designing the built-in tools.

Verb-object names. lookup_customer, not customer_get_by_email. The model parses verb-object more reliably than the alternatives.

Parameter names that match natural language. If users ask "look up John's contact," your tool's parameter should be name not firstNameOrFullNameOrEmail. The agent works back from the user's phrasing to the tool call; obvious parameter names help.

Honest descriptions. Tools fail when the description over-claims. "Books a meeting" is not the same as "drafts a meeting invite for user approval." Be specific in the description; the agent uses it to decide when to invoke.

What to skip

Three things we have seen people put in custom MCP that they should not.

Auth flows. Do not implement an OAuth flow inside your MCP. Use a static token (per-user) injected at MCP-connect time. Auth flows are infrastructure, not tools.

Long-running processes. Tools should return in seconds. If the underlying operation is long (a 10-minute report generation), the tool should kick off the work and return a job ID; a separate tool checks status.

Multi-step state. Tools should be stateless from the agent's perspective. If your tool needs state ("user is in the middle of a multi-step flow"), persist that state on your server side and reflect it in the next tool call's parameters.

Connecting the MCP to your Ajeris account

The flow is one form-fill on the manage page or one sentence to the agent.

You: connect a custom MCP at https://my-tools.example.com/mcp
     bearer token [your-token]
 
Ajeris: Validating the MCP server.
        Detected 4 tools: lookup_customer, create_invoice,
        send_message, list_open_jobs.
        Connect? [yes/no]
 
You: yes
 
Ajeris: Connected. Tools are live now. Ask away.

The agent validates the server (the MCP must respond to the standard initialization handshake) and lists the tools it found. You confirm; the connection is live. The agent uses the new tools the next time you ask for something they fit.

  1. 1
    Write the server
    50-200 lines. Tools, descriptions, parameters.
  2. 2
    Deploy
    Cloudflare Worker, Vercel function, or your VPS.
  3. 3
    Connect to Ajeris
    Paste URL + bearer in the manage page.
  4. 4
    Use
    Agent uses the new tools on the next turn.
  5. 5
    Iterate
    Update the server; reconnect to refresh tool definitions.

What our most ambitious users have built

A few representative shapes that fit naturally.

A small marina. Wrap a slip-management system as an MCP. The agent now answers "is slip 14 available next weekend" and books slips through the MCP.

A specialty pharmacy. Wrap an inventory system. The agent answers do you have <medication-name> in stock and queues call-backs when restocked.

A travel agency. Wrap a fare-search tool. The agent answers "what's the cheapest way to get from ATL to SFO Friday."

A property manager. Wrap a tenant-service-request system. The agent triages, schedules, and dispatches without the property manager seeing a ticket.

In each case the underlying business already has the API; the MCP is a thin wrapper that exposes the API to the agent. The work is hours, not weeks.

Without custom MCP
  • Wait for us to build an integration for your specific tool.
  • Build a workaround using webhooks or zaps.
  • Manually copy data between your tool and the agent.
  • Live with the agent not knowing your most-used internal tool.
With custom MCP
  • Wrap your tool in 50-200 lines.
  • Deploy on infrastructure you already use.
  • Agent reads and writes to your tool natively.
  • Tool is fully integrated within an afternoon of work.
50-200Lines for a useful MCP
<1 dayFrom idea to deployed
open standardWorks across MCP-compatible clients

Frequently asked

Is the protocol open?+
Yes. MCP is an open standard with a public specification. Servers you write work against any MCP-compatible client (Claude.ai, Cursor, Zed, Ajeris, others). You are not locked in.
What languages can I write the server in?+
Anything. The reference SDKs are TypeScript and Python. Go, Rust, Java, Ruby implementations exist. The protocol is JSON-RPC over stdio or HTTP; you can roll your own.
Where should I host the MCP?+
Cloudflare Workers is the most common (cheap, fast cold-start). Vercel and Lambda are also fine. Your own VPS works. Avoid hosting on a flaky residential server; the agent expects sub-second responses.
Can the MCP read user data from Ajeris?+
No. The MCP runs on your infrastructure and has access to whatever you give it (your token, your environment variables). It does not have access to Ajeris's user data; the agent calls the MCP, not the other way around.
What if my MCP goes down?+
The agent's tool call fails gracefully. It tells the user the tool is unavailable and suggests the alternative path. Your MCP's downtime does not affect the rest of the agent's tools.

Try it

If you have an internal tool you wish the agent knew about, write the MCP today. The first hour you save (or the first booking that books because the agent had access to your scheduling system) pays back the afternoon of work.

More stories

A man at a laptop with phone in hand. The WhatsApp inquiry that becomes a real booking, real invoice, real handoff.
Guides

WhatsApp Business AI agent: the complete buyer's guide

Six requirements for a WhatsApp agent that works for real small business: voice cloning, real bookings, real invoicing, multi-language, durable memory, clean human handoff.

A phone with warm bokeh in the background, the visual of one customer surface that includes many channels.
Guides

The multi-channel customer inbox: SMS, WhatsApp, voice, email in one record

A customer texts on Tuesday. They WhatsApp on Friday. They call on Monday. The agent treats them as one customer. Here is what that looks like in practice.

Try Ajeris.

Text +1 (470) 821 4265. Your agent replies in seconds. Free.

Text on WhatsApp
Connects to

Every tool you already use. Your agent does the rest.

WhatsApp
Gmail
Calendar
Slack
Notion
GitHub
Instagram
Spotify
Uber
DoorDash
Apple Music
Telegram
WhatsApp
Gmail
Calendar
Slack
Notion
GitHub
Instagram
Spotify
Uber
DoorDash
Apple Music
Telegram
Shopify
QuickBooks
Xero
Square
HubSpot
Salesforce
Stripe
Lyft
Alexa
Google LSA
Hue
Claude
Shopify
QuickBooks
Xero
Square
HubSpot
Salesforce
Stripe
Lyft
Alexa
Google LSA
Hue
Claude

Message to start

+1 470 821 4265

Message the number above on WhatsApp or by SMS. Your assistant replies within seconds and sets itself up in the conversation. Or sign up by web form to be added to our list.

Welcome message. “Hi. I’m Ajeris. I’ll be your personal agent. What should I call you? Reply STOP to unsubscribe, HELP for help.”

STOP to unsubscribe. HELP for support.

Message and data rates may apply. Carriers are not liable for delayed or undelivered messages. Message frequency varies based on your interaction with the agent.

Questions: hi@ajeris.com

Your assistant is already in your phone. You just need to text it.

The personal assistant you can actually get today. No app, no waitlist.

WhatsApphi@ajeris.com
Personal
  • Channels
  • Morning brief
  • Meetings
  • Research and build
  • Laptop on a leash
  • Everyday
  • Memory
Platform
  • Connectors
  • Platform
Developers
  • Docs
  • Quickstart
  • Platform overview
  • Memory model
  • Skills
  • Scheduled tasks
  • MCP server
  • Claude Code
  • Alexa+
Resources
  • Blog
  • Compare
  • Glossary
  • Live webinar
  • Creator Program
Trust
  • Privacy
  • Security
  • Terms
  • Data retention
  • Access controls
  • Vulnerability management
  • Opt in
  • Disconnect

Your personal agent, by text.

Try it free·Ajeris for business·docs.ajeris.com·© 2026 Ajeris