Connecting Claude to External Apps like Gmail and Slack: The Composio Integration Guide
You connect Claude to Gmail, Slack, and 1,000+ apps by installing the Connect-Apps plugin from the ComposioHQ/awesome-claude-skills repository, which proxies authenticated API calls through the Composio MCP Gateway.
The ComposioHQ/awesome-claude-skills repository provides a production-ready architecture for connecting Claude to external apps like Gmail and Slack without embedding API keys directly in prompts. Instead of managing OAuth tokens and REST wrappers inside Claude, you deploy a lightweight local plugin that communicates with the Composio MCP Gateway, a secure Model-Context-Protocol middleware that handles authentication, tool discovery, and execution.
Architecture Overview: The Connect-Apps Plugin and MCP Gateway
Local Plugin Layer
Located in connect-apps-plugin/.claude-plugin/plugin.json, the plugin manifest defines how Claude discovers and loads the integration. This local layer supplies the /connect-apps:setup command that initializes the secure connection to the gateway. The manifest specifies available toolkits and their schemas, allowing Claude to understand what actions are possible before executing them.
Composio MCP Gateway
The gateway acts as a unified Model-Context-Protocol server that stores API keys and manages OAuth refresh flows. It exposes standardized toolkits—such as GMAIL_SEND_MESSAGE, GMAIL_SEARCH_THREADS, SLACK_SEND_MESSAGE, and SLACK_SEARCH_CHANNELS—that Claude invokes instead of calling external services directly. All requests route through the gateway, which enforces granular permissions and audit logging.
How Gmail and Slack Automation Work
Gmail Automation Skill
The gmail-automation/ directory contains the skill definition (SKILL.md) that maps natural language to specific Gmail toolkit actions. When you ask Claude to send an email, the skill orchestrates calls to GMAIL_SEND_MESSAGE, optionally using GMAIL_SEARCH_PEOPLE for address resolution or GMAIL_CREATE_DRAFT for deferred sending. The skill also handles attachments and label management through the gateway’s standardized schema.
Slack Automation Skill
Similarly, the slack-automation/ skill orchestrates Slack-specific workflows. A request to post to a channel triggers SLACK_SEARCH_CHANNELS to resolve the channel ID, followed by SLACK_SEND_MESSAGE to deliver the payload. The skill also supports reactions via SLACK_ADD_REACTION and scheduled reminders through the gateway’s temporal action queue.
Installation and Setup Workflow
The integration follows a four-step lifecycle defined in connect-apps-plugin/commands/setup.md:
- Install – Load the plugin locally using
claude --plugin-dir ./connect-apps-plugin - Configure – Execute
/connect-apps:setup, which prompts for your Composio API key and registers the connection with the MCP Gateway - Execute – Claude translates natural language into structured tool calls; for example, "Send an email to alice@example.com" becomes a
GMAIL_SEND_MESSAGEinvocation - Audit – All tool calls pass through the MCP Gateway, which logs the request for compliance and applies team-level access controls before reaching external APIs
Practical Code Examples
Installing the Plugin
# Install the Connect-Apps plugin locally
claude --plugin-dir ./connect-apps-plugin
# Initialize the connection (prompts for Composio API key)
/connect-apps:setup
Sending a Gmail Message
User: Send an email to alice@example.com with subject "Project Update"
and body "The latest metrics are attached."
Claude Action:
- Resolves recipient via GMAIL_SEARCH_PEOPLE (if ambiguous)
- Calls GMAIL_SEND_MESSAGE with subject, body, and attachment parameters
- Returns confirmation message ID from the gateway
Posting to Slack
User: Post "Deploy completed successfully 🎉" to the #dev-ops channel.
Claude Action:
- Resolves channel ID via SLACK_SEARCH_CHANNELS
- Executes SLACK_SEND_MESSAGE with the text payload
- Optionally adds a thread reply or reaction via SLACK_ADD_REACTION
Key Source Files
connect-apps-plugin/.claude-plugin/plugin.json– Plugin manifest defining Claude integration points and available toolkitsconnect-apps-plugin/commands/setup.md– Implementation of the/connect-apps:setupinteractive configuration commandconnect-apps/SKILL.md– Generic skill template showing how to invoke any Composio toolkitgmail-automation/SKILL.md– Gmail-specific workflow definitions using theGMAIL_*toolsetslack-automation/SKILL.md– Slack-specific workflow definitions using theSLACK_*toolset
Summary
- The Connect-Apps plugin acts as a local bridge between Claude and external APIs via the Composio MCP Gateway
- Gmail and Slack skills translate natural language into specific toolkit calls like
GMAIL_SEND_MESSAGEandSLACK_SEND_MESSAGE - Authentication happens once during
/connect-apps:setup, after which the gateway securely stores all API credentials - All tool schemas are defined in
connect-apps-plugin/.claude-plugin/plugin.json, while workflow logic resides in the respectiveSKILL.mdfiles - The architecture separates concerns: skills define what to do, toolkits define how to call APIs, and the gateway handles auth and transport
Frequently Asked Questions
How does the Connect-Apps plugin authenticate with Gmail and Slack?
The plugin itself does not store credentials. When you run /connect-apps:setup, it registers your Composio API key with the MCP Gateway, which then manages OAuth flows and secure token storage for all connected services. Claude only receives anonymized tool signatures, never raw API keys.
Can I use this architecture to connect Claude to other apps besides Gmail and Slack?
Yes. The connect-apps/SKILL.md provides a generic template for integrating any Composio toolkit. You reference the appropriate tool names—such as GITHUB_CREATE_ISSUE or NOTION_APPEND_BLOCK—in your skill definitions, and the gateway handles the underlying API translation.
Where are the API keys stored in this architecture?
API keys never reside on your local machine or in Claude's context window. They are encrypted and stored within the Composio MCP Gateway, which proxies all requests and enforces team-level access controls before forwarding them to external services.
What specific functions does the Gmail Automation skill support?
According to the gmail-automation/SKILL.md implementation, the skill exposes workflows for sending messages, replying to threads, searching mailboxes, applying labels, creating drafts, and handling attachments through toolkit actions like GMAIL_SEND_MESSAGE, GMAIL_SEARCH_THREADS, and GMAIL_MODIFY_THREAD.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →