An MCP (Model Context Protocol) server that exposes the AXIS CRM API as tools for Claude Desktop, Claude Code, and other AI tools.
- 75 tools covering all AXIS CRM API modules
- Per-user authentication — bearer tokens via environment variables, not hardcoded
- Dual transport — Stdio for local use, Streamable HTTP for enterprise/remote deployment
- TypeScript with full type safety
- Test suite — 46 tests via vitest
| Module | Tools | Description |
|---|---|---|
| Leads | 6 | List, search, get, create, update, copy leads |
| Notes | 5 | CRUD operations for lead notes |
| Files | 3 | List, get info, delete lead files |
| Tasks | 6 | Task templates, CRUD, status changes |
| Forms | 7 | Webform templates, load, save, submit, submissions |
| Emails | 10 | Email templates, send custom/template emails |
| SMS | 8 | SMS templates, send custom/template SMS |
| Documents | 5 | Document library management |
| Companies | 4 | Company and panel management |
| Applications | 4 | Application management |
| Policies | 3 | Policy and payment data |
| Min-IT | 14 | Min-IT integration (clients, contracts, payments) |
- Node.js 22+ — download here
- Git — download here
- An AXIS CRM API token — obtain from your CRM at Settings > API > Create New Token
git clone https://github.com/axiscrm/MCP_Connector.git
cd MCP_Connectorgit clone https://github.com/axiscrm/MCP_Connector.git
cd MCP_Connectornpm installnpm run buildThis compiles TypeScript from src/ to build/. The compiled entry point is build/index.js.
Run the test suite to confirm everything is working:
npm testYou should see all 46 tests pass.
Claude Desktop connects to MCP servers via the claude_desktop_config.json file.
| OS | Path |
|---|---|
| Windows | %APPDATA%\Claude\claude_desktop_config.json |
| macOS | ~/Library/Application Support/Claude/claude_desktop_config.json |
If the file doesn't exist, create it.
{
"mcpServers": {
"axis-crm": {
"command": "node",
"args": ["C:\\path\\to\\MCP_Connector\\build\\index.js"],
"env": {
"AXIS_API_TOKEN": "your-api-token-here",
"AXIS_API_URL": "https://yourcompany.axiscrm.com.au"
}
}
}
}Note: On Windows, use double backslashes (
\\) in the path.
{
"mcpServers": {
"axis-crm": {
"command": "node",
"args": ["/Users/yourname/MCP_Connector/build/index.js"],
"env": {
"AXIS_API_TOKEN": "your-api-token-here",
"AXIS_API_URL": "https://yourcompany.axiscrm.com.au"
}
}
}
}After saving the config, restart Claude Desktop. The AXIS CRM tools will appear in the tools menu (hammer icon).
Claude Code can register MCP servers via the CLI.
claude mcp add axis-crm -e AXIS_API_TOKEN=your-api-token-here -e AXIS_API_URL=https://yourcompany.axiscrm.com.au -- node C:\path\to\MCP_Connector\build\index.jsclaude mcp add axis-crm \
-e AXIS_API_TOKEN=your-api-token-here \
-e AXIS_API_URL=https://yourcompany.axiscrm.com.au \
-- node /path/to/MCP_Connector/build/index.jsclaude mcp listYou should see axis-crm listed. You can then use AXIS CRM tools directly in your Claude Code conversations.
claude mcp remove axis-crmEach user can configure their own token with their own permissions. You can also set up multiple server instances with different tokens for different permission levels:
{
"mcpServers": {
"axis-crm-readonly": {
"command": "node",
"args": ["/path/to/MCP_Connector/build/index.js"],
"env": {
"AXIS_API_TOKEN": "read-only-token",
"AXIS_API_URL": "https://yourcompany.axiscrm.com.au"
}
},
"axis-crm-admin": {
"command": "node",
"args": ["/path/to/MCP_Connector/build/index.js"],
"env": {
"AXIS_API_TOKEN": "admin-token-with-full-access",
"AXIS_API_URL": "https://yourcompany.axiscrm.com.au"
}
}
}
}For team-wide access without requiring each user to clone, build, or manage tokens locally, deploy the MCP server in HTTP mode on a shared server (e.g., AWS EC2, ECS, or any Node.js host).
In HTTP mode, the server runs as a long-lived process exposing a Streamable HTTP endpoint at /mcp. Team members point their Claude Desktop or Claude Code at the remote URL instead of running a local process.
On your server (Linux example):
# Clone and build
git clone https://github.com/axiscrm/MCP_Connector.git
cd MCP_Connector
npm install
npm run buildAXIS_API_TOKEN=your-service-token \
AXIS_API_URL=https://yourcompany.axiscrm.com.au \
MCP_TRANSPORT=http \
MCP_PORT=3000 \
node build/index.jsThe server will start and log:
AXIS CRM MCP Server running on http://localhost:3000
MCP endpoint: http://localhost:3000/mcp
Create /etc/systemd/system/axis-crm-mcp.service:
[Unit]
Description=AXIS CRM MCP Server
After=network.target
[Service]
Type=simple
User=www-data
WorkingDirectory=/opt/MCP_Connector
Environment=AXIS_API_TOKEN=your-service-token
Environment=AXIS_API_URL=https://yourcompany.axiscrm.com.au
Environment=MCP_TRANSPORT=http
Environment=MCP_PORT=3000
ExecStart=/usr/bin/node build/index.js
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.targetEnable and start:
sudo systemctl enable axis-crm-mcp
sudo systemctl start axis-crm-mcpPlace behind nginx or similar for TLS and access control:
server {
listen 443 ssl;
server_name mcp.yourcompany.com;
ssl_certificate /etc/ssl/certs/yourcompany.pem;
ssl_certificate_key /etc/ssl/private/yourcompany.key;
location /mcp {
proxy_pass http://127.0.0.1:3000/mcp;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}Each team member adds the remote server to their Claude Desktop config:
{
"mcpServers": {
"axis-crm": {
"url": "https://mcp.yourcompany.com/mcp"
}
}
}Or via Claude Code:
claude mcp add axis-crm --url https://mcp.yourcompany.com/mcpNote: In remote HTTP mode, the API token is configured on the server side. Individual users do not need their own tokens — the server's token and permissions apply to all connections. For per-user tokens in a remote setup, a future version will support token passthrough via MCP authentication headers.
| Option | Best For | Notes |
|---|---|---|
| EC2 | Simple single-instance | Run directly with systemd, put behind ALB |
| ECS (Fargate) | Containerized, auto-scaling | Dockerfile: FROM node:22-alpine, env vars via task definition |
| App Runner | Simplest managed option | Auto-builds from GitHub, set env vars in console |
FROM node:22-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --production
COPY build/ ./build/
ENV MCP_TRANSPORT=http
ENV MCP_PORT=3000
EXPOSE 3000
CMD ["node", "build/index.js"]Build and push:
npm run build
docker build -t axis-crm-mcp .
docker tag axis-crm-mcp:latest <your-ecr-repo>:latest
docker push <your-ecr-repo>:latestSet AXIS_API_TOKEN and AXIS_API_URL as environment variables in your ECS task definition or App Runner service configuration.
| Variable | Required | Default | Description |
|---|---|---|---|
AXIS_API_TOKEN |
Yes | — | Your AXIS CRM API bearer token |
AXIS_API_URL |
Yes | — | Your CRM base URL (e.g. https://yourcompany.axiscrm.com.au) |
MCP_TRANSPORT |
No | stdio |
Set to http for Streamable HTTP mode |
MCP_PORT |
No | 3000 |
Port for HTTP mode |
npm run dev # Watch mode — recompiles on changes
npm run build # One-time build
npm start # Run the server (stdio mode)
npm test # Run test suite
npm run test:watch # Run tests in watch modeMCP_Connector/
├── src/
│ ├── index.ts # Entry point (transport selection)
│ ├── server.ts # MCP server setup, tool registration
│ ├── api-client.ts # HTTP client wrapper for AXIS CRM API
│ ├── api-client.test.ts # API client tests
│ ├── server.test.ts # Server creation tests
│ └── tools/
│ ├── leads.ts # Lead tools (6)
│ ├── notes.ts # Note tools (5)
│ ├── files.ts # File tools (3)
│ ├── tasks.ts # Task tools (6)
│ ├── forms.ts # Form tools (7)
│ ├── emails.ts # Email tools (10)
│ ├── sms.ts # SMS tools (8)
│ ├── documents.ts # Document tools (5)
│ ├── companies.ts # Company tools (4)
│ ├── applications.ts # Application tools (4)
│ ├── policies.ts # Policy tools (3)
│ ├── minit.ts # Min-IT tools (14)
│ └── tools.test.ts # Tool registration integration tests
├── docs/
│ └── API_Specification.md # Full AXIS CRM API reference
├── build/ # Compiled JS (git-ignored)
├── package.json
├── tsconfig.json
└── .gitignore
See docs/API_Specification.md for the full AXIS CRM API reference covering all endpoints, parameters, permissions, and response formats.