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.
241 lines
6.6 KiB
JSON
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
|
|
}
|
|
]
|
|
}
|
|
]
|
|
} |