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]

Reply via email to