邮件列表存档服务器

MCP服务器,用于访问marc.info邮件列表存档,提供流式HTTP传输、邮件列表浏览、消息搜索和SQLite缓存等功能。

  • by andr1an
  • Go
  • 本地部署
  • 更新于
在 GitHub 查看 andr1an/marc-mcp

使用说明

马克·麦克普

用于访问的MCP服务器 marc.info 邮件列表存档。

特性

  • 流式HTTP MCP传输(无状态,支持SSE)
  • 按类别和/或正则表达式过滤器浏览邮件列表
  • 按月列出邮件,并设置页面+每页限制控件
  • 获取完整的邮件内容(页眉+正文)
  • 按主题、作者或正文在列表中搜索
  • 内置带TTL的SQLite缓存,用于抓取结果
  • 针对短暂的上游错误,自动重试并回退
  • 可选JWT承载令牌身份验证

建筑

main.go
internal/
  auth/
  cache/
  config/
  httpserver/
  marc/
  middleware/
  tools/
  transport/
  • internal/marc:marc.info的HTML scraper客户端
  • internal/cache:缓存+FTS架构
  • internal/tools:MCP工具实现
  • internal/transport:流式HTTP MCP处理程序
  • internal/httpserver:布线(/health, /mcp)

需求

  • 转到1.25+

发展

make test
make build

可用目标:

  • make test -运行单元测试
  • make build -构建本地二进制文件 ./marc-mcp
  • make build-all -交叉构建 marc-mcp-{os}-{arch} 二进制文件
  • make print-version -打印链接器版本变量
  • make clean -删除生成的二进制文件

跑

go run .

服务器默认为 :8080. make build 产生a marc-mcp 项目根目录中的二进制文件。

配置

变量 描述 默认值
LISTEN_ADDR 服务器侦听地址 :8080
AUTH_MODE disabled 或 jwt disabled
JWT_PUBLIC_KEY JWT验证的RSA公钥路径 (空)
LOG_LEVEL debug / info / warn / error info
MARC_TIMEOUT marc.info请求的HTTP超时 2m
MARC_CACHE_DB 自定义SQLite缓存路径 操作系统用户缓存目录+ /marc-mcp/cache.db
MARC_CACHE_TTL 缓存TTL(执行持续时间) 24h
READ_TIMEOUT HTTP读取超时 15s
WRITE_TIMEOUT HTTP写入超时 60s
IDLE_TIMEOUT HTTP空闲超时 60s
SHUTDOWN_TIMEOUT 优雅的关机超时 10s
MAX_HEADER_BYTES 最大HTTP标头字节数 1048576

MARC_TIMEOUT 有效范围为10秒至15米。

身份验证(可选)

JWT验证支持承载令牌保护。

启用:

AUTH_MODE=jwt
JWT_PUBLIC_KEY=public.pem

请求必须包括:

Authorization: Bearer <token>

端点

  • GET /health
  • MCP可流式HTTP传输 /mcp

工具

list_mailing_lists

列出所有可用的邮件列表,可选择按类别和/或名称正则表达式过滤。

参数:

  • category (可选)
  • filter (可选,正则表达式)

list_messages

按页码列出邮件列表中的邮件。

参数:

  • list (必填)
  • month (可选, YYYYMM,默认当前月份)
  • page (可选,从1开始,默认 1)
  • limit (可选)

get_message

获取特定消息的完整内容。

参数:

  • list (必填)
  • message_id (必填)

search_messages

在邮件列表中搜索邮件。

参数:

  • list (必填)
  • query (必填)
  • search_type (可选: s 主题, a 作者 b 身体;默认 s)

测试

make test

许可证

麻省理工学院