oomol-lab/open-connector

GitHub: oomol-lab/open-connector

开源 AI Agent 认证网关,将 1000+ SaaS 服务的凭证管理与操作执行统一封装,让 Agent 安全地访问用户已有工具。

Stars: 1051 | Forks: 55

OpenConnector - Connect Once. Use Everywhere. [English](README.md) | [简体中文](docs/README.zh-CN.md) | [日本語](docs/README.ja.md) | [Русский](docs/README.ru.md) | [Français](docs/README.fr.md) [![License: Apache-2.0](https://img.shields.io/badge/License-Apache--2.0-blue.svg)](LICENSE.txt) ![Node.js 22+](https://img.shields.io/badge/Node.js-22%2B-339933) ![Cloudflare compatible](https://img.shields.io/badge/Cloudflare-compatible-F38020) ![MCP](https://img.shields.io/badge/MCP-ready-111827) ![OpenAPI](https://img.shields.io/badge/OpenAPI-3.1-6BA539) [![Providers](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fconnector.oomol.com%2Fv1%2Fcatalog&query=data.providerCount&label=Providers&color=%237d7fe9)](https://oomol.com/apps) [![Actions](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fconnector.oomol.com%2Fv1%2Fcatalog&query=data.actionCount&label=Actions&color=%237d7fe9)](https://oomol.com/apps)
OpenConnector 是一个开源的 AI agent 连接器网关,也是 Composio 的替代方案。 只需连接一次用户应用账户,即可向 agent 和应用公开一个包含 1,000 多个 Provider 和 9,400 多个预构建 Action 的共享目录。 在应用代码中使用 [Connector SDK](https://github.com/oomol-lab/connector-sdk),将 [oo CLI](https://github.com/oomol-lab/oo-cli) 用作本地 agent 中继,在 agent 主机端使用 MCP,在自定义客户端中使用 HTTP/OpenAPI,并使用 Web Console 进行管理和调试。 - 将凭证、scope、schema、策略和运行日志保留在可检查的 runtime 中。 - 支持本地运行,在 Fly.io 上运行,在兼容 Cloudflare 的基础设施上运行,或通过 OOMOL 托管的 runtime 运行。 - 在开源和商业 SaaS 部署中使用相同的 provider ID、Action ID、schema 和契约。 ## 提供的功能 - 涵盖 GitHub、Gmail、Notion、BigQuery、Google Analytics、Supabase、Airtable、Slack 等产品的可用连接器目录。 - 支持 API key、OAuth2、自定义凭证和免授权 Provider 的凭证处理。 - 可检查的 Action 契约:请求/响应 schema、所需 scope 以及延迟加载的 executor 源码。 - 用于连接身份、scope、runtime token、Action 允许/阻止策略、临时文件传输和脱敏运行日志的 runtime 控制功能。 - 面向本地 Docker 或 Node.js、配合持久化 SQLite 存储的 Fly.io、配合 D1/R2/Static Assets 的 Cloudflare Workers 以及 OOMOL 托管 runtime 的多种部署选项。 ## 适用场景 在 agent 需要持久访问用户已使用的工具,且不愿将 Provider 凭证交给 agent 进程的场景下,OpenConnector 非常适合相关产品。 - 需要跨工作应用、开发工具、数据系统、通信平台和 AI 服务进行复用访问的 Agent 产品。 - 正在添加 agent 工作流,且需要稳定、可检查的 Action 契约来实现用户应用访问的产品。 - 希望通过托管授权提升速度,同时保留未来向私有或自托管 runtime 控制迁移路径的团队。 ## 开发者工具 | 工具 | 用途 | | ----------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | [Connector SDK](https://github.com/oomol-lab/connector-sdk) | 轻量级 TypeScript HTTP 客户端。将 `OpenConnector` 用于自托管 runtime,或将 `Connector` / `ProjectConnector` 用于 OOMOL 托管的个人和 SaaS 终端用户连接。 | | [oo CLI](https://github.com/oomol-lab/oo-cli) | 用于连接器 Action 的本地 agent 中继。`oo connector` 可以针对 OOMOL 托管或自托管的 OpenConnector runtime 搜索、检查和运行 Action。 | | MCP | 通过 `http://localhost:3000/mcp` 向支持 MCP 的 agent 主机公开应用 Action。 | | HTTP / OpenAPI | 直接调用 `/v1/actions/*` 或检查生成的 `/openapi.json` 文档。 | Endpoint 详情、响应封装、auth header、MCP 工具和 Action 指南示例位于 [docs/runtime-api.md](docs/runtime-api.md) 中。 ## Dashboard 预览 OpenConnector 自带本地 Dashboard,可用于浏览连接器、配置凭证、创建 runtime token 以及检查 runtime 使用情况。 ### 连接器目录 使用连接器目录可以查看可用的服务、搜索 Provider,并从一个统一的界面打开它们的 Action 和凭证设置。 ![OpenConnector connector catalog dashboard](https://raw.githubusercontent.com/oomol-lab/open-connector/main/assets/open-console-en.jpg) ### 使用情况概览 部署完成后,使用概览页面可以监控 runtime 的就绪状态、可用的 Provider、可执行的 Action、最近的失败记录、工具调用趋势以及最近的调用记录。 ![OpenConnector runtime overview dashboard](https://raw.githubusercontent.com/oomol-lab/open-connector/main/assets/overview-page-en.jpg) Provider 名称和商标归其各自所有者所有,仅用于标识和实现互操作性。 ## 工作原理 ``` flowchart LR Agent["AI Agent / App"] -->|"SDK / CLI / MCP / HTTP"| Gateway["OpenConnector Gateway"] Gateway --> Auth["Credential & OAuth Boundary"] Gateway --> Catalog["Provider Catalog"] Gateway --> Actions["Open-source Action Executors"] Gateway --> Policy["Tokens, Scopes, Allow/Block Policy"] Gateway --> Logs["Run Logs"] Actions --> Providers["1,000+ Providers"] Console["Web Console"] --> Gateway Cloudflare["Cloudflare Workers, D1, R2"] -. deploy .-> Gateway ``` 应用和 agent 会发现 Action、检查 schema 和 scope、选择连接别名,并通过网关执行。Provider 的密钥保留在 runtime 边界之后;agent 接收运行所需的元数据、安全的账户标签以及执行结果。 ## 使用路径 | 路径 | 最适合 | 包含内容 | | ---------------------------- | --------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | 开源自托管 | 希望获得完全控制权的开发者和团队 | 本地 Docker 或 Node runtime,SQLite 存储,MCP,HTTP,OpenAPI 和 Web Console | | Fly.io 自托管 | 希望使用托管式 Docker runtime 的团队 | Node Docker runtime,Fly volume 上的 SQLite 存储,TLS,健康检查,MCP,HTTP,OpenAPI 和 Web Console | | 兼容 Cloudflare 的部署 | 希望使用轻量级托管 runtime 的团队 | Workers runtime,D1 状态,R2 传输文件,以及用于 console 的 Static Assets | | [OOMOL](https://oomol.com/) | 受限于 OAuth 审批或发布截止日期的团队 | 托管式 auth 和 runtime 基础设施,具有相同的 provider 和 Action 契约;与开源接口兼容,便于日后进行私有或自托管部署 | ## Cloudflare 快速入门视频 [![Deploy OpenConnector on Cloudflare Workers](https://raw.githubusercontent.com/oomol-lab/open-connector/main/assets/cloudflare-quickstart-video.png)](https://www.youtube.com/watch?v=R0V1ZdCuTgc) [Cloudflare Workers 部署演示](https://www.youtube.com/watch?v=R0V1ZdCuTgc) 展示了如何通过 Workers、D1、R2 和 Web Console 在 Cloudflare 上启动 OpenConnector。该视频遵循与 [docs/cloudflare.md](docs/cloudflare.md) 相同的流程:创建 Cloudflare 资源,复制 `wrangler.example.jsonc` 为 `wrangler.local.jsonc`,应用 D1 迁移,设置所需的密钥,并运行 `npm run deploy:cloudflare`。 ## 快速入门 使用 Docker Compose 启动 runtime: ``` docker compose up --build ``` 打开本地 console 和生成的 API 参考文档: ``` http://localhost:3000 http://localhost:3000/docs ``` 运行一个免授权 Action 来验证 runtime: ``` curl -s -X POST http://localhost:3000/v1/actions/hackernews.get_top_stories \ -H 'content-type: application/json' \ -d '{"input":{}}' ``` 有关完整的本地设置、首次 Provider 连接、OAuth 流程和 runtime 设置,请参阅 [docs/quickstart.md](docs/quickstart.md)。 ## 连接 Provider GitHub 是最简单的凭证示例,因为它可以使用个人访问 token: ``` curl -s -X PUT http://localhost:3000/api/connections/github \ -H 'content-type: application/json' \ -d '{"authType":"api_key","values":{"apiKey":"github_pat_..."}}' curl -s -X POST http://localhost:3000/v1/actions/github.get_current_user \ -H 'content-type: application/json' \ -d '{"input":{}}' ``` 有关 OAuth2 应用、命名连接、凭证加密、token 刷新和 Action 策略,请参阅 [docs/credentials.md](docs/credentials.md) 和 [docs/configuration.md](docs/configuration.md)。 ## Web Console 对于基于 npm 的本地开发,请打开 `http://localhost:5173`;Web Console 开发服务器会将 API 请求代理到 `http://localhost:3000` 的 runtime。对于 Docker 或构建好的 Node runtime,可以通过 `http://localhost:3000` 访问 console。 该 console 支持 Provider 浏览、API key 和 OAuth 客户端配置、runtime token 创建、Action schema 检查、Action 调试、近期运行审查,以及访问生成的 OpenAPI 和 MCP 元数据。 ## Cloudflare 部署 OpenConnector 可以在 Cloudflare 上运行,使用 Workers 作为 runtime,使用 D1 进行状态管理,使用 R2 传输文件,以及使用 Static Assets 提供 Web Console。 有关资源创建、迁移、密钥、本地 Worker 预览和远程部署,请参阅 [docs/cloudflare.md](docs/cloudflare.md)。 ## Fly.io 部署 OpenConnector 也可以在 Fly.io 上运行,使用 Node Docker runtime 和 Fly volume 上的持久化 SQLite 存储。 有关应用创建、volume 设置、密钥配置、部署、自定义域名和扩展的信息,请参阅 [docs/fly-io.md](docs/fly-io.md)。 ## 想直接使用它? 上述路径适用于希望将连接器集成到其自身产品、runtime 或基础设施中的团队。如果您想先尝试 SaaS 连接体验,或者直接在日常工作中使用它,则无需先部署 OpenConnector 或集成 SDK、CLI、MCP 或 HTTP API。 [Wanta](https://wanta.ai/) 是使用同样共享的 1,000 多种 SaaS/Provider 覆盖范围的桌面产品入口。只需连接一次账户,即可使用自然语言在已连接的工具中进行搜索、组织、创建和同步。 | 如果您想 | Wanta 提供 | | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | | 直接尝试 1,000 多种 SaaS 连接 | 无需先部署 runtime 或集成 SDK/CLI,即可使用相同的 SaaS/Provider 覆盖范围。 | | 在日常工作中使用 Agent | 通过自然语言跨邮件、聊天、文档、数据、项目、支持、开发工具和营销工具进行工作。 | | 与团队共享已连接的功能 | 只需配置一次连接和访问 scope;队友无需设置即可使用它们,同时密钥、token 和凭证保持隐藏状态。 | ## 文档 - [快速入门](docs/quickstart.md) - [开发者工具](docs/sdk-cli.md) - [Gmail OAuth 和 SDK 教程](docs/gmail-oauth-sdk.md) - [Runtime API 和 MCP](docs/runtime-api.md) - [Fly.io 部署](docs/fly-io.md) - [Cloudflare 部署](docs/cloudflare.md) - [配置](docs/configuration.md) - [凭证和 OAuth](docs/credentials.md) - [目录格式](docs/catalog-format.md) - [验证语言](docs/verification.md) - [贡献指南](CONTRIBUTING.md) - [行为准则](CODE_OF_CONDUCT.md) - [安全](SECURITY.md) ## 开发 使用 Node.js 22 或更高版本: ``` npm install npm run dev ``` 本地 API runtime 监听 `http://localhost:3000`。Web Console 开发服务器监听 `http://localhost:5173`,并将 API 请求代理到 runtime。 在提交 Pull Request 之前: ``` npm run fix-check npm test ``` Provider 代码位于 `src/providers/` 下。有关 Provider 的贡献规则,请参阅 [CONTRIBUTING.md](CONTRIBUTING.md#adding-providers)。 ## 许可范围 除非另有说明,为本仓库编写的源代码、脚本、生成的项目脚手架、测试和文档均使用 Apache License, Version 2.0 进行授权。请参阅 [LICENSE.txt](LICENSE.txt)。 本仓库的 Apache-2.0 许可证不授予对第三方产品、Provider、应用、API、商标、服务标记、商业名称、徽标、图标、品牌资产、文档、屏幕截图或其他由各自所有者拥有的受版权保护材料的权利。 Provider 和应用名称、元数据、链接、scope、权限以及可选的徽标/图标仅为标识服务并实现互操作性而包含。所有第三方品牌和产品权利均保留归其各自所有者所有。包含在此目录中并不意味着获得这些所有者的认可、赞助、合作、认证或验证。 如果您贡献 Provider 元数据或资产,请仅提交您有权提交的材料。建议链接到官方公开资产,而不是将品牌文件复制到本仓库中。
标签:MITM代理, 程序员工具, 自动化攻击, 请求拦截