项目简介

Outpost 是一个开源的、自托管的出站事件和 Webhook 基础设施。它旨在帮助开发者轻松地为其平台添加出站 Webhook 和各种事件目的地(如 AWS SQS/SNS、GCP Pub/Sub、RabbitMQ, Kafka 等)。Outpost 确保事件的可靠投递,支持重试、多租户管理等高级功能。

除了作为核心事件基础设施,Outpost 还内嵌了一个 Model Context Protocol (MCP) 服务器。这使得大型语言模型 (LLM) 客户端能够通过标准化的 MCP 接口与 Outpost 交互,获取上下文信息和调用其功能。

主要功能点

  • 多样的事件目的地支持: 无缝集成 Webhook、AWS SQS/SNS、GCP Pub/Sub、RabbitMQ, Kafka 等。
  • 可靠的事件投递: 提供至少一次的投递保证、自动/手动重试机制和事件分发 (Fanout)。
  • 多租户能力: 支持在单个 Outpost 部署中管理多个独立的租户。
  • 可观测性: 内建 OpenTelemetry 支持,提供标准化的日志、指标和追踪。
  • MCP 能力:
    • 资源管理: 允许 LLM 客户端查询存储在 Outpost 中的事件和投递日志(对应 MCP 的 Resource 能力)。
    • 工具调用: 允许 LLM 客户端通过调用预定义的功能来发布事件到 Outpost(对应 MCP 的 Tool 能力)。
    • 会话管理: 支持 MCP 客户端的会话管理。

安装步骤

安装 Outpost 最简单的方式是使用 Docker Compose。

  1. 克隆仓库:
    git clone https://github.com/hookdeck/outpost.git
    cd outpost
  2. 准备配置文件:
    cd examples/docker-compose/
    cp .env.example .env
    # 编辑 .env 文件,设置你的 API_KEY
    # 例如:API_KEY="your_secure_api_key_here"
    vim .env
  3. 启动服务:
    docker-compose -f compose.yml -f compose-rabbitmq.yml -f compose-postgres.yml up -d
    这将启动 Outpost 服务及其依赖的数据库和消息队列。
  4. 验证服务: 检查 Outpost API 服务是否运行正常(默认在 3333 端口):
    curl localhost:3333/api/v1/healthz
    等待返回 'OK%' 表示服务启动成功。

MCP 服务器配置

Outpost 的 MCP 服务器功能通常集成在其 API 服务中运行。要配置您的 MCP 客户端连接到 Outpost MCP 服务器,您需要在客户端配置中指定服务器的启动信息。

MCP 客户端通常需要一个 JSON 格式的配置条目,指定服务器的名称、启动命令及参数。请注意,以下配置仅指定如何启动 Outpost 服务以暴露 MCP 接口,实际的连接地址(如 'stdio://localhost:3333/mcp' 或 'ws://localhost:3333/mcp')需要在您的 MCP 客户端中根据 Outpost 的运行环境和配置单独指定。

示例 MCP 客户端配置 JSON 片段:

// 这是一个示例 JSON 配置结构,具体字段名可能因 MCP 客户端实现而异
{
  // 服务器的逻辑名称,用于在客户端界面显示
  "name": "Outpost 事件服务",
  // 启动 Outpost 服务器的命令
  "command": "outpost",
  // 传递给 Outpost 命令的参数,例如指定运行 API 服务
  "args": ["--service", "api"]
}

参数注释:

  • '"command": "outpost"': 指定要执行的可执行文件名称。假设 'outpost' 可执行文件已在系统 PATH 中,或者 MCP 客户端能够在指定路径找到它。
  • '"args": ["--service", "api"]': 指定传递给 'outpost' 命令的参数。'--service api' 参数指示 Outpost 仅运行 API 服务,该服务通常包含 MCP 接口。根据您的部署需求,您可能需要调整此参数,例如使用 '--service all' 运行所有服务。

重要提示: 上述配置描述了 MCP 客户端如何找到并运行 Outpost 进程。实际的通信端点和协议(如通过标准IO 'stdio://' 或 WebSocket 'ws://' 连接到哪个主机和端口)需要您在 MCP 客户端的用户界面或配置文件中另行配置,并确保与 Outpost 的运行配置(特别是 'API_PORT')相匹配。Outpost 的 Docker Compose 示例默认在 'localhost:3333' 暴露 API 端口。

基本使用方法 (通过 MCP 客户端)

一旦 MCP 客户端成功连接到 Outpost MCP 服务器,您可以使用自然语言或特定的 MCP 客户端指令与其交互:

  • 发布事件: 要求 LLM 调用相应的 MCP 工具来发布事件。例如,您可以指示 LLM 发布一个 'user.created' 事件给指定的租户,MCP 客户端会将其转化为对 Outpost 的 Tool Call 请求。
  • 查询事件/投递: 要求 LLM 访问 MCP 资源来获取事件或投递的详细信息。例如,您可以询问某个事件的状态,或者列出某个目的地最近的投递尝试,MCP 客户端会转化为 Resource Request 发送给 Outpost。

具体的 MCP 交互方式取决于您的 MCP 客户端实现,但 Outpost 提供底层能力来响应这些请求。

信息

分类

网页与API