MCP server for ICTCRM (ICTContact backend) — read contact groups, manage contacts, add contacts to campaigns. By ICT Innovations.
ictcrm-mcp
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
A Model Context Protocol server for
**ICTCRM** from ICT Innovations.
ictcrm.com runs on the ICTContact backend, so this server speaks that RPC surface.
It lets an AI assistant read contact groups and — only when you turn writes on —
create and delete contacts and add a contact to a campaign.
Install
Requires Node.js 18 or newer.
Configure
| Variable | Required | Default | |
|----------|----------|---------|--|
| ICTCRM_BASE_URL | yes | | Server base URL, without the /rest suffix, e.g. https://your-ictcrm |
| ICTCRM_USERNAME | yes | | API account username |
| ICTCRM_PASSWORD | yes | | Password for that account |
| ICTCRM_MCP_ALLOW_WRITE | no | false | Unlock the contact write tools (see Safety) |
| ICTCRM_TIMEOUT_MS | no | 30000 | Per-request timeout |
| ICTCRM_TLS_INSECURE | no | false | Skip TLS verification — self-signed test servers only |
Claude Desktop example
Tools
Read tools are always available:
| Tool | What it does |
|------|--------------|
| ictcrm_list_contact_groups | List contact groups (id, name, description) |
Write tools appear only when ICTCRM_MCP_ALLOW_WRITE=true:
| Tool | What it does |
|------|--------------|
| ictcrm_create_contact | Create a contact in a group; returns the contact id |
| ictcrm_delete_contact | Delete a contact by id |
| ictcrm_add_contact_to_campaign | Create a contact and attach it to a campaign |
Safety
The server is **read-only by default**. Creating and deleting contacts only becomes
possible when you set ICTCRM_MCP_ALLOW_WRITE=true.
A note on listing contacts
The ICTContact backend that ICTCRM runs on exposes contact groups and contact
creation/deletion, but its "list contacts" method errors server-side, so this server
does not offer a contact-listing tool. It manages contacts and reads contact groups;
listing individual contacts is not available over the API today.
How it connects
Calls go to a form-encoded RPC API at {base}/rest/ , each carrying the
account username and password. There is no separate token to provision.