返回市场
MCP-TCL-用户定义函数服务器

MCP-TCL-用户定义函数服务器

作者:cyberdione15 星标更新:2025-07-23

项目介绍

TCL MCP Server

一个模型上下文协议(MCP)服务器,使AI代理能够执行TCL脚本并管理MCP工具生态系统。该服务器在设计时考虑了安全性和开发者体验。

crates.io Documentation

快速开始

# 安装并运行(使用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脚本:通过MCP智能地运行TCL代码,并控制安全性
  • 管理MCP生态系统:添加、移除和编排其他MCP服务器
  • 默认安全:使用Molt(内存安全的TCL)进行沙箱执行
  • 工具管理:创建、版本化和组织自定义工具
  • 跨平台:支持Linux、macOS和Windows

运行时选项

选择两种TCL运行时实现之一:

🔒 Molt运行时(默认 - 安全)

  • 内存安全:用Rust编写,内置安全保证
  • 沙箱:无文件I/O、无系统命令、无网络访问
  • 子集:核心TCL功能用于数据处理和算法
  • 推荐:适用于生产环境和不可信环境
  • 文档Molt TCL手册

⚠️ TCL运行时(完整 - 不安全)

  • 全部功能:完整的TCL语言及其所有特性
  • 系统访问:文件I/O、系统命令、网络操作
  • 强大:高级脚本能力和系统集成
  • 风险:需要可信环境和仔细的输入验证
  • 文档官方TCL文档

核心功能

🔒 安全第一

  • 受限模式(默认):有限命令下的安全TCL执行
  • 特权模式:高级用例下的完整TCL访问
  • 运行时选择:选择安全(Molt)或完整(TCL)实现

🛠️ MCP管理

# 添加外部MCP服务器
tcl-mcp-server mcp add claude-flow "Claude Flow" -- npx claude-flow@alpha mcp start

# 列出所有服务器
tcl-mcp-server mcp list

# 测试连接性
t
tcl-mcp-server mcp ping claude-flow

📦 工具组织

工具使用命名空间系统进行组织,与MCP兼容:

  • bin__tcl_execute - 执行TCL脚本
  • user__alice__utils__reverse_string - 用户创建的工具
  • mcp__context7__get_library_docs - 外部MCP服务器工具

使用方法

运行服务器

默认(只读模式)

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

MCP客户端集成

Claude桌面

{
  "mcpServers": {
    "tcl": {
      "command": "/path/to/tcl-mcp-server",
      "args": ["--runtime", "molt", "--privileged"]
    }
  }
}

Claude代码

claude mcp add tcl /path/to/tcl-mcp-server

内置工具

核心工具(始终可用)

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": "反转字符串",
  "script": "return [string reverse $text]",
  "parameters": [
    {
      "name": "text",
      "description": "要反转的文本",
      "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运行时 - 安全)

# 仅使用Molt运行时构建(推荐)
cargo build --release

# 生成的二进制文件默认使用Molt
./target/release/tcl-mcp-server

使用TCL运行时构建(完整但不安全)

# 使用完整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

# 优先级:CLI参数 > 环境变量 > 默认(Molt)

系统要求

对于Molt运行时(默认):

  • 仅需Rust工具链
  • 没有外部依赖
  • 支持所有平台

对于TCL运行时:

  • 需要系统TCL安装(8.6+)
  • 编译所需的开发头文件
  • 平台特定设置:
    # 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

MCP服务器管理

添加服务器

# 基本服务器
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

安全模型

默认安全(推荐)

  • 受限模式:仅提供基本工具
  • Molt运行时:内存安全,沙箱执行(参见Molt文档
  • 无文件I/O:防止未经授权的文件访问
  • 无系统命令:阻止系统级操作

特权模式

⚠️ 谨慎使用

  • 完整TCL语言访问
  • 工具管理能力
  • 可能进行系统级操作(特别是使用TCL运行时)
  • 仅推荐用于可信环境
  • 使用TCL运行时:完全系统访问(参见TCL文档

架构

┌─────────────┐     ┌──────────────┐     ┌─────────────┐
│  AI代理     ├────►│  MCP服务器   ├────►│TCL执行器    │
│  (Claude)   │     │  (JSON-RPC)  │     │  (Molt)     │
└─────────────┘     └──────────────┘     └─────────────┘
                          │
                          ▼
                    ┌─────────────┐
                    │ MCP管理器   │
                    │ (外部       │
                    │  服务器)    │
                    └─────────────┘

高级用法

创建自定义工具

  1. 添加工具(需要特权模式):
tcl-mcp-server run sbin__tcl_tool_add '{
  "user": "dev",
  "package": "math",
  "name": "fibonacci",
  "version": "1.0",
  "description": "计算斐波那契数",
  "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": "要计算斐波那契数的数字",
      "required": true,
      "type_name": "integer"
    }
  ]
}'
  1. 使用工具
tcl-mcp-server run user__dev__math__fibonacci '{"n": 10}'

运行时能力检测

查询运行时能力以进行智能代码生成:

tcl-mcp-server run tcl_runtime_info '{
  "include_examples": true,
  "category_filter": "safe"
}'

运行时特性对比:

特性Molt运行时TCL运行时
内存安全✅ Rust基础,内存安全⚠️ C基础,手动内存管理
文件I/O❌ 为安全而阻断✅ 全面文件操作
系统命令❌ 无exec或系统调用✅ 完整系统集成
网络❌ 无套接字操作✅ 全面网络能力
性能⚡ 快速启动,低开销🐌 启动较慢,占用更多内存
兼容性📚 核心TCL子集🔧 完整TCL语言 + 扩展
应用场景数据处理,算法,安全脚本系统管理,复杂应用
文档Molt手册TCL文档

容器部署

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

数据存储

服务器配置存储在适合各平台的位置:

  • Linux~/.local/share/tcl-mcp-server/
  • macOS~/Library/Application Support/tcl-mcp-server/
  • Windows:%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

贡献

  1. 分叉仓库
  2. 创建功能分支
  3. 为新功能添加测试
  4. 确保所有测试通过
  5. 提交合并请求

许可证

MIT许可证 - 详情见LICENSE文件