AI代理工具服务器

MCP Tools是一个被动的MCP服务器,通过Streamable HTTP协议向自主代理提供多种工具(shell、网络、HTTP、AI搜索等),是Cloud Temple生态系统的工具箱。

  • by chrlesur
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 chrlesur/mcp-tools

使用说明

🔧 MCP工具

IA代理的可执行工具库 -MCP Cloud Temple服务器

英文版本

MCP工具是一个被动MCP服务器,它公开 工具 (shell、网络、HTTP、IA搜索…)通过协议发送给自主代理 流式HTTP这是Cloud Temple生态系统的“工具箱”。

快速启动

1.配置

cp .env.example .env
# Éditer .env avec vos credentials S3, Perplexity, etc.

2.启动(Docker Compose)

docker compose build
docker compose up -d

# Vérification
curl http://localhost:8082/health
# → {"status":"healthy","service":"mcp-tools","version":"0.1.8","transport":"streamable-http"}

# Console d'administration
open http://localhost:8082/admin

3.CLI

# Créer le venv Python
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt

# Health check (pas d'auth requise)
python scripts/mcp_cli.py health

# Infos service
python scripts/mcp_cli.py about

# Exécuter une commande shell
python scripts/mcp_cli.py run-shell "hostname && uptime"

# Diagnostic réseau
python scripts/mcp_cli.py network ping google.com
python scripts/mcp_cli.py network dig google.com MX +short
python scripts/mcp_cli.py network nslookup google.com -type=mx

# Requête HTTP
python scripts/mcp_cli.py http https://httpbin.org/get

# Dates et heures
python scripts/mcp_cli.py date now --tz Europe/Paris
python scripts/mcp_cli.py date add 2026-03-06 --days 10
python scripts/mcp_cli.py date diff 2026-01-01 --date2 2026-03-06
python scripts/mcp_cli.py date day_of_week 2026-03-06

# Calculs mathématiques
python scripts/mcp_cli.py calc "2 + 3 * 4"
python scripts/mcp_cli.py calc "math.sqrt(144) + statistics.mean([10,20,30])"

# Recherche IA (Perplexity)
python scripts/mcp_cli.py search "Qu'est-ce que le protocole MCP ?"

# Documentation technique (Perplexity)
python scripts/mcp_cli.py doc "Python asyncio"
python scripts/mcp_cli.py doc "FastAPI" --context "middleware et dépendances"

# SSH (exécution distante)
python scripts/mcp_cli.py ssh exec myserver.com --user admin --password secret "uptime"
python scripts/mcp_cli.py ssh status myserver.com --user admin --password secret

# Fichiers S3
python scripts/mcp_cli.py files list --prefix logs/
python scripts/mcp_cli.py files read config/app.yaml
python scripts/mcp_cli.py files write test.txt --content "Hello World"

# Gestion des tokens (admin)
python scripts/mcp_cli.py token create agent-prod --tools shell,date,calc --expires 90
python scripts/mcp_cli.py token create ct-user --email user@cloud-temple.com --expires 180
python scripts/mcp_cli.py token list
python scripts/mcp_cli.py token info agent-prod
python scripts/mcp_cli.py token revoke agent-prod

# Shell interactif
python scripts/mcp_cli.py shell

4.E2E配方

# Tous les tests (build + start + test + stop)
python scripts/test_service.py

# Test spécifique (13 catégories)
python scripts/test_service.py --test shell
python scripts/test_service.py --test network
python scripts/test_service.py --test http
python scripts/test_service.py --test ssh
python scripts/test_service.py --test files
python scripts/test_service.py --test token
python scripts/test_service.py --test admin
python scripts/test_service.py --test date
python scripts/test_service.py --test calc

# Serveur déjà lancé
python scripts/test_service.py --no-docker

# Verbose (réponses complètes)
python scripts/test_service.py --test shell -v

5.本地开发(无Docker)

python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
PYTHONPATH=src python -m mcp_tools

建筑

Internet/LAN → :8082 (WAF Caddy+Coraza) → mcp-tools:8050 (interne)

桩ASGI

AdminMiddleware → HealthCheckMiddleware → AuthMiddleware → LoggingMiddleware → FastMCP streamable_http_app

3张沙发(云庙图案)

层 文件 角色
MCP工具 src/mcp_tools/server.py API MCP(流式HTTP)
CLI单击 scripts/cli/commands.py 界面可脚本化
交互式外壳 scripts/cli/shell.py 界面交互
显示 scripts/cli/display.py 共享丰富(层2+3)

可用工具(12/27-第1阶段)

所有参数 每个工具都通过MCP协议进行了详细描述。兼容客户端(Cline、Claude Desktop等)自动显示这些描述。

输出 描述
shell 隔离Docker沙盒(Bash、sh、Python3、Node、OpenSSL)-无网络
network Docker沙盒中的网络诊断(ping、traceroute、nslookup、dig)-禁止专用IPS RFC 1918
http Docker沙盒中的HTTP/REST客户端(反SSRF、Auth Basic/Bearer/API-key)-阻止私有IP
ssh 通过SSH在Docker沙盒中执行命令和文件传输(执行、状态、上传、下载)-身份验证密码/密钥
files Docker沙盒中S3 Dell ECS上的文件操作(列表、读取、写入、删除、信息、差异、版本、启用版本控制)-SIGv2/SIGv4混合配置、S3版本控制
perplexity_search 通过困惑人工智能搜索互联网
perplexity_doc 通过困惑AI的技术/库/API的技术文档
date 操作日期/时间(现在、今天、差异、添加、格式化、解析、周数、周日)——fuseaux horaires
calc Python Docker沙盒中的数学计算(表达式、数学、统计)-无网络
token MCP身份验证令牌管理(创建、列表、信息、撤销)-仅限管理员、工具ID隔离、所有者电子邮件
system_health 服务健康
system_about 元数据和工具列表

管理控制台(/admin)

web管理界面可在 /admin :

http://localhost:8082/admin

4视图 :仪表板(服务器状态)、工具(动态表单交互执行)、令牌(CRUD)、活动(实时日志)。

需要管理员身份验证(具有管理员权限的管理员引导密钥或S3令牌)。设计云神庙(黑暗主题)。仅限同一来源(无跨来源CORS)。

安全

  • WAF球童+科拉萨 :OWASP CRS、安全标头、速率限制
  • 认证持有者令牌 :每个请求/MCP都经过身份验证
  • tool_ids :令牌可以限制对工具子集的访问
  • 沙盒Docker :隔离临时容器中的每个shell/network/http命令(--cap drop=all,-read only,非root)
  • 令牌管理器S3 存储在 Dell ECS S3 中的代币(_tokens/{sha256}.json),TTL内存缓存5分钟,隔离 tool_ids
  • 管理员来源相同 :控制台 /admin 没有跨源CORS,API上需要身份验证管理
  • 抗SSRF :DNS解析+阻止RFC 1918/Loopback/Metadata工具云 http 和 network
  • 非root用户 在Docker
  • 超时和限制 在所有工具上
  • 自动杀戮 超时时时的沙盒容器

环境变量

服务器(.env)

变量 描述 缺陷
WAF_PORT WAF端口暴露 8082
MCP_SERVER_NAME 服务名称 mcp-tools
MCP_SERVER_PORT 端口互联网MCP 8050
ADMIN_BOOTSTRAP_KEY 令牌管理员(⚠️ 改变!) change_me_in_production
S3_ENDPOINT_URL 端点S3
S3_ACCESS_KEY_ID S3访问密钥
S3_SECRET_ACCESS_KEY 秘密S3
S3_BUCKET_NAME 存储桶S3 mcp-tools
PERPLEXITY_API_KEY CléAPI困惑
PERPLEXITY_MODEL 困惑模型 sonar-reasoning-pro
SANDBOX_DNS 网络沙盒的DNS 8.8.8.8,8.8.4.4

客户端CLI

变量 描述 缺陷
MCP_URL 服务器URL http://localhost:8082
MCP_TOKEN 认证令牌 (见)

文件结构

mcp-tools/
├── src/mcp_tools/
│   ├── server.py              # Serveur MCP + HealthCheck + bannière
│   ├── config.py              # Configuration pydantic-settings (sandbox, etc.)
│   ├── admin/                 # Console d'administration web (/admin)
│   ├── static/                # Fichiers statiques admin (HTML, CSS, JS)
│   ├── auth/                  # Middleware auth + Token Store S3
│   └── tools/                 # Outils MCP (shell, network, http, perplexity)
├── sandbox/
│   └── Dockerfile             # Image Alpine sandbox (python3, node, openssl…)
├── scripts/
│   ├── mcp_cli.py             # Point d'entrée CLI
│   ├── test_service.py        # Recette E2E (--test NOM pour cibler)
│   └── cli/                   # CLI Click + Shell + Display
├── waf/                       # WAF Caddy + Coraza
├── Dockerfile                 # Python 3.11 + docker CLI statique
├── docker-compose.yml         # sandbox + mcp-tools + waf + docker.sock
├── .env.example
└── VERSION

在Cline中配置(VS代码/VSCodium)

浇注连接器MCP Toolsà 克莱恩,添加到您的 cline_mcp_settings.json (可通过⚙️ Cline侧边栏中的MCP服务器):

{
  "mcpServers": {
    "mcp-tools": {
      "disabled": false,
      "timeout": 60,
      "type": "streamableHttp",
      "url": "http://localhost:8082/mcp",
      "headers": {
        "Authorization": "Bearer VOTRE_TOKEN_ICI"
      }
    }
  }
}
参数 值 描述
type streamableHttp 强制性 -告诉Cline要使用的MCP传输
url http://localhost:8082/mcp 端点流式HTTP(通过WAF, 总是 /mcp)
timeout 60 以秒为单位的超时(建议用于长工具)
Authorization Bearer VOTRE_TOKEN Bootstrap密钥或令牌S3
disabled false 允许在不删除配置的情况下禁用服务器

要使用特定工具创建Cline专用令牌:

python scripts/mcp_cli.py --token $ADMIN_BOOTSTRAP_KEY \
  token create cline-dev --tools shell,http,network,date,calc,perplexity_search --expires 365

完整指南 :见 starter-kit/CLINE_SETUP.md 用于OS配置文件路径、多服务器、调试等。

路线图

  • 第一阶段 (actuel):shell、网络、http、ssh、文件、困惑搜索、困惑文档、日期、计算——✅
  • 第一阶段 (待办事项):docker、generate、mcp-call
  • 第2阶段 :git、s3、db、hostaudit、ssh-diagnostics、sqlite、scriptexecutor、email_send、pdf、doc_scraper
  • 第三期 :意象、困惑、预防

许可证

Apache 2.0——云神庙