
Hindsight 与 IBM ContextForge 集成指南通过统一 MCP 网关向所有 AI 工具开放 retain / recall / reflect 记忆能力【免费下载链接】hindsightHindsight: Agent Memory That Learns项目地址: https://gitcode.com/GitHub_Trending/hindsight2/hindsightHindsight 本身内置了标准的 Streamable HTTP MCP 端点/mcp本文介绍如何把 Hindsight 作为 MCP 后端注册到 IBM 开源的 MCP 网关 ContextForge 中让 Dust、Claude Desktop、自定义 Agent 等所有接入 ContextForge 的 AI 工具通过一个统一端点获得 Hindsight 的 retain记忆写入、recall记忆检索与 reflect记忆综合推理能力。读完本文你将掌握 ContextForge 的三种注册方式、多银行/单银行两种模式的选择、Helm 自动注册的完整实现以及常见故障的排查路径。为什么选择 ContextForge HindsightContextForge 是一个开源的 MCP 网关充当中心 MCP 枢纽把多个 MCP Server 聚合到一个经过认证的统一端点背后。将 Hindsight 注册为其后端后可以带来以下收益一个端点、众多工具AI 平台只需连接一次 ContextForge即可在 Hindsight 记忆服务之外同时访问数据库、工作流、元数据目录等其他已注册的 MCP Server集中式认证ContextForge 统一处理 SSO、RBAC 与基于 JWT 的认证无需把 Hindsight 直接暴露给外部客户端团队级记忆隔离借助 ContextForge 的团队/可见性模型可以精细控制哪些团队能够访问哪些记忆银行memory bank零代码改造Hindsight 内建的 MCP 端点/mcp原生支持标准 Streamable HTTP 传输ContextForge 可以直接对接无需任何适配代码。集成架构AI Tools (Dust, Claude Desktop, custom agents) │ ▼ ┌─────────────────────────────┐ │ ContextForge MCP Gateway │ ← SSO, RBAC, session management │ (unified MCP endpoint) │ └──────────┬──────────────────┘ │ Streamable HTTP ┌─────┴──────┬──────────────┐ ▼ ▼ ▼ Hindsight PostgreSQL OpenMetadata (memory) MCP (SQL) (metadata)从架构上看ContextForge 位于客户端与各 MCP Server 之间客户端只与网关通信网关负责会话管理、认证与路由并通过 Streamable HTTP 将 MCP 请求转发到 Hindsight 等后端。Hindsight 的 MCP 端点之所以能即插即用是因为它基于 FastMCP 构建见 hindsight-api-slim/hindsight_api/api/mcp.py对外暴露标准 Streamable HTTP 传输与 MCP 规范的客户端含各类网关天然兼容。前置条件一个正在运行的 Hindsight 实例通过 Docker、Helm 或云服务部署均可一个正在运行的 ContextForge 实例ContextForge 与 Hindsight 之间的网络连通性同一 Kubernetes 集群、同一 VPC或可通过公网 URL 访问。先理解 Hindsight 的 MCP 端点在把 Hindsight 注册进 ContextForge 之前先了解它对外提供的 MCP 端点形态这对后续填写注册参数很有帮助。从源码看Hindsight 的 MCP 端点具有以下特征挂载路径默认为/mcp可通过HINDSIGHT_API_MCP_ENABLED环境变量控制是否启用默认开启挂载前缀由 hindsight-api-slim/hindsight_api/api/init.py 中的mcp_mount_path参数决定一个服务、两套 MCP AppMCPMiddleware会同时创建 multi-bank 与 single-bank 两套 MCP Server并根据请求 URL 形态自动路由详见下文银行模式一节传输方式默认支持有状态的 Streamable HTTPGET/SSE POST若设置HINDSIGHT_API_MCP_STATELESStrue则切换为纯 POST 的无状态模式认证机制若配置了HINDSIGHT_API_MCP_AUTH_TOKENMCP 端点会校验该静态令牌Authorization: Bearer token未配置时则回退到租户扩展TenantExtension的authenticate_mcp()——默认租户扩展在本地开发时不要求认证而ApiKeyTenantExtension会校验环境变量中的 API Key。该逻辑位于 hindsight-api-slim/hindsight_api/api/mcp.py工具参数容错_make_tools_tolerant()会自动剥离 LLM 调用时附带的未知参数如explanation并将字符串编码的 JSON 数组/对象自动转换为原生类型提升真实 LLM 调用 MCP 工具时的健壮性hindsight-api-slim/hindsight_api/api/mcp.py。因此注册 ContextForge 时填入的 URL 通常是 Hindsight API 地址加上/mcp路径。在 ContextForge 中注册 Hindsight方式一通过 ContextForge 管理界面注册以管理员身份登录 ContextForge进入Servers→Add Server填写以下信息NamehindsightURLhttp://hindsight-host:8888/mcp或你的 Hindsight API 地址 /mcpTransportStreamable HTTP点击Save保存。方式二通过管理 API 注册# 认证 TOKEN$(curl -s -X POST https://your-contextforge.com/auth/login \ -H Content-Type: application/json \ -d {email: adminexample.com, password: your-password} \ | jq -r .access_token) # 将 Hindsight 注册为 MCP server curl -X POST https://your-contextforge.com/admin/servers \ -H Authorization: Bearer $TOKEN \ -H Content-Type: application/json \ -d { name: hindsight, url: http://hindsight-api:8888/mcp, transport: streamable_http, description: Hindsight agent memory — retain, recall, and reflect }方式三KubernetesHelm集群内注册如果 Hindsight 与 ContextForge 部署在同一个 EKS/Kubernetes 集群中可以直接使用 Hindsight 的集群内服务 DNS 作为注册地址http://hindsight-api.hindsight.svc.cluster.local:8888/mcp使用上述 UI 或 API 任一方法注册该 URL 即可。若希望每次 Helm 部署时都自动完成注册可以给 ContextForge 的 Chart 添加一个调用管理 API 的 post-install Job参见下文 Helm 自动注册。验证集成注册完成后可以通过 ContextForge 的 MCP 端点验证 Hindsight 工具是否可用# 通过 ContextForge 的 MCP 端点列出工具 curl -s -X POST https://your-contextforge.com/mcp \ -H Authorization: Bearer $TOKEN \ -H Content-Type: application/json \ -d {jsonrpc: 2.0, id: 1, method: tools/list} \ | jq .result[] | select(.name | startswith(hindsight))如果注册成功你将看到 Hindsight 的工具retain、recall、reflect、list_banks等。银行模式Bank ModesHindsight 的 MCP 端点支持两种模式可根据使用场景选择。这两种模式对应源码中create_mcp_server(memory, multi_bank...)创建的两套独立 Serverhindsight-api-slim/hindsight_api/api/mcp.py由MCPMiddleware依据 URL 形态自动路由。多银行模式默认注册根 MCP 端点http://hindsight-api:8888/mcp所有工具都带有可选的bank_id参数Agent 可以动态创建并在多个记忆银行之间切换。该模式暴露全部工具含list_banks、create_bank等银行管理工具。单银行模式通过在 URL 中带上银行 ID把某个客户端固定到指定银行http://hindsight-api:8888/mcp/my-team-bank/工具被限定在该银行范围内无需再传bank_id参数同时该模式不会暴露银行管理类工具list_banks、create_bank等被排除在外适合每个 ContextForge 团队拥有各自隔离记忆的场景从源码结构看也推荐用于 Agent 隔离。银行 ID 的解析优先级源码在 hindsight-api-slim/hindsight_api/api/mcp.py 中实现URL 路径中的银行 ID如/mcp/{bank_id}/→ 进入单银行模式X-Bank-Id请求头 → 多银行模式的按请求覆盖HINDSIGHT_MCP_BANK_ID环境变量 → 多银行模式的默认值默认default。这意味着在 ContextForge 侧即便同一套配置也可以通过调整注册 URL 让不同团队落在各自的单银行端点上实现天然的记忆隔离。可用工具注册完成后以下 Hindsight 工具即可通过 ContextForge 使用ToolDescriptionretainStore information to long-term memoryrecallSearch memories with natural language queriesreflectSynthesize memories into a reasoned answerlist_banksList all memory bankscreate_bankCreate a new memory banklist_mental_modelsList pinned reflectionscreate_mental_modelCreate a new mental modellist_documentsList ingested documents需要说明的是上表只是常用工具的代表。从 hindsight-api-slim/hindsight_api/mcp_tools.py 中的_ALL_TOOLS定义看Hindsight 的 MCP 端点实际注册了约 39 个工具完整覆盖记忆写入类retain、sync_retain、检索类recall、reflect、银行管理类list_banks、create_bank、get_bank、update_bank、delete_bank、get_bank_stats、clear_memories、心智模型类list_mental_models、get_mental_model、create_mental_model、update_mental_model、refresh_mental_model等、文档类list_documents、get_document、delete_document、指令类list_directives、create_directive、delete_directive、记忆管理类list_memories、get_memory、update_memory、invalidate_memory、操作管理类list_operations、get_operation、cancel_operation、标签类list_tags以及知识库类get_knowledge_base_tree、search_knowledge_base、create_knowledge_page等。以retain为例其参数设计非常贴合真实 Agent 调用习惯hindsight-api-slim/hindsight_api/mcp_tools.py除必填的content外还支持context记忆分类默认general、timestampISO 格式时间戳、tags作用域可见性标签如[project:alpha, user:123]、metadata键值元数据如来源渠道、document_id关联文档、strategy命名记忆策略如exact、update_mode对相同document_id的文档执行replace或append多银行模式下还会额外暴露可选的bank_id参数。调用成功后返回status: accepted与operation_id可进一步用于异步追踪记忆入库进度。另外管理员可以通过HINDSIGHT_API_MCP_ENABLED_TOOLS环境变量设置工具白名单逗号分隔只向 MCP 端点暴露允许的工具HINDSIGHT_API_MCP_INSTRUCTIONS则可将额外指令追加到retain/recall的工具描述中引导 Agent 更正确地使用记忆工具配置解析见 hindsight-api-slim/hindsight_api/config.py。Helm 自动注册为了让每次 Helm 部署都自动把 Hindsight 注册进 ContextForge可以给 ContextForge 的 Chart 添加一个 post-install/post-upgrade JobapiVersion: batch/v1 kind: Job metadata: name: register-hindsight-{{ .Release.Revision }} annotations: helm.sh/hook: post-install,post-upgrade helm.sh/hook-weight: 5 helm.sh/hook-delete-policy: before-hook-creation spec: backoffLimit: 3 ttlSecondsAfterFinished: 300 template: spec: restartPolicy: OnFailure containers: - name: register image: curlimages/curl:latest command: [/bin/sh, -c] args: - | # Wait for ContextForge for i in $(seq 1 12); do curl -sf http://context-forge:4444/health break sleep 10 done # Authenticate TOKEN$(curl -s -X POST http://context-forge:4444/auth/login \ -H Content-Type: application/json \ -d {\email\: \$ADMIN_USER\, \password\: \$ADMIN_PASS\} \ | grep -o access_token:[^]* | cut -d -f4) # Register or update curl -X POST http://context-forge:4444/admin/servers \ -H Authorization: Bearer $TOKEN \ -H Content-Type: application/json \ -d { name: hindsight, url: http://hindsight-api.hindsight.svc.cluster.local:8888/mcp, transport: streamable_http, description: Hindsight agent memory } env: - name: ADMIN_USER valueFrom: secretKeyRef: name: context-forge-credentials key: ADMIN_USERNAME - name: ADMIN_PASS valueFrom: secretKeyRef: name: context-forge-credentials key: ADMIN_PASSWORD该 Job 的执行流程很清晰先轮询 ContextForge 的健康检查端点等待其就绪再以管理账号登录换取访问令牌最后调用/admin/servers完成注册重复部署时是幂等覆盖。helm.sh/hook-weight控制其在其他 post-install 钩子中的执行顺序ttlSecondsAfterFinished保证 Job 完成后自动清理 Pod。通过 ContextForge 连接 AI 工具一旦 Hindsight 注册进 ContextForgeAI 工具就连接到 ContextForge 的统一端点——而不是直接连 Hindsight。Dust进入 Dust →Spaces → Tools → Add MCP ServerURL 填写https://your-contextforge.com/mcp认证方式Bearer tokenContextForge JWT 或 MCP 客户端令牌Hindsight 工具会与其他已注册的 MCP Server 工具一并出现。Claude Desktop在 MCP 配置中添加{ mcpServers: { context-forge: { url: https://your-contextforge.com/mcp, headers: { Authorization: Bearer your-contextforge-token } } } }故障排查Hindsight 工具未出现先确认 Server 已注册且健康# 检查已注册的 servers curl -s https://your-contextforge.com/admin/servers \ -H Authorization: Bearer $TOKEN | jq .[] | select(.name hindsight) # 直接测试 Hindsight curl -s http://hindsight-api:8888/healthContextForge 连接被拒绝如果 ContextForge 无法访问 Hindsight请检查网络连通性同一命名空间/VPCNetworkPolicy 是否放行流量注册的 URL 是否与 Hindsight 服务的实际端点一致确认 ContextForge 中设置了SSRF_ALLOW_PRIVATE_NETWORKStrue集群内后端必须。认证错误ContextForge 在网关层为用户做认证。当 Hindsight 部署在集群内部时其 MCP 端点本身不需要单独认证默认租户扩展不校验。但如果你在 Hindsight 上启用了HINDSIGHT_API_MCP_AUTH_TOKEN则需要通过 ContextForge 的请求头透传把令牌传给后端# 确保 ContextForge 转发 Authorization 请求头 ENABLE_HEADER_PASSTHROUGHtrue DEFAULT_PASSTHROUGH_HEADERS[Authorization]需要补充的一点是Hindsight 的 MCP 端点对Authorization请求头兼容Bearer token与直接传令牌两种写法hindsight-api-slim/hindsight_api/api/mcp.py因此无论 ContextForge 以何种形式透传认证头都能被正确解析。相关认证路径在 hindsight-api-slim/tests/test_mcp_endpoint_routing.py 中有对应的集成测试覆盖例如验证 MCP 令牌与租户 API Key 不一致时工具调用仍能正常工作。小结将 Hindsight 挂载到 ContextForge 网关之后记忆能力不再是某个单一 Agent 的私有功能而是成为整个 AI 工具生态共享的基础设施记忆写入、检索、综合推理、心智模型与知识库管理都可以通过统一端点按团队、按银行隔离地开放出去。结合 Hindsight 源码对双银行模式、认证透传和工具参数容错的处理这套集成在真实生产环境中具备较高的可落地性。【免费下载链接】hindsightHindsight: Agent Memory That Learns项目地址: https://gitcode.com/GitHub_Trending/hindsight2/hindsight创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考