sipp-mcp-server
v1.0.0
Published
Model Context Protocol server for SIPp - SIP protocol testing tool
Maintainers
Readme
SIPp MCP Server
A Model Context Protocol (MCP) server for interacting with SIPp, the SIP protocol testing tool.
Use SIPp testing capabilities directly from Claude Desktop, VS Code, or any MCP-compatible client!
Quick Start
# Clone the repository
git clone https://github.com/randybritsch/sipp-mcp-server.git
cd sipp-mcp-server
# Install dependencies
npm install
# Build the project
npm run build
# Test with MCP Inspector
npx @modelcontextprotocol/inspector node build/index.jsThen configure in Claude Desktop or VS Code.
Features
This MCP server provides tools to:
- Run SIPp Scenarios: Execute SIPp tests in UAC (client) or UAS (server) mode
- Create Custom Scenarios: Generate custom XML scenario files for testing
- Get Statistics: Parse and display SIPp test statistics
- Check Version: Verify SIPp installation and version
Prerequisites
- Node.js 16 or higher
- SIPp installed and available in your PATH
- Download from: https://github.com/SIPp/sipp
- Or install via package manager:
- Ubuntu/Debian:
sudo apt-get install sipp - macOS:
brew install sipp - Windows: Download binary from releases
- Ubuntu/Debian:
Installation
Install from npm (recommended)
npm install -g sipp-mcp-serverInstall from source
git clone <repository-url>
cd sipp-mcp-server
npm install
npm run build
npm linkSetup Instructions
Setup with Claude Desktop
Follow these steps to integrate the SIPp MCP server with Claude Desktop:
Step 1: Locate the Claude Desktop Configuration File
Open your Claude Desktop configuration file:
Windows:
# Open in notepad
notepad %APPDATA%\Claude\claude_desktop_config.json
# Or open in VS Code
code %APPDATA%\Claude\claude_desktop_config.jsonmacOS:
# Open in default editor
open ~/Library/Application\ Support/Claude/claude_desktop_config.json
# Or open in VS Code
code ~/Library/Application\ Support/Claude/claude_desktop_config.jsonStep 2: Add the SIPp MCP Server Configuration
Add the following configuration to your claude_desktop_config.json file:
Windows:
{
"mcpServers": {
"sipp": {
"command": "node",
"args": ["C:\\Users\\YOUR_USERNAME\\sipp-mcp-server\\build\\index.js"]
}
}
}macOS/Linux:
{
"mcpServers": {
"sipp": {
"command": "node",
"args": ["/absolute/path/to/sipp-mcp-server/build/index.js"]
}
}
}Important:
- Replace
YOUR_USERNAMEor the path with your actual absolute path to the project - On Windows, use double backslashes (
\\) in the JSON file - If you have other MCP servers, add the
sippentry to the existingmcpServersobject
Step 3: Restart Claude Desktop
- Completely quit Claude Desktop (not just close the window)
- Relaunch Claude Desktop
- The SIPp MCP server will start automatically
Step 4: Verify the Connection
- Look for the MCP icon (🔌) in the bottom-right corner of the Claude chat input
- Click the icon to see available tools
- You should see the SIPp tools:
run_sipp_scenario,create_sipp_scenario,get_sipp_statistics, andcheck_sipp_version
Step 5: Test the Server
Try asking Claude:
Check if SIPp is installed on my systemClaude should use the check_sipp_version tool to verify your SIPp installation.
Troubleshooting Claude Desktop
Server not appearing:
- Check that Node.js is installed:
node --version - Verify the path in your config file is correct and absolute
- Check Claude Desktop logs:
- Windows:
%APPDATA%\Claude\logs - macOS:
~/Library/Logs/Claude
- Windows:
Permission errors:
- Ensure the build/index.js file exists
- Run
npm run buildagain if needed
Setup with VS Code
The SIPp MCP server can be used with VS Code through GitHub Copilot's agent mode.
Step 1: Ensure Prerequisites
- Install the GitHub Copilot extension
- Ensure you have Copilot access with agent mode enabled
- Make sure the project is built:
npm run build
Step 2: Configure MCP in VS Code
The MCP configuration file is already created at .vscode/mcp.json:
{
"mcpServers": {
"sipp": {
"command": "node",
"args": ["c:\\Users\\randy.britsch\\sipp-mcp-server\\build\\index.js"]
}
}
}Update the path if your project is in a different location:
- Open
.vscode/mcp.json - Update the path in the
argsarray to match your project location - Use double backslashes on Windows:
c:\\Users\\...
Step 3: Alternative - User or Workspace Settings
You can also configure MCP servers in VS Code settings:
Option A: Workspace Settings (recommended for project-specific servers)
- Open VS Code Command Palette (
Ctrl+Shift+PorCmd+Shift+P) - Type "Preferences: Open Workspace Settings (JSON)"
- Add the MCP configuration:
{
"mcp.servers": {
"sipp": {
"command": "node",
"args": ["${workspaceFolder}/build/index.js"]
}
}
}Option B: User Settings (for global access)
- Open VS Code Command Palette (
Ctrl+Shift+PorCmd+Shift+P) - Type "Preferences: Open User Settings (JSON)"
- Add the MCP configuration with absolute paths
Step 4: Enable and Use MCP Tools in Copilot
- Open GitHub Copilot Chat panel (
Ctrl+Alt+IorCmd+Alt+I) - Start agent mode by typing
@workspaceor using the agent selector - The SIPp MCP tools will be available to the agent
Step 5: Test the Integration
In the Copilot Chat panel, try:
Use the SIPp tools to check if SIPp is installedOr:
Create a basic SIPp scenario file named test.xmlStep 6: Using MCP Tools in Copilot Sessions
You can reference MCP tools in your conversations:
- Check SIPp version: "Check if SIPp is installed"
- Create scenarios: "Create a register scenario for testing SIP registration"
- Run tests: "Run a SIPp UAC test with 10 calls to 192.168.1.100"
- Get statistics: "Show me the statistics from sipp_output.csv"
Troubleshooting VS Code
MCP tools not appearing:
- Verify the
.vscode/mcp.jsonpath is correct - Reload VS Code window (
Ctrl+Shift+P→ "Developer: Reload Window") - Check the Output panel (
View→Output) and select "MCP" from the dropdown
Build issues:
# Rebuild the project
npm run build
# Verify the output file exists
ls build/index.js # macOS/Linux
dir build\index.js # WindowsNode.js not found:
- Ensure Node.js is in your PATH
- Restart VS Code after installing Node.js
- Use absolute path to node:
"command": "C:\\Program Files\\nodejs\\node.exe"
Testing with MCP Inspector
For development and debugging, use the MCP Inspector:
npx @modelcontextprotocol/inspector node build/index.jsThis opens a web interface where you can:
- View all available tools
- Test tool inputs and outputs
- See real-time request/response logs
- Debug tool behavior
Available Tools
1. run_sipp_scenario
Execute a SIPp scenario for SIP protocol testing.
Parameters:
mode: "uac" (client) or "uas" (server)remoteHost: Remote host IP (required for UAC mode)remotePort: Remote port (default: 5060)localPort: Local port to bind toscenarioFile: Path to custom XML scenario filecallCount: Number of calls to makecallRate: Call rate in calls per secondduration: Maximum test duration in secondstransport: "udp", "tcp", or "tls"timeout: Global timeout in seconds
Example:
Run a UAC scenario with 10 calls to 192.168.1.100:50602. create_sipp_scenario
Create a custom SIPp XML scenario file.
Parameters:
filename: Name of the scenario filescenarioType: "basic_call", "register", or "custom"customXml: Custom XML content (for custom type)
Example:
Create a basic call scenario named test.xml3. get_sipp_statistics
Parse and display statistics from SIPp CSV output files.
Parameters:
csvFile: Path to the SIPp statistics CSV file
4. check_sipp_version
Check if SIPp is installed and display version information.
Development
# Install dependencies
npm install
# Build the project
npm run build
# Watch mode for development
npm run dev
# Test with MCP Inspector
npx @modelcontextprotocol/inspector node build/index.jsProject Structure
sipp-mcp-server/
├── src/
│ └── index.ts # Main server implementation
├── build/ # Compiled JavaScript output
├── package.json
├── tsconfig.json
└── README.mdExample Usage
Example 1: Check SIPp Installation
Ask Claude or Copilot:
Check if SIPp is installed and show me the versionExpected behavior:
- The
check_sipp_versiontool will be invoked - You'll see SIPp version information or an error if not installed
Example 2: Create a Basic Call Scenario
Ask Claude or Copilot:
Create a basic SIPp call scenario file named my_test.xmlExpected behavior:
- The
create_sipp_scenariotool will be invoked - A file named
my_test.xmlwill be created with a basic UAC call flow - The file contents will be displayed
Example 3: Run a Simple UAC Test
Ask Claude or Copilot:
Run a SIPp UAC test with 5 calls to 192.168.1.100 at a rate of 1 call per secondExpected behavior:
- The
run_sipp_scenariotool will be invoked with:- mode: "uac"
- remoteHost: "192.168.1.100"
- callCount: 5
- callRate: 1
- SIPp will execute the test
- Results and statistics will be shown
Example 4: Run a UAS (Server) Test
Ask Claude or Copilot:
Start SIPp in server mode on port 5060Expected behavior:
- The
run_sipp_scenariotool will be invoked with:- mode: "uas"
- localPort: 5060
- SIPp will listen for incoming SIP calls
Example 5: Create and Use a REGISTER Scenario
Ask Claude or Copilot:
Create a REGISTER scenario file named register_test.xml, then run it against 192.168.1.100 with 10 registrationsExpected behavior:
- First,
create_sipp_scenariocreates the file - Then,
run_sipp_scenarioexecutes it - You'll see the registration test results
Example 6: Advanced Test with Custom Parameters
Ask Claude or Copilot:
Run a SIPp test against 10.0.0.50:5080 using TCP transport, with 100 calls at 10 calls per second, maximum duration of 60 secondsExpected behavior:
- The
run_sipp_scenariotool will be invoked with:- mode: "uac"
- remoteHost: "10.0.0.50"
- remotePort: 5080
- transport: "tcp"
- callCount: 100
- callRate: 10
- duration: 60
Example 7: Analyze Test Results
Ask Claude or Copilot:
Show me the statistics from the last SIPp test in sipp_output.csvExpected behavior:
- The
get_sipp_statisticstool will be invoked - CSV contents will be parsed and displayed
- You can ask follow-up questions about the results
Troubleshooting
SIPp not found
Make sure SIPp is installed and in your PATH:
sipp -vIf not installed, follow the installation instructions for your platform.
Permission Issues
On Linux/macOS, you may need to run SIPp with appropriate permissions for binding to ports below 1024.
Connection Issues
- Verify the remote host is reachable
- Check firewall settings
- Ensure the SIP port (default 5060) is not blocked
- Try using different transport protocols (UDP, TCP, TLS)
Resources
Contributing
Contributions are welcome! Here's how you can help:
Reporting Issues
- Use the GitHub issue tracker
- Check existing issues before creating a new one
- Include SIPp version, Node.js version, and OS details
- Provide clear steps to reproduce any bugs
Submitting Pull Requests
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Run tests and build:
npm run build - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Development Guidelines
- Follow existing code style and TypeScript conventions
- Add appropriate error handling
- Update README.md if adding new features
- Test with MCP Inspector before submitting
Community
- Questions? Open a GitHub Discussion
- Bug Reports: Use GitHub Issues
- MCP Community: Join the MCP Discord
Roadmap
- [ ] Add support for more SIPp scenario templates
- [ ] Implement real-time statistics monitoring
- [ ] Add SIPp pcap file analysis tools
- [ ] Support for distributed SIPp testing
- [ ] Web-based scenario editor
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
- SIPp Project - The excellent SIP testing tool
- Model Context Protocol - The protocol specification
- Anthropic - For Claude and MCP support
Made with ❤️ for the SIP testing community
