This is an automated email from the ASF dual-hosted git repository.
hsluoyz pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/casbin-gateway.git
The following commit(s) were added to refs/heads/master by this push:
new 60da300 feat(connections): grow the catalog to 36 apps across seven
categories
60da300 is described below
commit 60da300bcaed173f9990753b831f9c75278f645c
Author: Yang Luo <[email protected]>
AuthorDate: Sat Sep 5 21:31:14 2026 +0800
feat(connections): grow the catalog to 36 apps across seven categories
---
README.md | 2 +-
README_zh.md | 2 +-
connector/catalog.go | 2 +-
connector/connector.go | 4 +++
connector/connectors/airbnb.json | 20 ++++++++++++
connector/connectors/alipay.json | 48 +++++++++++++++++++++++++++++
connector/connectors/apify.json | 35 +++++++++++++++++++++
connector/connectors/browserbase.json | 39 +++++++++++++++++++++++
connector/connectors/cloudbase.json | 20 ++++++++++++
connector/connectors/dbhub.json | 34 ++++++++++++++++++++
connector/connectors/desktop-commander.json | 20 ++++++++++++
connector/connectors/elasticsearch.json | 39 +++++++++++++++++++++++
connector/connectors/gitlab.json | 42 +++++++++++++++++++++++++
connector/connectors/howtocook.json | 20 ++++++++++++
connector/connectors/kubernetes.json | 20 ++++++++++++
connector/connectors/mongodb.json | 33 ++++++++++++++++++++
connector/connectors/openzeppelin.json | 20 ++++++++++++
connector/connectors/sentry.json | 31 +++++++++++++++++++
connector/connectors/stripe.json | 2 +-
connector/connectors/train-12306.json | 20 ++++++++++++
connector/connectors/upstash.json | 39 +++++++++++++++++++++++
connector/connectors/variflight.json | 34 ++++++++++++++++++++
connector/connectors/wikipedia.json | 20 ++++++++++++
connector/connectors/yt-dlp.json | 20 ++++++++++++
web/src/locales/en/data.json | 1 +
web/src/locales/zh/data.json | 1 +
web/src/pages/ConnectionsPage.tsx | 1 +
27 files changed, 565 insertions(+), 4 deletions(-)
diff --git a/README.md b/README.md
index 819f635..6afbed6 100644
--- a/README.md
+++ b/README.md
@@ -198,7 +198,7 @@ The password behind that account is `admin` / `123`, and it
only matters if you
- **[Say what each agent may do](#what-each-agent-is-allowed-to-do)** — around
forty switches per agent, in groups, over its tools, models and providers,
enforced by Casbin on every request it relays.
- **[Know what every agent spent, even off
Gateway](#what-the-agents-spend-including-what-never-went-through-gateway)** —
read straight from the agents' own transcripts.
- **[Compare and copy skills, MCP servers and prompts across
agents](#what-to-do-next)** — every agent's install list in one table.
-- **[Connect an application once, for every
agent](docs/user-manual/en/2-agents/2.5-connections.md)** — GitHub, Notion,
Lark, Figma, a browser and a dozen more. The credential stays in Gateway rather
than in each agent's config file, every call through it is checked against that
agent's permissions, and testing one gives you a switch per tool.
+- **[Connect an application once, for every
agent](docs/user-manual/en/2-agents/2.5-connections.md)** — 36 of them: GitHub,
Notion, Lark, Figma, Sentry, Kubernetes, Stripe, a browser and the rest. The
credential stays in Gateway rather than in each agent's config file, every call
through it is checked against that agent's permissions, and testing one gives
you a switch per tool.
## Using it
diff --git a/README_zh.md b/README_zh.md
index 475d3fc..2886e74 100644
--- a/README_zh.md
+++ b/README_zh.md
@@ -196,7 +196,7 @@ Gateway 会在自己的窗口里打开 —— 不用登录:它只服务本机
- **[规定每个 Agent 能做什么](#每个-agent-能做什么)** —— 每个 Agent
四十来个开关,分组管理,覆盖工具、模型和供应商,每个转发的请求都由 Casbin 判定。
- **[统计每个 Agent 花了多少,包括没走 Gateway 的部分](#每个-agent-花了多少包括没走-gateway-的那部分)** ——
直接读 Agent 自己写的会话记录。
- **[跨 Agent 对比、复制技能 / MCP / 提示词](#接下来做什么)** —— 一张表看到所有 Agent 装了什么。
-- **[一次连接一个应用,所有 Agent 都能用](docs/user-manual/zh/2-agents/2.5-connections.md)**
—— GitHub、Notion、飞书、Figma、浏览器等十几个。凭据留在 Gateway 而不是散在每个 Agent
的配置文件里,经过它的每次调用都会按该 Agent 的权限校验,测试一次还能得到每个工具的独立开关。
+- **[一次连接一个应用,所有 Agent 都能用](docs/user-manual/zh/2-agents/2.5-connections.md)**
—— 36 个:GitHub、Notion、飞书、Figma、Sentry、Kubernetes、Stripe、浏览器等。凭据留在 Gateway
而不是散在每个 Agent 的配置文件里,经过它的每次调用都会按该 Agent 的权限校验,测试一次还能得到每个工具的独立开关。
## 使用
diff --git a/connector/catalog.go b/connector/catalog.go
index 12c6f2e..a5b6962 100644
--- a/connector/catalog.go
+++ b/connector/catalog.go
@@ -201,5 +201,5 @@ func Get(id string) (Connector, bool) {
// Categories is every section the catalog uses, in display order.
func Categories() []string {
- return []string{CategoryOffice, CategoryDocs, CategoryDev,
CategoryMail, CategoryStorage, CategoryLife}
+ return []string{CategoryOffice, CategoryDocs, CategoryDev, CategoryPro,
CategoryMail, CategoryStorage, CategoryLife}
}
diff --git a/connector/connector.go b/connector/connector.go
index 69adbdd..57827f6 100644
--- a/connector/connector.go
+++ b/connector/connector.go
@@ -41,6 +41,9 @@ const (
CategoryMail = "mail"
CategoryStorage = "storage"
CategoryLife = "life"
+ // CategoryPro is what a business runs on rather than what it builds
with:
+ // payments, filings, the services somebody is billed for using.
+ CategoryPro = "pro"
)
var categories = map[string]bool{
@@ -50,6 +53,7 @@ var categories = map[string]bool{
CategoryMail: true,
CategoryStorage: true,
CategoryLife: true,
+ CategoryPro: true,
}
// Connector is one entry in the catalog.
diff --git a/connector/connectors/airbnb.json b/connector/connectors/airbnb.json
new file mode 100644
index 0000000..0625995
--- /dev/null
+++ b/connector/connectors/airbnb.json
@@ -0,0 +1,20 @@
+{
+ "id": "airbnb",
+ "displayName": "Airbnb",
+ "category": "life",
+ "icon": "airbnb.com",
+ "description": "Searches Airbnb listings and reads one in detail: price,
rules, reviews and what is nearby.",
+ "docsUrl": "https://github.com/openbnb-org/mcp-server-airbnb",
+ "auth": {
+ "kind": "none"
+ },
+ "server": {
+ "name": "airbnb",
+ "transport": "stdio",
+ "command": "npx",
+ "args": [
+ "-y",
+ "@openbnb/mcp-server-airbnb"
+ ]
+ }
+}
diff --git a/connector/connectors/alipay.json b/connector/connectors/alipay.json
new file mode 100644
index 0000000..d22c139
--- /dev/null
+++ b/connector/connectors/alipay.json
@@ -0,0 +1,48 @@
+{
+ "id": "alipay",
+ "displayName": "Alipay",
+ "category": "pro",
+ "icon": "alipay.com",
+ "description": "Create payments, check their status and issue refunds
through your own Alipay merchant application.",
+ "docsUrl": "https://github.com/alipay/global-open-sdk-mcp",
+ "auth": {
+ "kind": "token",
+ "fields": [
+ {
+ "key": "appId",
+ "label": "App ID",
+ "placeholder": "2014...",
+ "help": "From the Alipay open platform, for your merchant
application.",
+ "required": true
+ },
+ {
+ "key": "appKey",
+ "label": "Application private key",
+ "secret": true,
+ "required": true
+ },
+ {
+ "key": "pubKey",
+ "label": "Alipay public key",
+ "help": "Used to check the signature on what Alipay sends back.",
+ "secret": true,
+ "required": true
+ }
+ ],
+ "registerUrl": "https://open.alipay.com/develop/manage"
+ },
+ "server": {
+ "name": "alipay",
+ "transport": "stdio",
+ "command": "npx",
+ "args": [
+ "-y",
+ "@alipay/mcp-server-alipay"
+ ],
+ "env": {
+ "AP_APP_ID": "${appId}",
+ "AP_APP_KEY": "${appKey}",
+ "AP_PUB_KEY": "${pubKey}"
+ }
+ }
+}
diff --git a/connector/connectors/apify.json b/connector/connectors/apify.json
new file mode 100644
index 0000000..6a70a31
--- /dev/null
+++ b/connector/connectors/apify.json
@@ -0,0 +1,35 @@
+{
+ "id": "apify",
+ "displayName": "Apify",
+ "category": "dev",
+ "icon": "apify.com",
+ "description": "Run any of Apify's scrapers and automations, so a page that
needs a real browser and a proxy is somebody else's problem.",
+ "docsUrl": "https://github.com/apify/apify-mcp-server",
+ "paid": true,
+ "auth": {
+ "kind": "token",
+ "fields": [
+ {
+ "key": "token",
+ "label": "API token",
+ "placeholder": "apify_api_...",
+ "help": "Apify console, Settings, Integrations.",
+ "secret": true,
+ "required": true
+ }
+ ],
+ "registerUrl": "https://console.apify.com/settings/integrations"
+ },
+ "server": {
+ "name": "apify",
+ "transport": "stdio",
+ "command": "npx",
+ "args": [
+ "-y",
+ "@apify/actors-mcp-server"
+ ],
+ "env": {
+ "APIFY_TOKEN": "${token}"
+ }
+ }
+}
diff --git a/connector/connectors/browserbase.json
b/connector/connectors/browserbase.json
new file mode 100644
index 0000000..58d0436
--- /dev/null
+++ b/connector/connectors/browserbase.json
@@ -0,0 +1,39 @@
+{
+ "id": "browserbase",
+ "displayName": "Browserbase",
+ "category": "dev",
+ "icon": "browserbase.com",
+ "description": "A browser that runs in Browserbase's cloud rather than on
this machine, for pages that need a real one and a clean address.",
+ "docsUrl": "https://github.com/browserbase/mcp-server-browserbase",
+ "paid": true,
+ "auth": {
+ "kind": "token",
+ "fields": [
+ {
+ "key": "apiKey",
+ "label": "API key",
+ "secret": true,
+ "required": true
+ },
+ {
+ "key": "projectId",
+ "label": "Project ID",
+ "required": true
+ }
+ ],
+ "registerUrl": "https://www.browserbase.com/settings"
+ },
+ "server": {
+ "name": "browserbase",
+ "transport": "stdio",
+ "command": "npx",
+ "args": [
+ "-y",
+ "@browserbasehq/mcp-server-browserbase"
+ ],
+ "env": {
+ "BROWSERBASE_API_KEY": "${apiKey}",
+ "BROWSERBASE_PROJECT_ID": "${projectId}"
+ }
+ }
+}
diff --git a/connector/connectors/cloudbase.json
b/connector/connectors/cloudbase.json
new file mode 100644
index 0000000..04862d5
--- /dev/null
+++ b/connector/connectors/cloudbase.json
@@ -0,0 +1,20 @@
+{
+ "id": "cloudbase",
+ "displayName": "CloudBase",
+ "category": "dev",
+ "icon": "cloudbase.net",
+ "description": "Tencent CloudBase from inside the agent: environments, cloud
functions, the database, hosting and deployments. Signing in happens through
its own tool the first time.",
+ "docsUrl": "https://github.com/TencentCloudBase/CloudBase-AI-ToolKit",
+ "auth": {
+ "kind": "none"
+ },
+ "server": {
+ "name": "cloudbase",
+ "transport": "stdio",
+ "command": "npx",
+ "args": [
+ "-y",
+ "@cloudbase/cloudbase-mcp"
+ ]
+ }
+}
diff --git a/connector/connectors/dbhub.json b/connector/connectors/dbhub.json
new file mode 100644
index 0000000..4bfac8f
--- /dev/null
+++ b/connector/connectors/dbhub.json
@@ -0,0 +1,34 @@
+{
+ "id": "dbhub",
+ "displayName": "SQL databases",
+ "category": "dev",
+ "icon": "bytebase.com",
+ "description": "One connection for PostgreSQL, MySQL, MariaDB, SQL Server
and SQLite: read the schema, run queries, explain a plan.",
+ "docsUrl": "https://github.com/bytebase/dbhub",
+ "auth": {
+ "kind": "token",
+ "fields": [
+ {
+ "key": "dsn",
+ "label": "Connection string",
+ "placeholder": "postgres://user:pass@localhost:5432/db",
+ "help": "Start with a read-only user. The agent can do whatever this
account can.",
+ "secret": true,
+ "required": true
+ }
+ ]
+ },
+ "server": {
+ "name": "dbhub",
+ "transport": "stdio",
+ "command": "npx",
+ "args": [
+ "-y",
+ "@bytebase/dbhub@latest",
+ "--transport",
+ "stdio",
+ "--dsn",
+ "${dsn}"
+ ]
+ }
+}
diff --git a/connector/connectors/desktop-commander.json
b/connector/connectors/desktop-commander.json
new file mode 100644
index 0000000..03d3234
--- /dev/null
+++ b/connector/connectors/desktop-commander.json
@@ -0,0 +1,20 @@
+{
+ "id": "desktop-commander",
+ "displayName": "Desktop Commander",
+ "category": "dev",
+ "icon": "desktopcommander.app",
+ "description": "Runs commands and edits files anywhere on this machine.
Powerful enough to be worth being deliberate about: give it its own switches
rather than leaving it open.",
+ "docsUrl": "https://github.com/wonderwhy-er/DesktopCommanderMCP",
+ "auth": {
+ "kind": "none"
+ },
+ "server": {
+ "name": "desktop-commander",
+ "transport": "stdio",
+ "command": "npx",
+ "args": [
+ "-y",
+ "@wonderwhy-er/desktop-commander@latest"
+ ]
+ }
+}
diff --git a/connector/connectors/elasticsearch.json
b/connector/connectors/elasticsearch.json
new file mode 100644
index 0000000..8d0fc7a
--- /dev/null
+++ b/connector/connectors/elasticsearch.json
@@ -0,0 +1,39 @@
+{
+ "id": "elasticsearch",
+ "displayName": "Elasticsearch",
+ "category": "dev",
+ "icon": "elastic.co",
+ "description": "Search indices, read mappings and run queries against an
Elasticsearch cluster in the agent's own words.",
+ "docsUrl": "https://github.com/elastic/mcp-server-elasticsearch",
+ "auth": {
+ "kind": "token",
+ "fields": [
+ {
+ "key": "url",
+ "label": "Cluster URL",
+ "placeholder": "https://my-cluster.es.example.com:443",
+ "required": true
+ },
+ {
+ "key": "apiKey",
+ "label": "API key",
+ "help": "Kibana, Stack Management, API keys.",
+ "secret": true,
+ "required": true
+ }
+ ]
+ },
+ "server": {
+ "name": "elasticsearch",
+ "transport": "stdio",
+ "command": "npx",
+ "args": [
+ "-y",
+ "@elastic/mcp-server-elasticsearch"
+ ],
+ "env": {
+ "ES_URL": "${url}",
+ "ES_API_KEY": "${apiKey}"
+ }
+ }
+}
diff --git a/connector/connectors/gitlab.json b/connector/connectors/gitlab.json
new file mode 100644
index 0000000..12080d7
--- /dev/null
+++ b/connector/connectors/gitlab.json
@@ -0,0 +1,42 @@
+{
+ "id": "gitlab",
+ "displayName": "GitLab",
+ "category": "dev",
+ "icon": "gitlab.com",
+ "description": "Read and write projects, issues, merge requests and
pipelines on GitLab, self-hosted instances included.",
+ "docsUrl": "https://github.com/zereight/gitlab-mcp",
+ "auth": {
+ "kind": "token",
+ "fields": [
+ {
+ "key": "token",
+ "label": "Personal access token",
+ "placeholder": "glpat-...",
+ "help": "GitLab, Preferences, Access tokens. The api scope covers
everything here.",
+ "secret": true,
+ "required": true
+ },
+ {
+ "key": "apiUrl",
+ "label": "API URL",
+ "placeholder": "https://gitlab.com/api/v4",
+ "help": "Change this for a self-hosted GitLab.",
+ "required": true
+ }
+ ],
+ "registerUrl": "https://gitlab.com/-/user_settings/personal_access_tokens"
+ },
+ "server": {
+ "name": "gitlab",
+ "transport": "stdio",
+ "command": "npx",
+ "args": [
+ "-y",
+ "@zereight/mcp-gitlab"
+ ],
+ "env": {
+ "GITLAB_PERSONAL_ACCESS_TOKEN": "${token}",
+ "GITLAB_API_URL": "${apiUrl}"
+ }
+ }
+}
diff --git a/connector/connectors/howtocook.json
b/connector/connectors/howtocook.json
new file mode 100644
index 0000000..4f66cb7
--- /dev/null
+++ b/connector/connectors/howtocook.json
@@ -0,0 +1,20 @@
+{
+ "id": "howtocook",
+ "displayName": "HowToCook",
+ "category": "life",
+ "icon": "github.com",
+ "description": "Recipes and a plan for the week from the HowToCook cookbook:
pick by ingredients, by how many people, or let it decide.",
+ "docsUrl": "https://github.com/worryzyy/HowToCook-mcp",
+ "auth": {
+ "kind": "none"
+ },
+ "server": {
+ "name": "howtocook",
+ "transport": "stdio",
+ "command": "npx",
+ "args": [
+ "-y",
+ "howtocook-mcp"
+ ]
+ }
+}
diff --git a/connector/connectors/kubernetes.json
b/connector/connectors/kubernetes.json
new file mode 100644
index 0000000..1b76138
--- /dev/null
+++ b/connector/connectors/kubernetes.json
@@ -0,0 +1,20 @@
+{
+ "id": "kubernetes",
+ "displayName": "Kubernetes",
+ "category": "dev",
+ "icon": "kubernetes.io",
+ "description": "Reads and changes the cluster your kubeconfig points at:
pods, deployments, logs, events. The switches are where you decide how much of
that an agent may do.",
+ "docsUrl": "https://github.com/Flux159/mcp-server-kubernetes",
+ "auth": {
+ "kind": "none"
+ },
+ "server": {
+ "name": "kubernetes",
+ "transport": "stdio",
+ "command": "npx",
+ "args": [
+ "-y",
+ "mcp-server-kubernetes"
+ ]
+ }
+}
diff --git a/connector/connectors/mongodb.json
b/connector/connectors/mongodb.json
new file mode 100644
index 0000000..1bb5a90
--- /dev/null
+++ b/connector/connectors/mongodb.json
@@ -0,0 +1,33 @@
+{
+ "id": "mongodb",
+ "displayName": "MongoDB",
+ "category": "dev",
+ "icon": "mongodb.com",
+ "description": "Explore collections, run queries and read indexes and
schemas on a MongoDB deployment, without leaving the editor.",
+ "docsUrl": "https://github.com/mongodb-js/mongodb-mcp-server",
+ "auth": {
+ "kind": "token",
+ "fields": [
+ {
+ "key": "connectionString",
+ "label": "Connection string",
+ "placeholder": "mongodb+srv://user:[email protected]/db",
+ "help": "The database this connection may reach. Point it at a replica
or a read-only user first.",
+ "secret": true,
+ "required": true
+ }
+ ]
+ },
+ "server": {
+ "name": "mongodb",
+ "transport": "stdio",
+ "command": "npx",
+ "args": [
+ "-y",
+ "mongodb-mcp-server@latest"
+ ],
+ "env": {
+ "MDB_MCP_CONNECTION_STRING": "${connectionString}"
+ }
+ }
+}
diff --git a/connector/connectors/openzeppelin.json
b/connector/connectors/openzeppelin.json
new file mode 100644
index 0000000..cbacb58
--- /dev/null
+++ b/connector/connectors/openzeppelin.json
@@ -0,0 +1,20 @@
+{
+ "id": "openzeppelin",
+ "displayName": "OpenZeppelin Contracts",
+ "category": "dev",
+ "icon": "openzeppelin.com",
+ "description": "Generates audited Solidity, Cairo and Stellar contracts from
the OpenZeppelin Wizard: tokens, access control, upgradeable proxies.",
+ "docsUrl": "https://github.com/OpenZeppelin/contracts-wizard",
+ "auth": {
+ "kind": "none"
+ },
+ "server": {
+ "name": "openzeppelin",
+ "transport": "stdio",
+ "command": "npx",
+ "args": [
+ "-y",
+ "@openzeppelin/contracts-mcp"
+ ]
+ }
+}
diff --git a/connector/connectors/sentry.json b/connector/connectors/sentry.json
new file mode 100644
index 0000000..8f908b3
--- /dev/null
+++ b/connector/connectors/sentry.json
@@ -0,0 +1,31 @@
+{
+ "id": "sentry",
+ "displayName": "Sentry",
+ "category": "dev",
+ "icon": "sentry.io",
+ "description": "Read issues, events and stack traces from Sentry, so an
agent debugging a crash starts from what actually happened in production.",
+ "docsUrl": "https://github.com/getsentry/sentry-mcp",
+ "auth": {
+ "kind": "token",
+ "fields": [
+ {
+ "key": "token",
+ "label": "User auth token",
+ "help": "Sentry, Settings, Auth tokens. Read scopes are enough.",
+ "secret": true,
+ "required": true
+ }
+ ],
+ "registerUrl": "https://sentry.io/settings/auth-tokens/"
+ },
+ "server": {
+ "name": "sentry",
+ "transport": "stdio",
+ "command": "npx",
+ "args": [
+ "-y",
+ "@sentry/mcp-server@latest",
+ "--access-token=${token}"
+ ]
+ }
+}
diff --git a/connector/connectors/stripe.json b/connector/connectors/stripe.json
index a5b20ac..b889fb2 100644
--- a/connector/connectors/stripe.json
+++ b/connector/connectors/stripe.json
@@ -1,7 +1,7 @@
{
"id": "stripe",
"displayName": "Stripe",
- "category": "dev",
+ "category": "pro",
"icon": "stripe.com",
"description": "Read and write customers, products, prices, invoices and
payments, so an agent can work against your billing without a dashboard.",
"docsUrl": "https://docs.stripe.com/mcp",
diff --git a/connector/connectors/train-12306.json
b/connector/connectors/train-12306.json
new file mode 100644
index 0000000..2288f20
--- /dev/null
+++ b/connector/connectors/train-12306.json
@@ -0,0 +1,20 @@
+{
+ "id": "train-12306",
+ "displayName": "China Railway 12306",
+ "category": "life",
+ "icon": "12306.cn",
+ "description": "Looks up trains, seats and fares on China Railway: which
trains run, what is left, and how long a transfer takes.",
+ "docsUrl": "https://github.com/Joooook/12306-mcp",
+ "auth": {
+ "kind": "none"
+ },
+ "server": {
+ "name": "train-12306",
+ "transport": "stdio",
+ "command": "npx",
+ "args": [
+ "-y",
+ "12306-mcp"
+ ]
+ }
+}
diff --git a/connector/connectors/upstash.json
b/connector/connectors/upstash.json
new file mode 100644
index 0000000..2927fb1
--- /dev/null
+++ b/connector/connectors/upstash.json
@@ -0,0 +1,39 @@
+{
+ "id": "upstash",
+ "displayName": "Upstash",
+ "category": "dev",
+ "icon": "upstash.com",
+ "description": "Create and manage Redis and Vector databases on Upstash, and
read what they hold.",
+ "docsUrl": "https://github.com/upstash/mcp-server",
+ "auth": {
+ "kind": "token",
+ "fields": [
+ {
+ "key": "email",
+ "label": "Account email",
+ "required": true
+ },
+ {
+ "key": "apiKey",
+ "label": "Management API key",
+ "help": "Upstash console, Account, Management API.",
+ "secret": true,
+ "required": true
+ }
+ ],
+ "registerUrl": "https://console.upstash.com/account/api"
+ },
+ "server": {
+ "name": "upstash",
+ "transport": "stdio",
+ "command": "npx",
+ "args": [
+ "-y",
+ "@upstash/mcp-server@latest",
+ "--email",
+ "${email}",
+ "--api-key",
+ "${apiKey}"
+ ]
+ }
+}
diff --git a/connector/connectors/variflight.json
b/connector/connectors/variflight.json
new file mode 100644
index 0000000..13283ab
--- /dev/null
+++ b/connector/connectors/variflight.json
@@ -0,0 +1,34 @@
+{
+ "id": "variflight",
+ "displayName": "Variflight",
+ "category": "life",
+ "icon": "variflight.com",
+ "description": "Flight status, schedules and how late a route usually runs,
from Variflight's data.",
+ "docsUrl": "https://github.com/variflight/variflight-mcp",
+ "paid": true,
+ "auth": {
+ "kind": "token",
+ "fields": [
+ {
+ "key": "apiKey",
+ "label": "API key",
+ "help": "From the Variflight developer platform.",
+ "secret": true,
+ "required": true
+ }
+ ],
+ "registerUrl": "https://mcp.variflight.com"
+ },
+ "server": {
+ "name": "variflight",
+ "transport": "stdio",
+ "command": "npx",
+ "args": [
+ "-y",
+ "@variflight-ai/variflight-mcp"
+ ],
+ "env": {
+ "VARIFLIGHT_API_KEY": "${apiKey}"
+ }
+ }
+}
diff --git a/connector/connectors/wikipedia.json
b/connector/connectors/wikipedia.json
new file mode 100644
index 0000000..3514cfc
--- /dev/null
+++ b/connector/connectors/wikipedia.json
@@ -0,0 +1,20 @@
+{
+ "id": "wikipedia",
+ "displayName": "Wikipedia",
+ "category": "docs",
+ "icon": "wikipedia.org",
+ "description": "Looks up Wikipedia articles and the images in them, so a
question of fact is answered from the encyclopedia rather than from memory.",
+ "docsUrl": "https://github.com/shelmesky/wikipedia-mcp-server",
+ "auth": {
+ "kind": "none"
+ },
+ "server": {
+ "name": "wikipedia",
+ "transport": "stdio",
+ "command": "npx",
+ "args": [
+ "-y",
+ "@shelm/wikipedia-mcp-server"
+ ]
+ }
+}
diff --git a/connector/connectors/yt-dlp.json b/connector/connectors/yt-dlp.json
new file mode 100644
index 0000000..8db9077
--- /dev/null
+++ b/connector/connectors/yt-dlp.json
@@ -0,0 +1,20 @@
+{
+ "id": "yt-dlp",
+ "displayName": "Video and subtitles",
+ "category": "life",
+ "icon": "github.com",
+ "description": "Searches videos and pulls their subtitles, transcript, audio
or the file itself, through yt-dlp. Needs yt-dlp installed on this machine.",
+ "docsUrl": "https://github.com/kevinwatt/yt-dlp-mcp",
+ "auth": {
+ "kind": "none"
+ },
+ "server": {
+ "name": "yt-dlp",
+ "transport": "stdio",
+ "command": "npx",
+ "args": [
+ "-y",
+ "@kevinwatt/yt-dlp-mcp"
+ ]
+ }
+}
diff --git a/web/src/locales/en/data.json b/web/src/locales/en/data.json
index 2084825..4ca04c1 100644
--- a/web/src/locales/en/data.json
+++ b/web/src/locales/en/data.json
@@ -850,6 +850,7 @@
"Office": "Office",
"Personal access token": "Personal access token",
"Pick at least one agent": "Pick at least one agent.",
+ "Professional": "Professional services",
"Read and organise pages, databases and wikis: find a document, take stock
of a project, and write the conclusion back.": "Read and organise pages,
databases and wikis: find a document, take stock of a project, and write the
conclusion back.",
"Read and write repositories, issues and pull requests, and search code
and history, so an agent works inside your project's own context.": "Read and
write repositories, issues and pull requests, and search code and history, so
an agent works inside your project's own context.",
"Run test": "Run test",
diff --git a/web/src/locales/zh/data.json b/web/src/locales/zh/data.json
index ed0e3f1..51ca04c 100644
--- a/web/src/locales/zh/data.json
+++ b/web/src/locales/zh/data.json
@@ -921,6 +921,7 @@
"Office": "办公协同",
"Personal access token": "个人访问令牌",
"Pick at least one agent": "至少勾选一个Agent。",
+ "Professional": "专业服务",
"Read and organise pages, databases and wikis: find a document, take stock
of a project, and write the conclusion back.":
"读取和整理页面、数据库与知识库:查找文档、梳理项目状态,并把结论写回页面。",
"Read and write repositories, issues and pull requests, and search code
and history, so an agent works inside your project's own context.":
"读写仓库、issue和pull request,检索代码与提交历史,让Agent直接在你的项目上下文里工作。",
"Run test": "测试",
diff --git a/web/src/pages/ConnectionsPage.tsx
b/web/src/pages/ConnectionsPage.tsx
index f39cd1b..9be31ee 100644
--- a/web/src/pages/ConnectionsPage.tsx
+++ b/web/src/pages/ConnectionsPage.tsx
@@ -38,6 +38,7 @@ const categoryLabels: Record<string, string> = {
office: "connector:Office",
docs: "connector:Documents",
dev: "connector:Development",
+ pro: "connector:Professional",
mail: "connector:Mail",
storage: "connector:Storage",
life: "connector:Life",
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]