This guide connects an AI agent, such as Claude, to your own on-premise Voicent Gateway. The agent can then place calls and texts, run campaigns, check results, and read and update CRM records, within the limits you set.
Out of the box it can call or text any number and use the CRM tools, so set your limits before you connect. Campaigns stay off until you turn them on. A tool that's turned off doesn't exist for the agent.
Requires Voicent Gateway 10.10.3 or later.
Before you start:
.exe. If your agent will use audio, import or export files, it has to be the gateway machine.Your MCP client starts the server on its own machine, and the server sends requests to the gateway. With the default settings, all three run on one machine.
Your dialer and its data live on your server. Whatever your agent reads or sends, such as phone numbers, message text, results and customer records, also passes through the AI client you choose and possibly that client's cloud model. Check that this is acceptable for your data.
The MCP server itself is free. The Workflow license plus Enterprise Edition that it requires is a one-time license. Ask sales@voicent.com for a quote.
Annual support is strongly recommended. It costs 30% of the purchase price per year, with a $99/month minimum. Without support, we won't be able to help you if the software fails to work for any reason.
The licensed software keeps working on the same computer and the same version without support, but there is no technical support, new releases, or license transfer to another computer.
Keep port 8155 off the internet. Do this before you connect anything.
The limits in this guide apply only to requests that go through the MCP server. Anyone who reaches port 8155 directly can bypass them. The gateway's own interface can do far more than the MCP server allows, including running programs on the gateway machine. Requests from other machines need the gateway's Remote Connect Password, so set your own in Voicent App > Setup > Options > Control on the gateway computer. Some of the gateway's call flow pages have no password check, so a password alone doesn't protect a gateway that others can reach.
Download voicent-mcp.exe from the GitHub release page and put it in a folder of your choice. It runs without Deno.
The examples below use C:\voicent-mcp\voicent-mcp.exe. Replace this with your own path, and always use the full path.
If you have the source, you can test it and build it yourself with Deno:
deno task test # tests against a fake gateway; nothing is dialed
deno task start # run from source
deno task compile # build dist/voicent-mcp.exe, which runs without Deno
The setup below works when the gateway is on the same machine. Before you connect: with only these settings, the agent can call or text any number, and read and change CRM records. Add the settings in Set your limits to the env section first. The server repeats these warnings in its log each time it starts.
After connecting, ask your agent to list its Voicent tools, and check that only the tools you expect appear.
Add this to .mcp.json in your project folder. In interactive sessions, Claude Code asks you to approve a server from this file before using it. Non-interactive runs, such as claude -p, load it without asking.
{
"mcpServers": {
"voicent": {
"command": "C:\\voicent-mcp\\voicent-mcp.exe",
"env": {
"VOICENT_GATEWAY_URL": "http://localhost:8155"
}
}
}
}
Or add it from the command line, for your use only:
claude mcp add --env VOICENT_GATEWAY_URL=http://localhost:8155 --transport stdio voicent -- C:\voicent-mcp\voicent-mcp.exe
Check the connection with claude mcp list, or /mcp inside Claude Code.
%APPDATA%\Claude\claude_desktop_config.json.voicent entry shown above under mcpServers. Keep any other servers already listed there.If the server doesn't appear, check the logs in %APPDATA%\Claude\logs, starting with mcp.log and mcp-server-voicent.log.
Add this to .cursor/mcp.json in your project, or to ~/.cursor/mcp.json to use it in all projects:
{
"mcpServers": {
"voicent": {
"type": "stdio",
"command": "C:\\voicent-mcp\\voicent-mcp.exe",
"env": {
"VOICENT_GATEWAY_URL": "http://localhost:8155"
}
}
}
}
Add this to .vscode/mcp.json in your workspace, or to your user mcp.json. VS Code uses servers as the top-level key, not mcpServers.
{
"servers": {
"voicent": {
"type": "stdio",
"command": "C:\\voicent-mcp\\voicent-mcp.exe",
"env": {
"VOICENT_GATEWAY_URL": "http://localhost:8155"
}
}
}
}
Use the MCP: List Servers command to start, restart or view the output of the server.
Any client that can start a local MCP server needs the same three things: the command (the full path to voicent-mcp.exe), the environment variables, and a server name. See your client's documentation for its file format. This guide covers local setups only, so a client that can only connect to a server by URL can't use these steps.
Set VOICENT_GATEWAY_URL to the gateway's private address, and set VOICENT_PASSWORD to the gateway's Remote Connect Password, set on the gateway computer in Voicent App > Setup > Options > Control. If you use a user's password instead, also set VOICENT_USERNAME to that user's login name. File tools won't work in this setup, because the gateway reads file paths on its own machine.
Don't put passwords in a file you commit to source control. Use the client's own method instead:
"VOICENT_PASSWORD": "${VOICENT_PASSWORD}" reads the value from an environment variable."VOICENT_PASSWORD": "${env:VOICENT_PASSWORD}" does the same.${input:...} variable, which prompts for the value and stores it securely.| Available when | Tools |
|---|---|
| Always | call_status, campaign_status, import_status |
On unless VOICENT_ALLOW_CALLS=0 | call_text, call_audio, call_ivr, send_sms, call_remove |
On unless VOICENT_ALLOW_CRM=0 | crm_get_field, crm_add_or_update, crm_set_field, crm_add_note, crm_schedule_callback, crm_notify_agent |
Off unless VOICENT_ALLOW_CAMPAIGNS=1 | campaign_import_list, campaign_upload_audio, campaign_export, campaign_run_autodialer, campaign_run_text, campaign_run_email |
With the default settings, 14 of the 20 tools are on: the three status tools, the five call and text tools, and the six CRM tools. Tools that use audio, import or export files also need VOICENT_FILE_ROOT. Check Known limits before relying on call_ivr, campaign_run_email, or CRM lookups by phone number or email.
Set these in the env section of your client's configuration.
| Variable | Purpose |
|---|---|
VOICENT_GATEWAY_URL | Gateway address. Default: http://localhost:8155 |
VOICENT_ALLOW_CALLS | 0 turns off single calls and texts. Default: on |
VOICENT_ALLOWED_NUMBERS | Limits single calls and texts to these comma-separated numbers. Default: any number. Does not apply to campaigns |
VOICENT_ALLOW_CRM | 0 turns off the CRM tools. Default: on |
VOICENT_ALLOW_CAMPAIGNS | 1 turns on campaigns and list imports. Default: off |
VOICENT_FILE_ROOT | Folder that audio, import and export files must stay inside. File tools refuse to run without it |
VOICENT_PASSWORD | The gateway's Remote Connect Password, needed when the gateway isn't on this machine |
VOICENT_USERNAME | Login name, if VOICENT_PASSWORD is a user's password instead of the Remote Connect Password. In cloud-service mode, the account owner uses admin, not an email address |
VOICENT_ACCOUNT_ID | Account ID (cc_card_id), needed only for a gateway in cloud-service mode |
VOICENT_TIMEOUT_MS | Request timeout in milliseconds. Default: 30000 |
By default, the agent can call or text any number, and read and change CRM records. Decide what it may do, and add those settings to the env section before you connect.
| To | Add |
|---|---|
| Limit calls and texts to certain numbers | "VOICENT_ALLOWED_NUMBERS": "650-555-0100,650-555-0101" |
| Turn calls and texts off | "VOICENT_ALLOW_CALLS": "0" |
| Turn the CRM tools off | "VOICENT_ALLOW_CRM": "0" |
| Turn campaigns on | "VOICENT_ALLOW_CAMPAIGNS": "1" |
| Allow audio, import and export files | "VOICENT_FILE_ROOT": "C:\\voicent-files" |
We recommend turning things on one at a time, and testing each before going further. These steps reduce risk but don't remove it.
"env": {
"VOICENT_GATEWAY_URL": "http://localhost:8155",
"VOICENT_ALLOW_CALLS": "0",
"VOICENT_ALLOW_CRM": "0"
}
Confirm that only the three status tools appear: call_status, campaign_status and import_status.
Remove VOICENT_ALLOW_CALLS, and replace YOUR_TEST_NUMBER with a phone you control. Then restart your client or the server.
"env": {
"VOICENT_GATEWAY_URL": "http://localhost:8155",
"VOICENT_ALLOWED_NUMBERS": "YOUR_TEST_NUMBER",
"VOICENT_ALLOW_CRM": "0"
}
Ask your agent to send a short text to that number, then to check the result. After that, ask it to text a second phone you control that isn't on the list, and confirm that the request is refused. Never use someone else's number for this test.
Add numbers only as you need them. Without VOICENT_ALLOWED_NUMBERS, the agent can call or text any number, so leave it out only if that is what you want.
Remove VOICENT_ALLOW_CRM, then restart. Before you do, note how these tools work:
DO_NOT_CALL and DO_NOT_EMAIL to yes, but only a person can clear them. List imports are different; see Step 4.crm_add_or_update only fills empty values, unless the agent sets overwrite to true.crm_notify_agent are plain text.Test first with a record you created for testing.
VOICENT_ALLOWED_NUMBERS does not apply to campaigns. A campaign contacts everyone on its list.
"env": {
"VOICENT_GATEWAY_URL": "http://localhost:8155",
"VOICENT_ALLOWED_NUMBERS": "YOUR_TEST_NUMBER",
"VOICENT_ALLOW_CAMPAIGNS": "1",
"VOICENT_FILE_ROOT": "C:\\voicent-mcp\\files"
}
Keep VOICENT_ALLOWED_NUMBERS from Step 2 until you decide the agent may call any number.
campaign_import_list can update any column of matching contacts, including clearing DO_NOT_CALL, from a file in VOICENT_FILE_ROOT. Only put files there that you'd import yourself.VOICENT_FILE_ROOT at a folder that holds only files the agent may use. Don't use a drive root or a user profile folder.VOICENT_ALLOW_CALLS and VOICENT_ALLOW_CRM to 0, and leave campaign settings out.These limits protect against mistakes through the MCP server. They don't protect a gateway exposed to the network, and they aren't a do-not-call or legal compliance feature.
You are responsible for making sure your calls, texts and emails are lawful, including when an AI agent starts them. Nothing in this software or this guide makes your calling legally compliant, and this guide isn't legal advice.
In this setup, the AI agent operates the dialer. This guide isn't about having AI voices talk to the people you call, and we don't promote that use. call_text reads your text to the person called using text-to-speech, so rules on automated or artificial voice calls can apply to it.
call_ivr can't check that an app is outbound. Use outbound apps only. It refuses names that aren't deployed.campaign_run_email needs an outgoing email account saved on the gateway, named by its address in smtp_account.| What you see | What to check |
|---|---|
| Call, text or CRM tools are missing | Check that VOICENT_ALLOW_CALLS or VOICENT_ALLOW_CRM isn't set to 0, then restart your client or the server |
| Campaign tools are missing | Set VOICENT_ALLOW_CAMPAIGNS to 1, then restart your client or the server |
| A call or text to a number is refused | If VOICENT_ALLOWED_NUMBERS is set, the number must be on it. It must also be a single number in a valid format |
| A CRM tool finds the wrong customer | There may be duplicate records with that phone number or email. Use the record ID instead |
| Requests to a gateway on another machine are refused | Set VOICENT_PASSWORD to the gateway's Remote Connect Password, set on the gateway computer in Voicent App > Setup > Options > Control |
| A file tool refuses to run | Set VOICENT_FILE_ROOT, and keep the file inside that folder. The server must run on the gateway machine |
| The client can't start the server | Use the full path to the .exe, with \\ between folders in JSON, and check the file's syntax |
| Requests fail or time out | Check that the gateway is running and VOICENT_GATEWAY_URL is correct. Raise VOICENT_TIMEOUT_MS if needed |
For licensing and quotes, email sales@voicent.com. For other product help, see Voicent Support. The gateway's own interfaces are described in the developer documentation.