An open API service indexing awesome lists of open source software.

https://github.com/marlburrow/teamspeak-mcp

A Model Context Protocol (MCP) server for controlling TeamSpeak from AI models like Claude
https://github.com/marlburrow/teamspeak-mcp

Last synced: 3 months ago
JSON representation

A Model Context Protocol (MCP) server for controlling TeamSpeak from AI models like Claude

Awesome Lists containing this project

README

          

# TeamSpeak MCP

[![PyPI version](https://badge.fury.io/py/teamspeak-mcp.svg)](https://badge.fury.io/py/teamspeak-mcp)
[![Python](https://img.shields.io/pypi/pyversions/teamspeak-mcp.svg)](https://pypi.org/project/teamspeak-mcp/)
[![MCP](https://img.shields.io/badge/MCP-Server-green)](https://modelcontextprotocol.io)
[![GitHub Actions](https://github.com/MarlBurroW/teamspeak-mcp/workflows/Publish%20to%20PyPI/badge.svg)](https://github.com/MarlBurroW/teamspeak-mcp/actions)
[![Docker](https://img.shields.io/badge/docker-ghcr.io-blue)](https://github.com/MarlBurroW/teamspeak-mcp/pkgs/container/teamspeak-mcp)
[![License](https://img.shields.io/github/license/MarlBurroW/teamspeak-mcp.svg)](https://github.com/MarlBurroW/teamspeak-mcp/blob/main/LICENSE)
[![GitHub stars](https://img.shields.io/github/stars/MarlBurroW/teamspeak-mcp.svg)](https://github.com/MarlBurroW/teamspeak-mcp/stargazers)
[![GitHub issues](https://img.shields.io/github/issues/MarlBurroW/teamspeak-mcp.svg)](https://github.com/MarlBurroW/teamspeak-mcp/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

## 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

```bash
# 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.

```bash
# 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

```bash
# 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

```bash
# 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):**
```bash
uvx install teamspeak-mcp
# Add to Claude Desktop config with CLI args
```

**Most Reliable (Docker):**
```bash
docker pull ghcr.io/marlburrow/teamspeak-mcp:latest
# Add to Claude Desktop config with env vars in args
```

**Most Flexible (Local):**
```bash
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
```bash
python install.py
```

### Connection test
```bash
python test_mcp.py
```

### With Docker
```bash
# 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:

```bash
# 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**
```bash
# 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:**
```json
{
"mcpServers": {
"teamspeak": {
"command": "uvx",
"args": ["teamspeak-mcp", "--host", "your-server.example.com", "--user", "mcp_user", "--password", "secure_password123"]
}
}
}
```

**For Docker installation:**
```json
{
"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
```bash
# Install development dependencies
pip install -r requirements.txt

# Run tests
python test_mcp.py

# Start MCP server
python -m teamspeak_mcp.server
```

### Docker build
```bash
# 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:**
```bash
# 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):**
```bash
# 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
```bash
# With Docker
docker logs container-name

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

## ๐Ÿ“ License

MIT