TCL MCP 服务器是一个模型上下文协议(MCP)服务器,它使 AI 代理能够执行 TCL 脚本并管理 MCP 工具生态系统。该项目在设计时充分考虑了安全性和开发者体验。
# 安装并运行(使用 Molt 运行时的安全模式)
cargo install tcl-mcp-server
tcl-mcp-server
# 或者从源代码构建
git clone https://github.com/cyberdione/mcp-tcl-udf-server
cd mcp-tcl-udf-server
cargo build --release
./target/release/tcl-mcp-server
# 可选:使用完整的不安全 TCL 运行时进行构建(需要系统安装 TCL)
# cargo build --release --features tcl
可以在两种 TCL 运行时实现之间进行选择:
# 默认(只读模式)
tcl-mcp-server
# 特权模式(保存/存储脚本)
tcl-mcp-server --privileged
# 或者使用管理包装器
tcl-mcp-server-admin
# 直接执行 TCL
tcl-mcp-server run tcl_execute '{"script": "expr {2 + 2}"}'
# 列出可用工具
tcl-mcp-server list
# 获取工具信息
tcl-mcp-server info tcl_execute
# 管理 MCP 服务器
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
# 1. 添加工具(需要特权模式)
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"
}
]
}'
# 2. 使用工具
tcl-mcp-server run user__dev__math__fibonacci '{"n": 10}'
tcl-mcp-server run tcl_runtime_info '{
"include_examples": true,
"category_filter": "safe"
}'
bin__tcl_execute
- 执行 TCL 脚本
{
"script": "set x 5; set y 10; expr {$x + $y}"
}
bin__list_tools
- 列出可用工具
{
"namespace": "user",
"filter": "utils*"
}
docs__molt_book
- 访问 TCL 文档
{
"topic": "basic_syntax"
}
sbin__tcl_tool_add
- 创建自定义工具
{
"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
- 以编程方式添加 MCP 服务器
{
"id": "context7",
"name": "Context7 Server",
"command": "npx",
"args": ["@modelcontextprotocol/server-everything"],
"auto_start": true
}
服务器支持两种 TCL 运行时实现,必须在编译时选择:
# 仅使用 Molt 运行时进行构建(推荐)
cargo build --release
# 生成的二进制文件默认使用 Molt
./target/release/tcl-mcp-server
# 使用完整的 TCL 运行时进行构建(需要系统安装 TCL)
cargo build --release --no-default-features --features tcl
# 生成的二进制文件使用完整的 TCL
./target/release/tcl-mcp-server
# 构建时同时支持两种运行时(最大灵活性)
cargo build --release --features molt,tcl
# 在启动时选择运行时
./target/release/tcl-mcp-server --runtime molt # 安全模式
./target/release/tcl-mcp-server --runtime tcl # 完整模式
当使用多个运行时进行构建时,可以在启动时选择:
# 命令行选择
tcl-mcp-server --runtime molt # 安全:Molt 运行时
tcl-mcp-server --runtime tcl # 不安全:完整 TCL 运行时
# 环境变量
export TCL_MCP_RUNTIME=molt
tcl-mcp-server
# 优先级:命令行参数 > 环境变量 > 默认(Molt)
对于 Molt 运行时(默认):
对于 TCL 运行时:
# Ubuntu/Debian
sudo apt-get install tcl-dev
# macOS
brew install tcl-tk
# Windows
# 从 https://www.tcl-lang.org/software/tcltk/ 安装 TCL
构建过程会自动生成便捷包装器:
# 构建时生成
./target/release/tcl-mcp-server-admin # 特权模式
./target/release/tcl-mcp-server-molt # 强制使用 Molt 运行时
./target/release/tcl-mcp-server-admin-molt # 特权 + Molt
./target/release/tcl-mcp-server-ctcl # 强制使用 TCL 运行时
./target/release/tcl-mcp-server-admin-ctcl # 特权 + TCL
# 基本服务器
tcl-mcp-server mcp add my-server "My Server" -- node server.js
# 带有环境变量
tcl-mcp-server mcp add my-server "My Server" \
--env "NODE_ENV=production" \
--env "API_KEY=secret" \
-- node server.js
# 自定义超时和重试设置
tcl-mcp-server mcp add my-server "My Server" \
--timeout-ms 60000 \
--max-retries 5 \
-- node server.js
# 列出所有服务器
tcl-mcp-server mcp list
# 详细视图
tcl-mcp-server mcp list --detailed
# 服务器详情
tcl-mcp-server mcp info my-server
# 手动连接
tcl-mcp-server mcp connect my-server
# 测试连接
tcl-mcp-server mcp ping my-server
# 断开连接
tcl-mcp-server mcp disconnect my-server
# 移除服务器
tcl-mcp-server mcp remove my-server
⚠️ 谨慎使用
┌─────────────┐ ┌──────────────┐ ┌─────────────┐
│ AI Agent ├────►│ MCP Server ├────►│TCL Executor │
│ (Claude) │ │ (JSON-RPC) │ │ (Molt) │
└─────────────┘ └──────────────┘ └─────────────┘
│
▼
┌─────────────┐
│ MCP Manager │
│ (External │
│ Servers) │
└─────────────┘
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"]
# 运行测试套件
./scripts/run_mcp_tests.sh
# 测试特定功能
python3 tests/test_bin_exec_tool_mcp.py
服务器配置存储在适合平台的位置:
~/.local/share/tcl-mcp-server/
~/Library/Application Support/tcl-mcp-server/
%APPDATA%\tcl-mcp-server\
服务器无法启动
# 检查运行时可用性
tcl-mcp-server --runtime molt --privileged
# 启用调试日志
RUST_LOG=debug tcl-mcp-server
MCP 服务器连接失败
# 测试连接
tcl-mcp-server mcp ping server-id
# 检查服务器日志
TCL_MCP_DEBUG_STDERR=1 tcl-mcp-server
工具未找到
# 列出可用工具
tcl-mcp-server list
# 检查特定命名空间
tcl-mcp-server list --namespace user
本项目采用 MIT 许可证,详情请参阅 LICENSE 文件。