MarlBurroW/teamspeak-mcp
If you are the rightful owner of teamspeak-mcp and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
TeamSpeak MCP is a Model Context Protocol server designed to facilitate the control of TeamSpeak servers through AI models like Claude.
TeamSpeak MCP
A Model Context Protocol (MCP) server for controlling TeamSpeak from AI models like Claude.
Requirements
- Python 3.10-3.12
- Docker (optional, for containerized deployment)
- TeamSpeak 3 Server with ServerQuery enabled
Features
- ๐ฏ Connect to TeamSpeak servers
- ๐ฌ Send messages to channels, private messages, and pokes (alert notifications)
- ๐ List connected users and detailed client information
- ๐ง Advanced channel management (create, delete, update properties, permissions)
- ๐ AFK/Silent channel setup with talk power presets
- ๐ต Voice control (mute, unmute, kick, ban)
- ๐ก๏ธ Fine-grained permission management per channel
- ๐ฅ๏ธ Virtual server configuration (name, description, limits, welcome messages)
- ๐ฅ User permission management (server groups, individual permissions)
- ๐ Comprehensive server and channel diagnostics
- ๐ Enhanced logging system with:
- Automatic log configuration
- Log diagnostics
- Instance-level logs
- Advanced filtering
- Real-time notifications
- โ๏ธ 39 powerful tools for complete TeamSpeak automation
๐ฏ Integration Methods Overview
TeamSpeak MCP offers multiple integration methods to fit your setup and preferences:
๐ฆ Method 1: PyPI Package (Recommended for most users)
- โ Easiest setup - One command installation
- โ Automatic updates via standard package managers
- โ Standard MCP pattern - Compatible with Claude Desktop examples
- โ No Docker required - Pure Python implementation
# Installation
uvx install teamspeak-mcp
# Usage
uvx teamspeak-mcp --host your-server.com --user your-user --password your-password
# Claude Desktop config (CLI args)
{
"mcpServers": {
"teamspeak": {
"command": "uvx",
"args": ["teamspeak-mcp", "--host", "your-server.com", "--user", "your-user", "--password", "your-password"]
}
}
}
๐ณ Method 2: Pre-built Docker Images (Recommended for containers)
- โ No dependencies - Everything included
- โ Version consistency - Immutable deployments
- โ Easy scaling - Works with orchestration
- โ Cross-platform - Works anywhere Docker runs
๐ก Note: We use
-e
flags in args instead of the"env": {}
field because Claude Desktop's environment variable handling can be unreliable. The args method ensures consistent variable passing.
# Installation
docker pull ghcr.io/marlburrow/teamspeak-mcp:latest
# Claude Desktop config (env vars in args)
{
"mcpServers": {
"teamspeak": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"-e", "TEAMSPEAK_HOST=your-server.com",
"-e", "TEAMSPEAK_USER=your-user",
"-e", "TEAMSPEAK_PASSWORD=your-password",
"ghcr.io/marlburrow/teamspeak-mcp:latest"
]
}
}
}
๐ Method 3: Local Python Installation (For developers)
- โ Full control - Access to source code
- โ Customizable - Modify for specific needs
- โ Development - Contribute to the project
- โ ๏ธ More setup - Requires Python environment management
# Installation
git clone https://github.com/MarlBurroW/teamspeak-mcp.git
cd teamspeak-mcp && pip install -r requirements.txt
# Claude Desktop config (Python module)
{
"mcpServers": {
"teamspeak": {
"command": "python",
"args": ["-m", "teamspeak_mcp.server", "--host", "your-server.com", "--user", "your-user", "--password", "your-password"]
}
}
}
๐๏ธ Method 4: Local Docker Build (For customization)
- โ Custom builds - Modify Dockerfile as needed
- โ Offline capability - No external dependencies
- โ Version control - Pin to specific commits
- โ ๏ธ Build time - Requires local Docker build
# Installation
git clone https://github.com/MarlBurroW/teamspeak-mcp.git
cd teamspeak-mcp && docker build -t teamspeak-mcp .
# Claude Desktop config (local image)
{
"mcpServers": {
"teamspeak": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"-e", "TEAMSPEAK_HOST=your-server.com",
"-e", "TEAMSPEAK_USER=your-user",
"-e", "TEAMSPEAK_PASSWORD=your-password",
"teamspeak-mcp"
]
}
}
}
๐ฏ Which Method Should You Choose?
Use Case | Recommended Method | Why |
---|---|---|
First time user | PyPI Package (uvx ) | Easiest setup, standard MCP pattern |
Production deployment | Pre-built Docker | Reliable, versioned, no dependencies |
CI/CD environments | Pre-built Docker | Consistent, fast deployment |
Development/Contributing | Local Python | Full access to source code |
Custom modifications | Local Docker Build | Controlled build process |
Corporate environments | Local Docker Build | No external dependencies |
๐ก Quick Start Examples
Fastest (PyPI):
uvx install teamspeak-mcp
# Add to Claude Desktop config with CLI args
Most Reliable (Docker):
docker pull ghcr.io/marlburrow/teamspeak-mcp:latest
# Add to Claude Desktop config with env vars in args
Most Flexible (Local):
git clone https://github.com/MarlBurroW/teamspeak-mcp.git
cd teamspeak-mcp && pip install -r requirements.txt
# Add to Claude Desktop config with Python module
๐ Quick Start
Automatic installation script
python install.py
Connection test
python test_mcp.py
With Docker
# Build image
docker build -t teamspeak-mcp .
# Test with Docker
docker run --rm -it \
-e TEAMSPEAK_HOST=your-server.com \
-e TEAMSPEAK_USER=your-user \
-e TEAMSPEAK_PASSWORD=your-password \
teamspeak-mcp test
๐ TeamSpeak Server Setup
Before using TeamSpeak MCP, you need to configure your TeamSpeak server credentials:
๐ Required Information
Parameter | Description | Example |
---|---|---|
TEAMSPEAK_HOST | Your server IP or domain | ts.example.com or 192.168.1.100 |
TEAMSPEAK_PORT | ServerQuery port (default: 10011) | 10011 |
TEAMSPEAK_USER | ServerQuery username | mcp_user |
TEAMSPEAK_PASSWORD | ServerQuery password | secure_password123 |
TEAMSPEAK_SERVER_ID | Virtual server ID (usually 1) | 1 |
๐ง How to Get Your Credentials
Step 1: Enable ServerQuery
On your TeamSpeak server, ensure ServerQuery is enabled:
- Check
ts3server.ini
:query_port=10011
- Default enabled on most installations
Step 2: Get Admin Access
- First installation: Check server logs for admin token:
token=AAAA...
- Existing server: Use your admin credentials
Step 3: Create MCP User
Connect to ServerQuery and create a dedicated user:
# Connect via telnet or putty to your-server:10011
telnet your-server.example.com 10011
# Login with admin
login serveradmin YOUR_ADMIN_PASSWORD
# Create dedicated user for MCP
serverqueryadd client_login_name=mcp_user client_login_password=secure_password123
# Grant necessary permissions (optional - adjust as needed)
servergroupaddclient sgid=6 cldbid=USER_DB_ID
Step 4: Test Connection
# Test with our connection script
python test_mcp.py
# Or with Docker
docker run --rm -it \
-e TEAMSPEAK_HOST=your-server.example.com \
-e TEAMSPEAK_USER=mcp_user \
-e TEAMSPEAK_PASSWORD=secure_password123 \
ghcr.io/marlburrow/teamspeak-mcp:latest test
๐ก Quick Configuration Examples
For PyPI installation:
{
"mcpServers": {
"teamspeak": {
"command": "uvx",
"args": ["teamspeak-mcp", "--host", "your-server.example.com", "--user", "mcp_user", "--password", "secure_password123"]
}
}
}
For Docker installation:
{
"mcpServers": {
"teamspeak": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"-e", "TEAMSPEAK_HOST=your-server.example.com",
"-e", "TEAMSPEAK_USER=mcp_user",
"-e", "TEAMSPEAK_PASSWORD=secure_password123",
"ghcr.io/marlburrow/teamspeak-mcp:latest"
]
}
}
}
โ ๏ธ Security Note: Create a dedicated ServerQuery user with minimal permissions. Never use your admin account for automated tools.
Usage
Once configured, you can use these commands with Claude:
Basic Commands
- "Connect to TeamSpeak server"
- "Send message 'Hello everyone!' to general channel"
- "Send private message 'Can you join me?' to user 5"
- "Poke user 12 with message 'Urgent: Please check the announcement!'"
- "List connected users"
- "Create temporary channel called 'Meeting'"
- "Move user John to private channel"
- "Show me server info"
๐ Advanced Commands
- "Make channel 5 silent so nobody can talk" โ Uses
set_channel_talk_power
with preset "silent" - "Set up a moderated welcome channel" โ Uses
set_channel_talk_power
with preset "moderated" - "Update channel 3 to set max clients to 10 and add password 'secret'" โ Uses
update_channel
- "Show me detailed information about channel 7" โ Uses
channel_info
- "Get comprehensive details about client 12" โ Uses
client_info_detailed
- "List all permissions for channel 4" โ Uses
manage_channel_permissions
with action "list" - "Add talk power permission to channel 6" โ Uses
manage_channel_permissions
with action "add" - "Change server name to 'My Gaming Server' and set max clients to 100" โ Uses
update_server_settings
- "Set welcome message to 'Welcome to our server!'" โ Uses
update_server_settings
- "Add user 15 to admin group 6" โ Uses
manage_user_permissions
with action "add_group" - "Remove user 8 from moderator group" โ Uses
manage_user_permissions
with action "remove_group" - "Show all server groups for user 12" โ Uses
manage_user_permissions
with action "list_groups" - "Give user 20 the 'b_client_kick' permission with value 75" โ Uses
manage_user_permissions
with action "add_permission" - "Diagnose my current permissions and connection" โ Uses
diagnose_permissions
- "Check why I can't list clients" โ Uses
diagnose_permissions
๐ฏ Available Tools (39 total)
Core Tools (12 total)
connect_to_server
: Connect to TeamSpeak serversend_channel_message
: Send message to a channelsend_private_message
: Send private messagepoke_client
: Send poke (alert notification) to a user - more attention-grabbing than private messagelist_clients
: List connected clientslist_channels
: List channelscreate_channel
: Create new channeldelete_channel
: Delete channelmove_client
: Move client to another channelkick_client
: Kick clientban_client
: Ban clientserver_info
: Get server information
๐ Advanced Management Tools (8 total)
update_channel
: Update channel properties (name, description, password, talk power, limits, etc.)set_channel_talk_power
: Quick setup for AFK/silent/moderated channels with presetschannel_info
: Get detailed channel information (permissions, codec, type, etc.)manage_channel_permissions
: Fine-grained permission control (add/remove/list)client_info_detailed
: Comprehensive client details (platform, version, status, etc.)update_server_settings
: Update virtual server settings (name, welcome message, max clients, password, host message, default groups)manage_user_permissions
: Complete user permission management (add/remove server groups, set individual permissions, list assignments)diagnose_permissions
: Diagnose current connection permissions and troubleshoot issues
๐ Server Groups Management (4 total)
list_server_groups
: List all server groups availableassign_client_to_group
: Add or remove clients from server groupscreate_server_group
: Create new server groups with custom settingsmanage_server_group_permissions
: Manage permissions for server groups
๐ Moderation & Bans (3 total)
list_bans
: List all active ban rules on the servermanage_ban_rules
: Create, delete or manage ban rules (IP, name, UID-based)list_complaints
: List complaints against users
๐ Search & Discovery (2 total)
search_clients
: Search for clients by name pattern or unique identifierfind_channels
: Search for channels by name pattern
๐ Privilege Tokens (2 total)
list_privilege_tokens
: List all privilege keys/tokens availablecreate_privilege_token
: Create new privilege tokens for server/channel access
๐ File Management (3 total)
list_files
: List files in a channel's file repositoryget_file_info
: Get detailed information about specific filesmanage_file_permissions
: List and manage active file transfers
๐ Logs & Monitoring (3 total)
view_server_logs
: View recent entries from the server logadd_log_entry
: Add custom entries to the server logget_connection_info
: Get detailed connection information
๐ Snapshots & Backup (2 total)
create_server_snapshot
: Create snapshots of server configurationdeploy_server_snapshot
: Deploy/restore server configuration from snapshots
๐ง Development
Local testing
# Install development dependencies
pip install -r requirements.txt
# Run tests
python test_mcp.py
# Start MCP server
python -m teamspeak_mcp.server
Docker build
# Build
docker build -t teamspeak-mcp .
# Test
docker run --rm -it teamspeak-mcp
๐ Security
- ๐ Never commit credentials in code
- ๐ก๏ธ Use ServerQuery accounts with limited privileges
- ๐ Configure firewall to restrict ServerQuery port access
- ๐ Change ServerQuery passwords regularly
๐ Automatized Release Workflow (For Maintainers)
This project uses fully automated releases via GitHub Actions. No manual PyPI uploads needed!
How it works:
-
One Command Release:
# Patch release (1.0.3 -> 1.0.4) make release-patch # Minor release (1.0.3 -> 1.1.0) make release-minor # Major release (1.0.3 -> 2.0.0) make release-major
-
Automatic Process:
- โ
Bumps version in
pyproject.toml
- โ Creates git commit and tag
- โ Pushes to GitHub
- โ
GitHub Actions triggers automatically:
- ๐จ Builds Python package
- ๐งช Tests on TestPyPI first
- ๐ฆ Publishes to PyPI
- ๐ณ Builds and publishes Docker images
- ๐ Creates GitHub release with changelog
- โ
Bumps version in
-
Setup (One-time):
# Show setup instructions make setup-pypi
Result:
- PyPI:
uvx install teamspeak-mcp
gets the new version - Docker:
ghcr.io/marlburrow/teamspeak-mcp:v1.0.4
available - GitHub: Automatic release with changelog
- No manual work needed! ๐
๐ฆ Release Process
This project uses automated GitHub Actions for building and publishing Docker images:
- Tag a release:
make release-patch
(orrelease-minor
/release-major
) - Automatic build: GitHub Actions builds and pushes multi-arch images
- Available everywhere: PyPI, GitHub Container Registry, and GitHub Releases
๐ Troubleshooting
Common Issues
-
"Connection refused"
- Check that ServerQuery is enabled on your server
- Verify port (default: 10011)
-
"Authentication failed"
- Check your ServerQuery credentials
- Ensure user has proper permissions
-
"Virtual server not found"
- Check virtual server ID with
serverlist
- Check virtual server ID with
-
"Python version error"
- Ensure you're using Python 3.10-3.12
- The MCP library requires Python 3.10+
-
"Docker environment variables not working"
- Use
-e
flags in args instead of the"env": {}
field for better compatibility - Ensure environment variables are passed correctly in Docker args
- Check that all required variables are provided: TEAMSPEAK_HOST, TEAMSPEAK_USER, TEAMSPEAK_PASSWORD
- Use
Logs
# With Docker
docker logs container-name
# Without Docker
python -m teamspeak_mcp.server --verbose
๐ License
MIT