Skip to main content
Glama
TeamSpeak MCP

TeamSpeak MCP

by MarlBurroW

TeamSpeak MCP

PyPI version Python MCP GitHub Actions Docker License GitHub stars GitHub issues

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

Related MCP server: CS2 RCON MCP Server

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:

  • βœ… 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"]
    }
  }
}
  • βœ… 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 server

  • send_channel_message : Send message to a channel

  • send_private_message : Send private message

  • poke_client : Send poke (alert notification) to a user - more attention-grabbing than private message

  • list_clients : List connected clients

  • list_channels : List channels

  • create_channel : Create new channel

  • delete_channel : Delete channel

  • move_client : Move client to another channel

  • kick_client : Kick client

  • ban_client : Ban client

  • server_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 presets

  • channel_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 available

  • assign_client_to_group : Add or remove clients from server groups

  • create_server_group : Create new server groups with custom settings

  • manage_server_group_permissions : Manage permissions for server groups

πŸ†• Moderation & Bans (3 total)

  • list_bans : List all active ban rules on the server

  • manage_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 identifier

  • find_channels : Search for channels by name pattern

πŸ†• Privilege Tokens (2 total)

  • list_privilege_tokens : List all privilege keys/tokens available

  • create_privilege_token : Create new privilege tokens for server/channel access

πŸ†• File Management (3 total)

  • list_files : List files in a channel's file repository

  • get_file_info : Get detailed information about specific files

  • manage_file_permissions : List and manage active file transfers

πŸ†• Logs & Monitoring (3 total)

  • view_server_logs : View recent entries from the server log

  • add_log_entry : Add custom entries to the server log

  • get_connection_info : Get detailed connection information

πŸ†• Snapshots & Backup (2 total)

  • create_server_snapshot : Create snapshots of server configuration

  • deploy_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:

  1. 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
  2. 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

  3. 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:

  1. Tag a release: make release-patch (or release-minor/release-major)

  2. Automatic build: GitHub Actions builds and pushes multi-arch images

  3. Available everywhere: PyPI, GitHub Container Registry, and GitHub Releases

πŸ†˜ Troubleshooting

Common Issues

  1. "Connection refused"

    • Check that ServerQuery is enabled on your server

    • Verify port (default: 10011)

  2. "Authentication failed"

    • Check your ServerQuery credentials

    • Ensure user has proper permissions

  3. "Virtual server not found"

    • Check virtual server ID with serverlist

  4. "Python version error"

    • Ensure you're using Python 3.10-3.12

    • The MCP library requires Python 3.10+

  5. "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

Logs

# With Docker
docker logs container-name

# Without Docker
python -m teamspeak_mcp.server --verbose

πŸ“ License

MIT

Available Tools

40 tools
add_log_entryB

Add a custom entry to the server log

Inputs: log_level (required), message (required).

assign_client_to_groupC

Add or remove a client from a server group

Inputs: client_database_id (required), action (required), group_id (required).

ban_clientC

Ban a client from the server

Inputs: client_id (required), reason, duration.

channel_infoB

Get detailed information about a specific channel

Inputs: channel_id (required).

client_info_detailedC

Get detailed information about a specific client

Inputs: client_id (required).

connect_to_serverB

Connect to the configured TeamSpeak server

Inputs: no named parameters.

create_channelC

Create a new channel

Inputs: name (required), parent_id, permanent.

create_privilege_tokenB

Create a new privilege key/token for server or channel group access

Inputs: token_type (required), group_id (required), channel_id, description, +1 more.

create_server_groupB

Create a new server group with specified name and type

Inputs: name (required), type.

create_server_snapshotB

Create a snapshot of the virtual server configuration

Inputs: no named parameters.

delete_channelB

Delete a channel

Inputs: channel_id (required), force.

deploy_server_snapshotB

Deploy/restore a server configuration from a snapshot

Inputs: snapshot_data (required).

diagnose_permissionsA

Diagnose current connection permissions and provide troubleshooting help

Inputs: no named parameters.

find_channelsA

Search for channels by name pattern

Inputs: pattern (required).

get_connection_infoB

Get detailed connection information for the virtual server

Inputs: no named parameters.

get_file_infoB

Get detailed information about a specific file in a channel

Inputs: channel_id (required), file_path (required), channel_password.

get_instance_logsA

Get instance-level logs instead of virtual server logs

Inputs: lines, reverse, begin_pos.

kick_clientB

Kick a client from server or channel

Inputs: client_id (required), reason, from_server.

list_bansA

List all active ban rules on the virtual server

Inputs: no named parameters.

list_channelsA

List all channels on the server

Inputs: no named parameters.

list_clientsA

List all clients connected to the server

Inputs: no named parameters.

list_complaintsB

List complaints on the virtual server

Inputs: target_client_database_id.

list_filesB

List files in a channel's file repository

Inputs: channel_id (required), path, channel_password.

list_privilege_tokensA

List all privilege keys/tokens available on the server

Inputs: no named parameters.

list_server_groupsA

List all server groups available on the virtual server

Inputs: no named parameters.

manage_ban_rulesC

Create, delete or manage ban rules

Inputs: action (required), ban_id, ip, name, +3 more.

manage_channel_permissionsC

Add or remove specific permissions for a channel

Inputs: channel_id (required), action (required), permission, value.

manage_file_permissionsC

List active file transfers and manage file transfer permissions

Inputs: action (required), transfer_id, delete_partial.

manage_server_group_permissionsB

Add, remove or list permissions for a server group

Inputs: group_id (required), action (required), permission, value, +2 more.

manage_user_permissionsB

Manage user permissions: add/remove server groups, set individual permissions

Inputs: client_id (required), action (required), group_id, permission, +3 more.

move_clientB

Move a client to another channel

Inputs: client_id (required), channel_id (required).

poke_clientA

Send a poke (alert notification) to a client - more attention-grabbing than a private message

Inputs: client_id (required), message (required).

search_clientsA

Search for clients by name pattern or unique identifier

Inputs: pattern (required), search_by_uid.

send_channel_messageC

Send a message to a TeamSpeak channel

Inputs: message (required), channel_id.

send_private_messageC

Send a private message to a user

Inputs: client_id (required), message (required).

server_infoA

Get TeamSpeak server information

Inputs: no named parameters.

set_channel_talk_powerB

Set talk power requirement for a channel (useful for AFK/silent channels)

Inputs: channel_id (required), talk_power, preset.

update_channelC

Update channel properties (name, description, password, talk power, limits, etc.)

Inputs: channel_id (required), name, description, password, +4 more.

update_server_settingsC

Update virtual server settings (name, welcome message, max clients, etc.)

Inputs: name, welcome_message, max_clients, password, +4 more.

view_server_logsC

View recent entries from the virtual server log with enhanced options

Inputs: lines, reverse, instance_log, begin_pos, +6 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3/5.0

    Scored across 40 tools

    Disambiguation3/5

    Many tools have distinct purposes, but there is overlap in permission management (manage_user_permissions, assign_client_to_group, manage_channel_permissions, manage_server_group_permissions) and banning (ban_client, manage_ban_rules, list_bans). Descriptions help, but an agent might struggle to choose the correct tool for permission tasks.

    Naming Consistency4/5

    Most tools use consistent verb_noun snake_case pattern. Some verbs like 'list_', 'get_', 'manage_', 'create_' are used. A few tools use noun_first (e.g., channel_info, server_info) which breaks the pattern slightly, but overall naming is predictable.

    Tool Count3/5

    40 tools is on the high side for a TeamSpeak server, but the domain has many operations (channels, clients, groups, permissions, files, bans, logs, etc.). Still, the count feels slightly bloated; some tools could be merged (e.g., permission management).

    Completeness4/5

    The tool set covers essential operations for TeamSpeak server management: channel, client, group, permission, ban, file, log, and token management. Minor gaps exist (e.g., editing client details directly), but most workflows are supported.

    Maintenance

    ActivityInactive
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers