Files
skald-connectors/connectors/connectors.json
T
dguiducci 46c1446eae Switch Gmail and Gcal to env-var OAuth delivery pattern
auth.deliver changes from as:file to as:env:
- Gmail: GMAIL_CREDS_JSON env var (Google authorized_user JSON)
- Gcal: GCAL_CREDS_JSON env var

mcp_config.env removed entirely — Skald injects the env var at runtime,
no path on disk needed.

Server scripts updated:
- Check GMAIL_CREDS_JSON / GCAL_CREDS_JSON env var first
- Use Credentials.from_authorized_user_info() instead of
  from_authorized_user_file()
- Fall back to file-based loading for standalone/legacy use
- _persist_creds only writes to disk when _creds_path is set

gcal/verify.py: support GCAL_CREDS_JSON env var with shared _check_api()

Docs (SKALD.md): updated examples, field table, connector table.
2026-07-17 21:00:58 +01:00

241 lines
6.6 KiB
JSON

{
"version": 1,
"connectors": [
{
"id": "gmail",
"name": "Gmail",
"type": "mcp_local",
"scope": "user",
"icon_small": "gmail/icon_sm.svg",
"icon_large": "gmail/icon_lg.svg",
"user_description": "Read, send, and manage Gmail emails via OAuth \u2014 full MCP integration with push notifications.",
"requires": [
"OAUTH",
"PYTHON"
],
"tags": [
"email",
"mcp",
"local",
"google"
],
"auth": {
"type": "oauth2",
"provider": "google",
"scopes": [
"https://www.googleapis.com/auth/gmail.modify",
"https://www.googleapis.com/auth/gmail.labels"
]
},
"folder": "gmail",
"files": [
{
"path": "gmail_mcp_server.py",
"sha256": "53e6cdbc4ff40a095d29f7538ec23ac8fc10fb83cb28496bb28a83e7c49deaae",
"size": 47833
},
{
"path": "gmail_oauth_setup.py",
"sha256": "e488acb289c43a3e6d541140d254451ac5688c0014e8959619375b564afe8748",
"size": 3627
},
{
"path": "icon_lg.svg",
"sha256": "93c8d9c8dae96f0206e5ae3fcfe89dff3a08553ed48badf504a5abd09f5596b0",
"size": 254
},
{
"path": "icon_sm.svg",
"sha256": "029d7f5d81de6cf2b17bc60c878d465521c6817a313381bc71d625e93be19c8a",
"size": 251
},
{
"path": "requirements.txt",
"sha256": "3f659cc5e5f0543f132699b06ccf9016ffe9afb40f9df4d110e0445b8d20f63e",
"size": 82
}
]
},
{
"id": "gcal",
"name": "Google Calendar",
"type": "mcp_local",
"scope": "user",
"icon_small": "gcal/icon_sm.svg",
"icon_large": "gcal/icon_lg.svg",
"user_description": "Read, create, update, delete, and respond to Google Calendar events \u2014 full CRUD with push notifications.",
"requires": [
"OAUTH",
"PYTHON"
],
"tags": [
"calendar",
"mcp",
"local",
"google"
],
"auth": {
"type": "oauth2",
"provider": "google",
"scopes": [
"https://www.googleapis.com/auth/calendar"
]
},
"folder": "gcal",
"files": [
{
"path": "gcal_mcp_server.py",
"sha256": "87b44a407feac90ed073997bd0a558c7002eec0c408d50c45da7d99011dd6107",
"size": 38203
},
{
"path": "gcal_oauth_setup.py",
"sha256": "4abbfcf6af50cc55ca00d283353b417acc6fee7720aa10abb0fbaa0e4aa79900",
"size": 3430
},
{
"path": "verify.py",
"sha256": "d994ae435d8a5a3d9cdc85c8f73805a877c1a8818637b2912f6c31c693fdded4",
"size": 3429
},
{
"path": "icon_sm.svg",
"sha256": "477ab05d24b40aaf4209c37e30558878fd0833dfbcfa8648b0ab9b903bd171d3",
"size": 473
},
{
"path": "icon_lg.svg",
"sha256": "b5daeeaaebba5b6d5ea31fd51bc63887225dee8aa1a42b571e49263f930895a9",
"size": 479
},
{
"path": "requirements.txt",
"sha256": "3f659cc5e5f0543f132699b06ccf9016ffe9afb40f9df4d110e0445b8d20f63e",
"size": 82
}
]
},
{
"id": "email",
"name": "Email (IMAP/SMTP)",
"type": "mcp_local",
"scope": "user",
"icon_small": "email/icon_sm.svg",
"icon_large": "email/icon_lg.svg",
"user_description": "Read, search, organize, and send email over IMAP/SMTP — any provider, no OAuth. Real-time push notifications on new mail.",
"requires": [
"PYTHON",
"ENV"
],
"tags": [
"email",
"mcp",
"local",
"imap",
"smtp"
],
"folder": "email",
"files": [
{
"path": "email_mcp_server.py",
"sha256": "e8e0efc7d07be0d743f73ae80b15c924a763e57fc19000b1ef1e98237465da0f",
"size": 54522
},
{
"path": "icon_lg.svg",
"sha256": "94128b8ab2a3e701d042b6294c46bf0581152a3fe066e2fb415433e964f6935b",
"size": 308
},
{
"path": "icon_sm.svg",
"sha256": "05b8d18f8233503bba4b6668dc6c83b2e5d65cb26cfc4901366e2fa43d90737a",
"size": 306
},
{
"path": "verify.py",
"sha256": "5bd16cf4c1e2fc8b5b58083d12be0999c06dcc48ab52c3db3a531025771f6ff7",
"size": 3395
}
]
},
{
"id": "ssh",
"name": "SSH Remote Access",
"type": "mcp_local",
"scope": "user",
"icon_small": "ssh/icon_sm.svg",
"icon_large": "ssh/icon_lg.svg",
"user_description": "Full SSH remote server access — files, commands, systemd, upload/download. Aliases manage host config; auth via key/agent or elicited password.",
"requires": [
"PYTHON"
],
"tags": [
"ssh",
"mcp",
"local",
"remote",
"server",
"sysadmin"
],
"folder": "ssh",
"files": [
{
"path": "ssh_mcp_server.py",
"sha256": "fbd7aa9dfad0da57f4b3d9d437c76fd978145c8364ed5fdfdfc3ba7ccfaf117b",
"size": 49764
},
{
"path": "requirements.txt",
"sha256": "fa65d44e3d3219c79e5272ef7123352b5d71a35871ede721e66422c897b94e0e",
"size": 14
},
{
"path": "icon_sm.svg",
"sha256": "57e9e5de2ec56548a8a3821bb29c7f75c8a02f45ae236c8ae3388bb0be9b4a81",
"size": 254
},
{
"path": "icon_lg.svg",
"sha256": "84dc85685be0fff4cae1c2554b5fe958dd94455e182117c7470838b3cfca6ba1",
"size": 432
}
]
},
{
"id": "tavily",
"name": "Tavily",
"type": "mcp_remote",
"scope": "global",
"icon_small": "tavily/icon_sm.png",
"icon_large": "tavily/icon_lg.png",
"user_description": "Web search API for LLMs \u2014 real-time results, news, and content extraction.",
"requires": [
"API_KEY"
],
"tags": [
"search",
"mcp",
"remote"
],
"folder": "tavily",
"files": [
{
"path": "icon_lg.png",
"sha256": "92962ea1d49f272665262d55ecdea929972d3efab5261fc6ffea632803fceaf8",
"size": 24264
},
{
"path": "icon_sm.png",
"sha256": "92962ea1d49f272665262d55ecdea929972d3efab5261fc6ffea632803fceaf8",
"size": 24264
},
{
"path": "verify.py",
"sha256": "35a4f3b518c79363893c0438b1932b68e2dc5b4b61303037984488f6967b73a4",
"size": 2057
}
]
}
]
}