mcpField
S
SpamTitan

SpamTitan

本地服务
github.com安全02 周前更新

关于 SpamTitan

SpamTitan MCP 服务面向管理 SpamTitan 邮件安全的团队,提供隔离邮件、允许和阻止列表及过滤统计工具。在 MCP Apps 宿主中,邮件详情还可显示为只读交互卡片。

主要功能

  1. 01管理允许列表和阻止列表
  2. 02查看和管理邮件隔离区
  3. 03查看过滤统计和报告
  4. 04以交互卡片呈现隔离邮件

适用场景

  1. 01审查隔离邮件
  2. 02更新邮件允许和阻止列表
  3. 03查看邮件过滤统计
  4. 04在 MCP Apps 宿主中检查邮件

MCP 相关

向 MCP 客户端提供 SpamTitan 隔离区、列表管理和统计功能。隔离邮件工具可在 MCP Apps 宿主中呈现为只读交互卡片。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"wyre-technology-spamtitan": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"SPAMTITAN_API_URL",
"-e",
"SPAMTITAN_API_KEY",
"-e",
"MCP_TRANSPORT",
"-e",
"AUTH_MODE",
"-e",
"LOG_LEVEL",
"ghcr.io/wyre-technology/spamtitan-mcp:v1.3.2"
],
"env": {
"SPAMTITAN_API_URL": "<SPAMTITAN_API_URL>",
"SPAMTITAN_API_KEY": "<SPAMTITAN_API_KEY>",
"MCP_TRANSPORT": "<MCP_TRANSPORT>",
"AUTH_MODE": "<AUTH_MODE>",
"LOG_LEVEL": "<LOG_LEVEL>"
}
}
}
}
启动命令docker run -i --rm -e SPAMTITAN_API_URL -e SPAMTITAN_API_KEY -e MCP_TRANSPORT -e AUTH_MODE -e LOG_LEVEL ghcr.io/wyre-technology/spamtitan-mcp:v1.3.2
需要配置的环境变量
SPAMTITAN_API_URLSpamTitan API base URL (e.g. https://spamtitan.example.com/api)
SPAMTITAN_API_KEY密钥SpamTitan API key for authentication
MCP_TRANSPORTTransport mode for the server. Set to 'stdio' for local CLI use; the image defaults to 'http' for gateway hosting.
AUTH_MODE密钥Credential source: 'env' reads vars locally, 'gateway' expects header injection from the WYRE MCP Gateway.
LOG_LEVELLog verbosity: debug, info, warn, error

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
ocighcr.io/wyre-technology/spamtitan-mcp:v1.3.2

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

SpamTitan MCP 服务

License Node.js

用于 SpamTitan 邮件安全的模型上下文协议(MCP)服务。支持 AI 助手管理隔离区、维护允许列表和阻止列表,以及查看邮件筛选统计信息。

这是一个 模型上下文协议(MCP) 服务,可将 Claude(或任何兼容 MCP 的 AI)连接到你的 SpamTitan 环境。

属于 MSP Claude Plugins 生态系统的一部分——这是一个不断扩展的 MSP 技术栈 AI 集成套件。由 MSP 为 MSP 打造。

安装

npm install @wyre-ai/spamtitan-mcp

配置

复制 .env.example,并设置以下变量。

变量必填说明
SPAMTITAN_API_KEYstdio 和 AUTH_MODE=env 模式下必填SpamTitan API 密钥
SPAMTITAN_BASE_URL否SpamTitan 实例 URL,包括任何路径前缀(例如 https://mail.example.com/spamtitan/)。默认值为 https://api-spamtitan.titanhq.com。在网关模式下,每个请求中的 X-SpamTitan-Base-URL 标头优先。
MCP_TRANSPORT否stdio(默认)或 http
AUTH_MODE否gateway(Docker 镜像和 Compose)或 env。网关模式要求每个 /mcp 请求都携带 X-SpamTitan-API-Key,且不会回退到 SPAMTITAN_API_KEY。env 模式仅在 S2S 身份验证成功后使用该变量。未设置时默认为 env(stdio 和单租户 HTTP)。
CONDUIT_S2S_SECRETHTTP 模式下必填服务间密钥。当此变量为空或为已知占位符(changeme、secret、replace-me、your-s2s-secret、replace-with-a-real-secret 及其他示例值)时,HTTP 服务会记录错误并以非零状态码退出。使用 openssl rand -hex 32 生成密钥。未设置此变量时,Compose 不会启动。此值绝不会写入日志。
MCP_ALLOW_INSECURE_DEV否仅在本地开发时设为 1,以便在未设置 CONDUIT_S2S_SECRET 的情况下启动 HTTP。进程会记录警告、不强制验证 X-Gateway-S2S,且仅绑定到 127.0.0.1。如果 MCP_HTTP_HOST 不是回环地址,则拒绝启动。已知占位符密钥仍会导致启动失败。
MCP_HTTP_HOST否设置了有效 CONDUIT_S2S_SECRET 时的绑定地址。未设置时使用 0.0.0.0,即历史容器绑定地址。镜像和 Compose 会在容器内将其设为 0.0.0.0。
MCP_HTTP_PORT否HTTP 端口。默认值为 8080。

/health 和 /healthz 无需身份验证,也不会读取凭据。stdio 传输不使用 CONDUIT_S2S_SECRET。

HTTP 身份验证

设置 MCP_TRANSPORT=http 和 CONDUIT_S2S_SECRET 后,每个 /mcp 请求都必须包含 X-Gateway-S2S。验证逻辑位于 src/s2s-verify.ts 中的 verifyS2sHeader:标头值格式为 t=<unix seconds>,v1=<hex>,其中十六进制值是以 CONDUIT_S2S_SECRET 为密钥,对字面字符串 t=<unix seconds> 计算出的 HMAC-SHA256(64 位小写十六进制字符)。时间戳与服务器时钟的偏差必须在 300 秒以内。标头缺失或无效时,将在读取供应商凭据前返回 HTTP 401。

TS=$(date +%s)
SIG=$(printf 't=%s' "$TS" | openssl dgst -sha256 -hmac "$CONDUIT_S2S_SECRET" -hex | awk '{print $NF}')
curl -sS http://127.0.0.1:8080/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -H "X-Gateway-S2S: t=${TS},v1=${SIG}" \
  -H "X-SpamTitan-API-Key: $SPAMTITAN_API_KEY" \
  -H "X-SpamTitan-Base-URL: $SPAMTITAN_BASE_URL" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

在 AUTH_MODE=gateway 模式下,/mcp 还要求提供 X-SpamTitan-API-Key。该标头是此请求唯一的 API 密钥来源。X-SpamTitan-Base-URL 为可选项;若存在,则用于选择租户实例。AUTH_MODE=env 仍要求提供经过签名的 X-Gateway-S2S 标头,然后使用环境变量中的 SPAMTITAN_API_KEY 和 SPAMTITAN_BASE_URL。

用法

使用 Claude Desktop 运行

将以下内容添加到 Claude Desktop 的 claude_desktop_config.json 中:

{
  "mcpServers": {
    "spamtitan-mcp": {
      "command": "npx",
      "args": ["@wyre-ai/spamtitan-mcp"],
      "env": {
        "SPAMTITAN_API_KEY": "your-spamtitan-api-key"
      }
    }
  }
}
使用 Claude Code(CLI)运行
claude mcp add spamtitan-mcp \
  -e SPAMTITAN_API_KEY=your-value \
  -- npx -y @wyre-ai/spamtitan-mcp
Docker

镜像在容器内监听 0.0.0.0(MCP_HTTP_HOST),默认使用 AUTH_MODE=gateway。请将端口发布到回环地址,并传入真实的 S2S 密钥。在网关模式下,SpamTitan 凭据会在每次请求中通过请求头传入;不会从环境变量读取 API 密钥。

docker build -t spamtitan-mcp .
docker run \
  -e CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" \
  -p 127.0.0.1:8080:8080 \
  spamtitan-mcp

如果未设置 CONDUIT_S2S_SECRET 或其值为空,Compose 将拒绝启动。网关服务会设置 AUTH_MODE=gateway,不会注入 SPAMTITAN_API_KEY 或 SPAMTITAN_BASE_URL,并发布 127.0.0.1:8080:8080:

CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" docker compose up

单租户 HTTP(AUTH_MODE=env)仍需要 S2S 密钥,然后使用 SPAMTITAN_API_KEY 和 SPAMTITAN_BASE_URL。它与上述网关 Compose 服务分开。

docker run \
  -e CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" \
  -e AUTH_MODE=env \
  -e SPAMTITAN_API_KEY=your-value \
  -e SPAMTITAN_BASE_URL=https://mail.example.com/spamtitan/ \
  -p 127.0.0.1:8080:8080 \
  spamtitan-mcp

不使用密钥的本地 HTTP 仅适用于开发环境。它会绑定到 127.0.0.1 并记录警告。若 MCP_HTTP_HOST 不是回环地址(包括镜像默认值 0.0.0.0),启动将退出:

MCP_TRANSPORT=http MCP_HTTP_HOST=127.0.0.1 MCP_ALLOW_INSECURE_DEV=1 npm start

可用域

列表

管理允许列表和阻止列表

隔离区

查看和管理邮件隔离区

统计信息

邮件过滤统计信息和报告

功能

  • 交互式隔离邮件卡片(MCP Apps,SEP-1865) — 在 MCP Apps 宿主(Claude Desktop/web)中,spamtitan_get_message 会呈现为只读交互式卡片;在其他宿主中的纯 JSON 行为保持不变。卡片默认采用中性色,可通过注入 window.__BRAND__ 或使用 MCP_BRAND_* 环境变量(MCP_BRAND_NAME、MCP_BRAND_LOGO_URL、MCP_BRAND_PRIMARY_COLOR、MCP_BRAND_ACCENT_COLOR、MCP_BRAND_BG、MCP_BRAND_TEXT)进行品牌化,无需重新构建。编辑 ui/ 后,使用 npm run build:ui 重新构建卡片包。

开发

# Clone the repository
git clone https://github.com/WYRE-AI/spamtitan-mcp.git
cd spamtitan-mcp

# Install dependencies
npm install

# Build
npm run build

# Run tests
npm test

# HTTP refuses to start until CONDUIT_S2S_SECRET is a real secret
MCP_TRANSPORT=http CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" npm start

# Local HTTP only, without a service-to-service secret (binds 127.0.0.1)
MCP_TRANSPORT=http MCP_HTTP_HOST=127.0.0.1 MCP_ALLOW_INSECURE_DEV=1 npm start

贡献

欢迎贡献!如果存在 CONTRIBUTING.md,请参阅该文件;也可以提出 issue 讨论更改。

许可证

根据 Apache License, Version 2.0 授权。详情请参阅 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。