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