Aoexl MCP Connector
Aoexl exposes a hosted MCP server at https://mcp.aoexl.com/mcp for creating signing requests, checking status, sending reminders, and managing templates from Claude Desktop, Cursor, and other MCP-compatible clients.
This folder now serves two roles:
- the Cloudflare Worker that powers the hosted MCP endpoint
- the publishable npm wrapper (
aoexl-mcp) that lets users connect withnpx
The main monorepo can remain private. If you want a public GitHub repo later, mirror only this folder (or a cleaned copy of it) into a small public repository such as github.com/aryansingh0203/aoexl-mcp.
What Users Install
The public package is intended to be used like this:
AOEXL_API_KEY=your_key_here npx -y aoexl-mcp
The package starts a local stdio proxy via mcp-remote and forwards requests to:
https://mcp.aoexl.com/mcp
Tools
create_signing_requestget_signing_request_statuslist_signing_requestssend_signing_remindercancel_signing_requestduplicate_signing_requestreopen_signing_requestlist_templatescreate_request_from_templateget_audit_artifacts
Authentication Model
The hosted endpoint expects:
Authorization: Bearer <AOEXL_API_KEY>
Where AOEXL_API_KEY is a customer-owned key generated inside Aoexl Settings → MCP API Keys.
Internally the Worker resolves that API key to a user_id, then performs user-scoped operations against Supabase using the service-role key. This is what makes the connector multi-tenant and safe to distribute.
Local Development
Install dependencies from the repository root:
npm install
The Worker is configured in wrangler.jsonc and includes:
- the
MCP_OBJECTDurable Object binding required byMcpAgent - a route for
mcp.aoexl.com/* - the Aoexl app / Supabase URLs
Required Worker secrets:
npx wrangler secret put AOEXL_SUPABASE_ANON_KEY --cwd mcp-connector
npx wrangler secret put AOEXL_SERVICE_ROLE_KEY --cwd mcp-connector
Run locally:
npm run mcp:dev
or directly:
npm run dev --workspace=aoexl-mcp -- --ip 127.0.0.1 --port 8787
Health check:
curl http://127.0.0.1:8787/health
The /mcp endpoint is SSE/streamable HTTP, so a short test looks like:
curl --max-time 2 -i http://127.0.0.1:8787/mcp -H "Authorization: Bearer aok_live_example"
Customer Setup
Claude Desktop
{
"mcpServers": {
"aoexl-sign": {
"command": "npx",
"args": ["-y", "aoexl-mcp"],
"env": {
"AOEXL_API_KEY": "YOUR_API_KEY"
}
}
}
}
Direct mcp-remote alternative
{
"mcpServers": {
"aoexl-sign": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://mcp.aoexl.com/mcp",
"--header",
"Authorization: Bearer YOUR_API_KEY"
]
}
}
}
Publishing
npm package
This folder is prepared to publish aoexl-mcp publicly from npm without making the monorepo public.
Sanity check the package:
npm run package:check --workspace=aoexl-mcp
Publish from this folder:
cd mcp-connector
npm publish --access public
Smithery
Two viable paths:
- recommended now: publish the hosted URL
https://mcp.aoexl.com/mcpdirectly in Smithery - optional later: use the included
smithery.yamlin a small public repo that contains only this connector
The smithery.yaml included here is ready for a repo/package-based install flow that injects AOEXL_API_KEY.
Official MCP Registry
This folder includes server.json, prepared for the current registry model:
mcpNameinpackage.jsonpackagesentry foraoexl-mcpremotesentry forhttps://mcp.aoexl.com/mcp
Before publishing:
- ensure the npm package is live
- ensure
https://mcp.aoexl.com/mcpis publicly reachable - ensure the repository URL in
server.jsonpoints at a real public repo
Then publish with the current registry tooling, not the old PR flow.
Files Added For Distribution
bin/aoexl-mcp.cjs— npm-exposed stdio wrappersmithery.yaml— Smithery config schema / start commandserver.json— MCP Registry metadata
Notes
- The public package name is
aoexl-mcp. - The MCP Registry server name is
io.github.aryansingh0203/aoexl-sign. - If you later decide to use a custom namespace instead of GitHub-based naming, update both
server.jsonandpackage.json#mcpName.