| Crates.io | tcl-mcp-server |
| lib.rs | tcl-mcp-server |
| version | 0.1.2 |
| created_at | 2025-07-13 19:16:44.347529+00 |
| updated_at | 2025-07-17 17:37:38.152083+00 |
| description | A Model Context Protocol (MCP) server that provides TCL (Tool Command Language) execution capabilities with namespace-based tool management and versioning. |
| homepage | |
| repository | https://crates.io/crates/tcl-mcp-server |
| max_upload_size | |
| id | 1750708 |
| size | 726,533 |
A Model Context Protocol (MCP) server that enables AI agents to execute TCL scripts and manage MCP tool ecosystems. Built with safety and developer experience in mind.
# Install and run (safe mode with Molt runtime)
cargo install tcl-mcp-server
tcl-mcp-server
# Or build from source
git clone https://github.com/cyberdione/mcp-tcl-udf-server
cd mcp-tcl-udf-server
cargo build --release
./target/release/tcl-mcp-server
# OPTIONAL: Build with full unsafe TCL runtime (requires system TCL installation)
# cargo build --release --features tcl
Choose between two TCL runtime implementations:
# Add external MCP servers
tcl-mcp-server mcp add claude-flow "Claude Flow" -- npx claude-flow@alpha mcp start
# List all servers
tcl-mcp-server mcp list
# Test connectivity
tcl-mcp-server mcp ping claude-flow
Tools are organized using a namespace system with MCP-compatible naming:
bin__tcl_execute - Execute TCL scriptsuser__alice__utils__reverse_string - User-created toolsmcp__context7__get_library_docs - External MCP server toolsDefault (Read-only mode)
tcl-mcp-server
Privileged Mode (Save/store scripts)
tcl-mcp-server --privileged
# or use the admin wrapper
tcl-mcp-server-admin
# Execute TCL directly
tcl-mcp-server run tcl_execute '{"script": "expr {2 + 2}"}'
# List available tools
tcl-mcp-server list
# Get tool information
tcl-mcp-server info tcl_execute
# Manage MCP servers
tcl-mcp-server mcp add my-server "My Server" -- node server.js
tcl-mcp-server mcp remove my-server
Claude Desktop
{
"mcpServers": {
"tcl": {
"command": "/path/to/tcl-mcp-server",
"args": ["--runtime", "molt", "--privileged"]
}
}
}
Claude Code
claude mcp add tcl /path/to/tcl-mcp-server
bin__tcl_execute - Execute TCL scripts
{
"script": "set x 5; set y 10; expr {$x + $y}"
}
bin__list_tools - List available tools
{
"namespace": "user",
"filter": "utils*"
}
docs__molt_book - Access TCL documentation
{
"topic": "basic_syntax"
}
sbin__tcl_tool_add - Create custom tools
{
"user": "alice",
"package": "utils",
"name": "reverse_string",
"version": "1.0",
"description": "Reverse a string",
"script": "return [string reverse $text]",
"parameters": [
{
"name": "text",
"description": "Text to reverse",
"required": true,
"type_name": "string"
}
]
}
sbin__mcp_add - Add MCP servers programmatically
{
"id": "context7",
"name": "Context7 Server",
"command": "npx",
"args": ["@modelcontextprotocol/server-everything"],
"auto_start": true
}
The server supports two TCL runtime implementations that must be selected at compile time:
# Build with Molt runtime only (recommended)
cargo build --release
# The resulting binary uses Molt by default
./target/release/tcl-mcp-server
# Build with full TCL runtime (requires system TCL installation)
cargo build --release --no-default-features --features tcl
# The resulting binary uses full TCL
./target/release/tcl-mcp-server
# Build with both runtimes available (maximum flexibility)
cargo build --release --features molt,tcl
# Select runtime at startup
./target/release/tcl-mcp-server --runtime molt # Safe mode
./target/release/tcl-mcp-server --runtime tcl # Complete mode
When built with multiple runtimes, you can choose at startup:
# Command line selection
tcl-mcp-server --runtime molt # Safe: Molt runtime
tcl-mcp-server --runtime tcl # Unsafe: Full TCL runtime
# Environment variable
export TCL_MCP_RUNTIME=molt
tcl-mcp-server
# Priority: CLI args > Environment > Default (Molt)
For Molt Runtime (default):
For TCL Runtime:
# Ubuntu/Debian
sudo apt-get install tcl-dev
# macOS
brew install tcl-tk
# Windows
# Install TCL from https://www.tcl-lang.org/software/tcltk/
The build process automatically generates convenience wrappers:
# Generated during build
./target/release/tcl-mcp-server-admin # Privileged mode
./target/release/tcl-mcp-server-molt # Force Molt runtime
./target/release/tcl-mcp-server-admin-molt # Privileged + Molt
./target/release/tcl-mcp-server-ctcl # Force TCL runtime
./target/release/tcl-mcp-server-admin-ctcl # Privileged + TCL
# Basic server
tcl-mcp-server mcp add my-server "My Server" -- node server.js
# With environment variables
tcl-mcp-server mcp add my-server "My Server" \
--env "NODE_ENV=production" \
--env "API_KEY=secret" \
-- node server.js
# Custom timeout and retry settings
tcl-mcp-server mcp add my-server "My Server" \
--timeout-ms 60000 \
--max-retries 5 \
-- node server.js
# List all servers
tcl-mcp-server mcp list
# Detailed view
tcl-mcp-server mcp list --detailed
# Server details
tcl-mcp-server mcp info my-server
# Manual connection
tcl-mcp-server mcp connect my-server
# Test connectivity
tcl-mcp-server mcp ping my-server
# Disconnect
tcl-mcp-server mcp disconnect my-server
# Remove server
tcl-mcp-server mcp remove my-server
⚠️ Use with caution
┌─────────────┐ ┌──────────────┐ ┌─────────────┐
│ AI Agent ├────►│ MCP Server ├────►│TCL Executor │
│ (Claude) │ │ (JSON-RPC) │ │ (Molt) │
└─────────────┘ └──────────────┘ └─────────────┘
│
▼
┌─────────────┐
│ MCP Manager │
│ (External │
│ Servers) │
└─────────────┘
tcl-mcp-server run sbin__tcl_tool_add '{
"user": "dev",
"package": "math",
"name": "fibonacci",
"version": "1.0",
"description": "Calculate Fibonacci number",
"script": "proc fib {n} { if {$n <= 1} {return $n} else {return [expr {[fib [expr {$n-1}]] + [fib [expr {$n-2}]]}]} }; return [fib $n]",
"parameters": [
{
"name": "n",
"description": "Number to calculate Fibonacci for",
"required": true,
"type_name": "integer"
}
]
}'
tcl-mcp-server run user__dev__math__fibonacci '{"n": 10}'
Query runtime capabilities for intelligent code generation:
tcl-mcp-server run tcl_runtime_info '{
"include_examples": true,
"category_filter": "safe"
}'
Runtime Feature Comparison:
| Feature | Molt Runtime | TCL Runtime |
|---|---|---|
| Memory Safety | ✅ Rust-based, memory-safe | ⚠️ C-based, manual memory management |
| File I/O | ❌ Blocked for security | ✅ Full file operations |
| System Commands | ❌ No exec or system calls |
✅ Complete system integration |
| Networking | ❌ No socket operations | ✅ Full network capabilities |
| Performance | ⚡ Fast startup, low overhead | 🐌 Slower startup, higher memory usage |
| Compatibility | 📚 Core TCL subset | 🔧 Full TCL language + extensions |
| Use Cases | Data processing, algorithms, safe scripting | System administration, complex applications |
| Documentation | Molt Book | TCL Documentation |
FROM rust:1.70 as builder
WORKDIR /app
COPY . .
RUN cargo build --release
FROM debian:bookworm-slim
COPY --from=builder /app/target/release/tcl-mcp-server /usr/bin/
COPY --from=builder /app/target/release/tcl-mcp-server-admin /usr/bin/
CMD ["/usr/bin/tcl-mcp-server"]
# Run the test suite
./scripts/run_mcp_tests.sh
# Test specific functionality
python3 tests/test_bin_exec_tool_mcp.py
Server configurations are stored in platform-appropriate locations:
~/.local/share/tcl-mcp-server/~/Library/Application Support/tcl-mcp-server/%APPDATA%\tcl-mcp-server\Server won't start
# Check runtime availability
tcl-mcp-server --runtime molt --privileged
# Enable debug logging
RUST_LOG=debug tcl-mcp-server
MCP server connection fails
# Test connectivity
tcl-mcp-server mcp ping server-id
# Check server logs
TCL_MCP_DEBUG_STDERR=1 tcl-mcp-server
Tool not found
# List available tools
tcl-mcp-server list
# Check specific namespace
tcl-mcp-server list --namespace user
MIT License - see LICENSE file for details