Skip to content

Commit 8ee717e

Browse files
committed
feat(connections): add Slack, DingTalk, WeCom, mail, and Lark by sign-in
1 parent 4b38f27 commit 8ee717e

8 files changed

Lines changed: 262 additions & 2 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ The password behind that account is `admin` / `123`, and it only matters if you
198198
- **[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.
199199
- **[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.
200200
- **[Compare and copy skills, MCP servers and prompts across agents](#what-to-do-next)** — every agent's install list in one table.
201-
- **[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.
201+
- **[Connect an application once, for every agent](docs/user-manual/en/2-agents/2.5-connections.md)**42 of them: GitHub, Slack, Lark, DingTalk, Notion, Figma, Sentry, Kubernetes, Stripe, mail, 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.
202202

203203
## Using it
204204

README_zh.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ Gateway 会在自己的窗口里打开 —— 不用登录:它只服务本机
196196
- **[规定每个 Agent 能做什么](#每个-agent-能做什么)** —— 每个 Agent 四十来个开关,分组管理,覆盖工具、模型和供应商,每个转发的请求都由 Casbin 判定。
197197
- **[统计每个 Agent 花了多少,包括没走 Gateway 的部分](#每个-agent-花了多少包括没走-gateway-的那部分)** —— 直接读 Agent 自己写的会话记录。
198198
- **[跨 Agent 对比、复制技能 / MCP / 提示词](#接下来做什么)** —— 一张表看到所有 Agent 装了什么。
199-
- **[一次连接一个应用,所有 Agent 都能用](docs/user-manual/zh/2-agents/2.5-connections.md)** —— 36 个:GitHub、Notion、飞书、Figma、Sentry、Kubernetes、Stripe、浏览器等。凭据留在 Gateway 而不是散在每个 Agent 的配置文件里,经过它的每次调用都会按该 Agent 的权限校验,测试一次还能得到每个工具的独立开关。
199+
- **[一次连接一个应用,所有 Agent 都能用](docs/user-manual/zh/2-agents/2.5-connections.md)** —— 42 个:GitHub、Slack、飞书、钉钉、Notion、Figma、Sentry、Kubernetes、Stripe、邮箱、浏览器等。凭据留在 Gateway 而不是散在每个 Agent 的配置文件里,经过它的每次调用都会按该 Agent 的权限校验,测试一次还能得到每个工具的独立开关。
200200

201201
## 使用
202202

connector/connectors/dingtalk.json

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
{
2+
"id": "dingtalk",
3+
"displayName": "DingTalk",
4+
"category": "office",
5+
"icon": "dingtalk.com",
6+
"description": "Reads the contact directory and calendars of a DingTalk organisation through your own self-built application.",
7+
"docsUrl": "https://github.com/wangyanmao/dingtalk-mcp",
8+
"auth": {
9+
"kind": "token",
10+
"fields": [
11+
{
12+
"key": "clientId",
13+
"label": "AppKey",
14+
"help": "From your self-built app on the DingTalk open platform, where it is also called the Client ID.",
15+
"required": true
16+
},
17+
{
18+
"key": "clientSecret",
19+
"label": "AppSecret",
20+
"secret": true,
21+
"required": true
22+
}
23+
],
24+
"registerUrl": "https://open-dev.dingtalk.com/"
25+
},
26+
"server": {
27+
"name": "dingtalk",
28+
"transport": "stdio",
29+
"command": "npx",
30+
"args": [
31+
"-y",
32+
"dingtalk-mcp"
33+
],
34+
"env": {
35+
"DINGTALK_Client_ID": "${clientId}",
36+
"DINGTALK_Client_Secret": "${clientSecret}",
37+
"ACTIVE_PROFILES": "dingtalk-contacts,dingtalk-calendar"
38+
}
39+
}
40+
}

connector/connectors/email.json

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
{
2+
"id": "email",
3+
"displayName": "Email",
4+
"category": "mail",
5+
"icon": "gnome.org",
6+
"description": "Reads and sends mail over IMAP and SMTP, so it works with Gmail, Outlook, QQ, 163 and anything self-hosted without registering an application anywhere.",
7+
"docsUrl": "https://github.com/Cactusinhand/mcp_server_email",
8+
"auth": {
9+
"kind": "token",
10+
"fields": [
11+
{
12+
"key": "address",
13+
"label": "Email address",
14+
"placeholder": "you@example.com",
15+
"required": true
16+
},
17+
{
18+
"key": "password",
19+
"label": "App password",
20+
"help": "Not the password you sign in with: create an app password in your mail account's security settings.",
21+
"secret": true,
22+
"required": true
23+
},
24+
{
25+
"key": "imapHost",
26+
"label": "IMAP host",
27+
"placeholder": "imap.example.com",
28+
"help": "Only needed when the address alone is not enough to find the server."
29+
},
30+
{
31+
"key": "imapPort",
32+
"label": "IMAP port",
33+
"placeholder": "993"
34+
},
35+
{
36+
"key": "smtpHost",
37+
"label": "SMTP host",
38+
"placeholder": "smtp.example.com"
39+
},
40+
{
41+
"key": "smtpPort",
42+
"label": "SMTP port",
43+
"placeholder": "465"
44+
}
45+
]
46+
},
47+
"server": {
48+
"name": "email",
49+
"transport": "stdio",
50+
"command": "npx",
51+
"args": [
52+
"-y",
53+
"email-mcp-server"
54+
],
55+
"env": {
56+
"EMAIL_ADDRESS": "${address}",
57+
"EMAIL_PASSWORD": "${password}",
58+
"IMAP_HOST": "${imapHost}",
59+
"IMAP_PORT": "${imapPort}",
60+
"SMTP_HOST": "${smtpHost}",
61+
"SMTP_PORT": "${smtpPort}"
62+
}
63+
}
64+
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
{
2+
"id": "feishu-oauth",
3+
"displayName": "Lark (sign-in)",
4+
"category": "office",
5+
"icon": "feishu.cn",
6+
"description": "The same Lark access, granted by signing in rather than by handing over the application secret. What the agent may reach is what you may reach, not everything the app was approved for.",
7+
"docsUrl": "https://open.feishu.cn/document/authentication-management/access-token/get-user-access-token",
8+
"auth": {
9+
"kind": "oauth2",
10+
"fields": [
11+
{
12+
"key": "clientId",
13+
"label": "App ID",
14+
"placeholder": "cli_...",
15+
"help": "From your own self-built app on the Lark open platform.",
16+
"required": true
17+
},
18+
{
19+
"key": "clientSecret",
20+
"label": "App secret",
21+
"secret": true,
22+
"required": true
23+
}
24+
],
25+
"authorizeUrl": "https://open.feishu.cn/open-apis/authen/v1/authorize",
26+
"tokenUrl": "https://open.feishu.cn/open-apis/authen/v2/oauth/token",
27+
"registerUrl": "https://open.feishu.cn/app"
28+
},
29+
"server": {
30+
"name": "feishu-oauth",
31+
"transport": "stdio",
32+
"command": "npx",
33+
"args": [
34+
"-y",
35+
"@larksuiteoapi/lark-mcp",
36+
"mcp",
37+
"-a",
38+
"${clientId}",
39+
"-s",
40+
"${clientSecret}",
41+
"-u",
42+
"${accessToken}",
43+
"--token-mode",
44+
"user_access_token"
45+
]
46+
}
47+
}

connector/connectors/resend.json

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
{
2+
"id": "resend",
3+
"displayName": "Resend",
4+
"category": "mail",
5+
"icon": "resend.com",
6+
"description": "Sends mail through Resend: a report at the end of a run, an alert, anything an agent should put in somebody's inbox rather than in a log.",
7+
"docsUrl": "https://resend.com/docs/mcp-server",
8+
"auth": {
9+
"kind": "token",
10+
"fields": [
11+
{
12+
"key": "apiKey",
13+
"label": "API key",
14+
"placeholder": "re_...",
15+
"secret": true,
16+
"required": true
17+
},
18+
{
19+
"key": "sender",
20+
"label": "Sender address",
21+
"placeholder": "onboarding@resend.dev",
22+
"help": "A verified address on your Resend account. Leave it blank to name one per message."
23+
}
24+
],
25+
"registerUrl": "https://resend.com/api-keys"
26+
},
27+
"server": {
28+
"name": "resend",
29+
"transport": "stdio",
30+
"command": "npx",
31+
"args": [
32+
"-y",
33+
"resend-mcp"
34+
],
35+
"env": {
36+
"RESEND_API_KEY": "${apiKey}",
37+
"SENDER_EMAIL_ADDRESS": "${sender}"
38+
}
39+
}
40+
}

connector/connectors/slack.json

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
{
2+
"id": "slack",
3+
"displayName": "Slack",
4+
"category": "office",
5+
"icon": "slack.com",
6+
"description": "Read channels and threads, search the history and post messages in a Slack workspace.",
7+
"docsUrl": "https://github.com/korotovsky/slack-mcp-server",
8+
"auth": {
9+
"kind": "token",
10+
"fields": [
11+
{
12+
"key": "token",
13+
"label": "User OAuth token",
14+
"placeholder": "xoxp-...",
15+
"help": "From a Slack app installed in the workspace, under OAuth & Permissions.",
16+
"secret": true,
17+
"required": true
18+
}
19+
],
20+
"registerUrl": "https://api.slack.com/apps"
21+
},
22+
"server": {
23+
"name": "slack",
24+
"transport": "stdio",
25+
"command": "npx",
26+
"args": [
27+
"-y",
28+
"slack-mcp-server@latest",
29+
"--transport",
30+
"stdio"
31+
],
32+
"env": {
33+
"SLACK_MCP_XOXP_TOKEN": "${token}"
34+
}
35+
}
36+
}

connector/connectors/wecom.json

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
{
2+
"id": "wecom",
3+
"displayName": "WeCom robot",
4+
"category": "office",
5+
"icon": "work.weixin.qq.com",
6+
"description": "Posts messages into a WeCom group through its own robot webhook: a build result, an alert, a summary at the end of a run.",
7+
"docsUrl": "https://github.com/gwoo1225/wecom-mcp",
8+
"auth": {
9+
"kind": "token",
10+
"fields": [
11+
{
12+
"key": "webhookUrl",
13+
"label": "Robot webhook URL",
14+
"placeholder": "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=...",
15+
"help": "Add a group robot in WeCom and copy the address it gives you.",
16+
"secret": true,
17+
"required": true
18+
}
19+
]
20+
},
21+
"server": {
22+
"name": "wecom",
23+
"transport": "stdio",
24+
"command": "npx",
25+
"args": [
26+
"-y",
27+
"wecom-mcp"
28+
],
29+
"env": {
30+
"WECOM_WEBHOOK_URL": "${webhookUrl}"
31+
}
32+
}
33+
}

0 commit comments

Comments
 (0)