An MCP (Model Context Protocol) server for managing Chisel TCP/UDP tunnels. Enables AI assistants to create and manage secure tunneling connections through a remote host.
- Server Management - Start chisel servers with SOCKS5 and reverse tunnel support
- Client Connections - Connect to chisel servers and establish tunnels
- Reverse Tunneling - Create reverse port forwards for accessing internal services
- SOCKS5 Proxy - Set up SOCKS5 proxies for traffic routing
- Port Forwarding - Create local-to-remote port forwards
- Process Management - Track, monitor, and stop active tunnels
# Clone the repository
git clone https://github.com/schwarztim/sec-chisel-mcp.git
cd sec-chisel-mcp
# Install dependencies
npm install
# Build
npm run buildAdd to your Claude Desktop configuration (~/.claude.json or similar):
{
"mcpServers": {
"chisel": {
"command": "node",
"args": ["/path/to/sec-chisel-mcp/dist/index.js"],
"env": {
"CHISEL_KALI_HOST": "kali",
"CHISEL_DEFAULT_PORT": "8080"
}
}
}
}| Variable | Default | Description |
|---|---|---|
CHISEL_KALI_HOST |
kali |
SSH hostname for the remote machine |
CHISEL_DEFAULT_PORT |
8080 |
Default chisel server port |
-
Chisel installed on the remote host
# Install via script curl https://i.jpillora.com/chisel! | bash # Or via package manager (Kali/Debian) sudo apt install chisel
-
SSH access configured
- Key-based authentication recommended
- Host configured in
~/.ssh/config
| Tool | Description |
|---|---|
chisel_server |
Start a chisel server with SOCKS5 and reverse tunnel support |
chisel_client |
Connect to a chisel server and create tunnels |
chisel_reverse |
Start a server configured for reverse tunneling |
chisel_socks |
Start a SOCKS5 proxy server |
chisel_forward |
Create a local port forward tunnel |
chisel_status |
Check status of active tunnels |
chisel_stop |
Stop one or all tunnels |
chisel_list_processes |
List all chisel processes on the remote host |
chisel_version |
Check chisel installation and version |
{
"tool": "chisel_server",
"arguments": {
"port": "8080",
"reverse": true,
"socks5": true,
"auth": "user:password"
}
}Expose an internal service externally:
{
"tool": "chisel_client",
"arguments": {
"server": "http://server:8080",
"remotes": ["R:2222:localhost:22"]
}
}{
"tool": "chisel_socks",
"arguments": {
"port": "8080"
}
}Connect a client:
chisel client <server>:8080 socksUse with proxychains:
# Add to /etc/proxychains.conf
socks5 127.0.0.1 1080Forward local traffic to a remote destination:
{
"tool": "chisel_forward",
"arguments": {
"server": "http://pivot:8080",
"localPort": "3389",
"remoteHost": "10.10.10.100",
"remotePort": "3389"
}
}{
"tool": "chisel_status",
"arguments": {}
}{
"tool": "chisel_stop",
"arguments": {
"force": false
}
}Chisel uses the following format for remote specifications:
<local-host>:<local-port>:<remote-host>:<remote-port>/<protocol>
Examples:
3000- Forward local 3000 to server's 30003000:google.com:80- Tunnel to external hostR:2222:localhost:22- Reverse port forwardsocks- SOCKS5 proxy connectionR:socks- Reverse SOCKS proxy
- Authentication: Use
--auth user:passwordfor production deployments - Fingerprint Verification: Use
--fingerprinton clients to verify server identity - TLS Encryption: Consider using
--tls-keyand--tls-certfor encrypted transport - Traffic Profile: Chisel traffic appears as HTTP/WebSocket traffic, useful for firewall evasion
# Run in development mode
npm run dev
# Build for production
npm run build
# Start the server
npm startMIT License - see LICENSE for details.