loading…
Search for a command to run...
loading…
A Model Context Protocol (MCP) server that provides AI agents with seamless access to the NetSapiens VoIP platform for user management, call analytics, and syst
A Model Context Protocol (MCP) server that provides AI agents with seamless access to the NetSapiens VoIP platform for user management, call analytics, and system administration.
License: MIT TypeScript NetSapiens API v2 MCP Protocol
🎯 Production-Ready NetSapiens Integration
Comprehensive MCP server providing AI agents with full access to NetSapiens VoIP platform
A Model Context Protocol (MCP) server that provides AI agents with seamless access to the NetSapiens VoIP platform. This server enables AI applications to interact with NetSapiens functionality including user management, call detail records, and system information.
oitvoip-mcp-server/
├── src/
│ ├── index.ts # Main MCP server implementation
│ └── netsapiens-client.ts # NetSapiens API client
├── types/
│ └── config.ts # TypeScript type definitions
├── docs/ # Documentation
├── build/ # Compiled JavaScript output
├── package.json # Project dependencies
├── tsconfig.json # TypeScript configuration
└── README.md # This file
npm install -g oitvoip-mcp-server
Clone the repository
git clone https://github.com/OITApps/oitvoip-mcp-server.git
cd oitvoip-mcp-server
Install dependencies
npm install
Build the project
npm run build
Configure in your MCP client
Add the server to your MCP client configuration with your NetSapiens credentials (see MCP Client Setup section below)
For development with hot reloading:
npm run dev
This MCP server is configured entirely through your MCP client's configuration file. No separate .env file is needed - all configuration is passed through environment variables in the MCP client config.
NETSAPIENS_API_URL: Your NetSapiens API endpoint (usually https://api.ucaasnetwork.com)NETSAPIENS_API_TOKEN: Your NetSapiens API tokenDEBUG: Set to true to enable debug logging (default: false)NETSAPIENS_TIMEOUT: API request timeout in milliseconds (default: 30000)For OpenCode, add the MCP server to your configuration file at ~/.opencode/mcp.json:
If installed via npm:
{
"mcpServers": {
"oitvoip": {
"command": "oitvoip-mcp-server",
"env": {
"NETSAPIENS_API_URL": "https://api.ucaasnetwork.com",
"NETSAPIENS_API_TOKEN": "your_api_token_here"
}
}
}
}
If installed from source:
{
"mcpServers": {
"oitvoip": {
"command": "node",
"args": ["/path/to/oitvoip-mcp-server/build/index.js"],
"env": {
"NETSAPIENS_API_URL": "https://api.ucaasnetwork.com",
"NETSAPIENS_API_TOKEN": "your_api_token_here"
}
}
}
}
For Claude Desktop, add the server to your configuration file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
If installed via npm:
{
"mcpServers": {
"oitvoip": {
"command": "oitvoip-mcp-server",
"env": {
"NETSAPIENS_API_URL": "https://api.ucaasnetwork.com",
"NETSAPIENS_API_TOKEN": "your_api_token_here"
}
}
}
}
If installed from source:
{
"mcpServers": {
"oitvoip": {
"command": "node",
"args": ["/path/to/oitvoip-mcp-server/build/index.js"],
"env": {
"NETSAPIENS_API_URL": "https://api.ucaasnetwork.com",
"NETSAPIENS_API_TOKEN": "your_api_token_here"
}
}
}
}
For Cursor, add the server to your MCP configuration file at ~/.cursor/mcp.json:
If installed via npm:
{
"mcpServers": {
"oitvoip": {
"command": "oitvoip-mcp-server",
"env": {
"NETSAPIENS_API_URL": "https://api.ucaasnetwork.com",
"NETSAPIENS_API_TOKEN": "your_api_token_here"
}
}
}
}
If installed from source:
{
"mcpServers": {
"oitvoip": {
"command": "node",
"args": ["/path/to/oitvoip-mcp-server/build/index.js"],
"env": {
"NETSAPIENS_API_URL": "https://api.ucaasnetwork.com",
"NETSAPIENS_API_TOKEN": "your_api_token_here"
}
}
}
}
/path/to/oitvoip-mcp-server with the actual path to your installationyour_api_token_here with your actual NetSapiens API token.env file is neededSearch for users in the NetSapiens system by username.
{
"name": "search_users",
"arguments": {
"query": "john.doe",
"domain": "company.com",
"limit": 20
}
}
Retrieve detailed information about a specific user.
{
"name": "get_user",
"arguments": {
"userId": "john.doe",
"domain": "company.com"
}
}
Get devices assigned to a specific user.
{
"name": "get_user_devices",
"arguments": {
"userId": "john.doe",
"domain": "company.com"
}
}
Get phone numbers for a domain.
{
"name": "get_phone_numbers",
"arguments": {
"domain": "company.com",
"limit": 50
}
}
Get details of a specific phone number.
{
"name": "get_phone_number",
"arguments": {
"domain": "company.com",
"phoneNumber": "+15551234567"
}
}
Get list of domains in the NetSapiens system.
{
"name": "get_domains",
"arguments": {}
}
Get detailed information about a specific domain.
{
"name": "get_domain",
"arguments": {
"domain": "company.com"
}
}
Get call queues for a domain.
{
"name": "get_call_queues",
"arguments": {
"domain": "company.com"
}
}
Get details of a specific call queue.
{
"name": "get_call_queue",
"arguments": {
"domain": "company.com",
"queueId": "sales-queue"
}
}
Get agents assigned to a call queue.
{
"name": "get_call_queue_agents",
"arguments": {
"domain": "company.com",
"queueId": "sales-queue"
}
}
Get agents for a domain.
{
"name": "get_agents",
"arguments": {
"domain": "company.com"
}
}
Login an agent to a call queue.
{
"name": "login_agent",
"arguments": {
"domain": "company.com",
"queueId": "sales-queue",
"agentId": "agent001"
}
}
Logout an agent from a call queue.
{
"name": "logout_agent",
"arguments": {
"domain": "company.com",
"queueId": "sales-queue",
"agentId": "agent001"
}
}
Retrieve call detail records with optional filtering.
{
"name": "get_cdr_records",
"arguments": {
"startDate": "2024-01-01",
"endDate": "2024-01-31",
"user": "john.doe",
"domain": "company.com",
"limit": 100
}
}
Get agent statistics for a domain.
{
"name": "get_agent_statistics",
"arguments": {
"domain": "company.com",
"agentId": "agent001"
}
}
Get auto attendants for a domain.
{
"name": "get_auto_attendants",
"arguments": {
"domain": "company.com"
}
}
Get answer rules for a user.
{
"name": "get_user_answer_rules",
"arguments": {
"userId": "john.doe",
"domain": "company.com"
}
}
Get specific answer rule for a user.
{
"name": "get_user_answer_rule",
"arguments": {
"userId": "john.doe",
"domain": "company.com",
"timeframe": "business"
}
}
Get greetings for a user.
{
"name": "get_user_greetings",
"arguments": {
"userId": "john.doe",
"domain": "company.com"
}
}
Get voicemails for a user.
{
"name": "get_user_voicemails",
"arguments": {
"userId": "john.doe",
"domain": "company.com"
}
}
Get music on hold files for a domain.
{
"name": "get_music_on_hold",
"arguments": {
"domain": "company.com"
}
}
Get billing information for a domain.
{
"name": "get_billing",
"arguments": {
"domain": "company.com"
}
}
Test connectivity to the NetSapiens API.
{
"name": "test_connection",
"arguments": {}
}
// Search for users with "john" in a specific domain
const result = await mcp.callTool('search_users', {
query: 'john',
domain: 'company.com',
limit: 10
});
// Get detailed information about a specific user
const result = await mcp.callTool('get_user', {
userId: 'john.doe',
domain: 'company.com'
});
// Get call records for a specific user in the last month
const result = await mcp.callTool('get_cdr_records', {
startDate: '2024-01-01',
endDate: '2024-01-31',
user: 'john.doe',
domain: 'company.com'
});
// Get devices assigned to a user
const result = await mcp.callTool('get_user_devices', {
userId: 'john.doe',
domain: 'company.com'
});
npm run build - Compile TypeScript to JavaScriptnpm run dev - Run in development mode with hot reloadingnpm start - Run the compiled servernpm run watch - Watch mode for developmentnpm run clean - Clean build directorysrc/
├── index.ts # Main server entry point
├── netsapiens-client.ts # NetSapiens API client
└── tools/ # Individual tool implementations
types/
├── config.ts # Configuration types
└── netsapiens.ts # NetSapiens API types
ListToolsRequestSchema handlerCallToolRequestSchema handlernpm audit regularly for dependency vulnerabilitiesConnection Failed
.envBuild Errors
npm run clean and rebuildTool Not Found
ListToolsRequestSchemaEnable debug logging by setting DEBUG=true in your .env file:
DEBUG=true
git checkout -b feature/amazing-feature)git commit -m 'Add some amazing feature')git push origin feature/amazing-feature)This project is licensed under the MIT License - see the LICENSE file for details.
OITVOIP provides comprehensive VoIP solutions powered by the NetSapiens platform. This MCP server enables seamless integration between AI applications and our VoIP infrastructure.
Built with ❤️ by the OITVOIP team
From frontend finesse to backend brilliance - we stack it all! ⭐
Выполни в терминале:
claude mcp add oitvoip-mcp-server -- npx Безопасность
Низкий рискАвтоматическая эвристика по публичным данным — не гарантия безопасности.