Build a personal assistant with Google Gemini, Gmail and Calendar using MCP
n8n-workflow-3905.n8n.io
· n8n.io
Talk to Your Apps: Building a Personal Assistant MCP Server with Google Gemini Wouldn't it be cool to just tell your computer or phone to "schedule a meeting with Sarah next Tuesday at 3 PM" or "find John Doe's email address" and have it actually do it? That's the dream of a personal assistant! With n8n and the power of MCP and AI models like Google Gemini, you can actually build something pretty close to that. We've put together a workflow that shows you how you can use a natural language chat interface to interact with your other apps, like your CRM, email, and calendar. What You Need to Get Started Before you dive in, you'll need a few things: n8n: An n8n instance (either cloud or self-hosted) to build and run your workflow. Google Gemini Access: Access to the Google Gemini model via an API key. Credentials for Your Apps: API keys or login details for the specific CRM, Email, and Calendar services you want to connect (like Google Sheets for CRM, Gmail, Google Calendar, etc., dependi
n8n-workflow-3905.n8n.io via a single DNS TXT record to add the
verified by owner badge, embed an Agenstry badge on your README, and earn back the missing conformance points listed below.
Dispute or improve this rating
F
Conformance score: 19/100
F-grade: card is reachable but fails most operational signals.
click to expand breakdown ▾
click to collapse breakdown ▴
agent-card.json changed within the last 7 days. We track these so downstream callers can react.
Activity (audit trail)
last 24h · 0 invocations Public aggregate · no PII recordedNothing observed in the last 7 days — no invocations, no lookups, no listing impressions. Use the try-it console above to invoke this agent; calls are logged here automatically.
Endpoints
| Agent card | https://n8n.io/workflows/3905 |
| Provider | https://n8n.io |
| Docs | https://n8n.io/workflows/3905 |
Health · last 0 probes
Similar agents embedding-nearest
Embed your Agenstry badge
Paste any of these into your README, agent card, or marketing page. Each badge auto-updates and links back to this page.
Markdown / HTML snippets
[](https://agenstry.com/agents/n8n-workflow-3905.n8n.io) [](https://agenstry.com/agents/n8n-workflow-3905.n8n.io) [](https://agenstry.com/agents/n8n-workflow-3905.n8n.io) [](https://agenstry.com/agents/n8n-workflow-3905.n8n.io)
Audit-grade evidence bundle
JSON snapshot for vendor-review files. Add ?sign=true for a JWS-signed envelope verifiable against
our JWKS. See the methodology.
Raw agent card JSON
{
"_source": "n8n.io",
"workflow": {
"id": 3905,
"name": "Build a personal assistant with Google Gemini, Gmail and Calendar using MCP",
"totalViews": 38524,
"price": null,
"purchaseUrl": null,
"recentViews": 2,
"createdAt": "2025-05-06T17:01:07.757Z",
"user": {
"username": "aitoralonso",
"verified": true
},
"readyToDemo": null,
"nodes": [
{
"id": 565,
"icon": "fa:sticky-note",
"name": "n8n-nodes-base.stickyNote",
"codex": {
"data": {
"alias": [
"Comments",
"Notes",
"Sticky"
],
"categories": [
"Core Nodes"
],
"nodeVersion": "1.0",
"codexVersion": "1.0",
"subcategories": {
"Core Nodes": [
"Helpers"
]
}
}
},
"group": "[\"input\"]",
"defaults": {
"name": "Sticky Note",
"color": "#FFD233"
},
"iconData": {
"icon": "sticky-note",
"type": "icon"
},
"displayName": "Sticky Note",
"typeVersion": 1,
"nodeCategories": [
{
"id": 9,
"name": "Core Nodes"
}
]
},
{
"id": 1119,
"icon": "fa:robot",
"name": "@n8n/n8n-nodes-langchain.agent",
"codex": {
"data": {
"alias": [
"LangChain",
"Chat",
"Conversational",
"Plan and Execute",
"ReAct",
"Tools"
],
"resources": {
"primaryDocumentation": [
{
"url": "https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/"
}
]
},
"categories": [
"AI",
"Langchain"
],
"subcategories": {
"AI": [
"Agents",
"Root Nodes"
]
}
}
},
"group": "[\"transform\"]",
"defaults": {
"name": "AI Agent",
"color": "#404040"
},
"iconData": {
"icon": "robot",
"type": "icon"
},
"displayName": "AI Agent",
"typeVersion": 3,
"nodeCategories": [
{
"id": 25,
"name": "AI"
},
{
"id": 26,
"name": "Langchain"
}
]
},
{
"id": 1163,
"icon": "fa:database",
"name": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"codex": {
"data": {
"resources": {
"primaryDocumentation": [
{
"url": "https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memorybufferwindow/"
}
]
},
"categories": [
"AI",
"Langchain"
],
"subcategories": {
"AI": [
"Memory"
],
"Memory": [
"For beginners"
]
}
}
},
"group": "[\"transform\"]",
"defaults": {
"name": "Simple Memory"
},
"iconData": {
"icon": "database",
"type": "icon"
},
"displayName": "Simple Memory",
"typeVersion": 1,
"nodeCategories": [
{
"id": 25,
"name": "AI"
},
{
"id": 26,
"name": "Langchain"
}
]
},
{
"id": 1247,
"icon": "fa:comments",
"name": "@n8n/n8n-nodes-langchain.chatTrigger",
"codex": {
"data": {
"resources": {
"primaryDocumentation": [
{
"url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.chattrigger/"
}
]
},
"categories": [
"Core Nodes",
"Langchain"
]
}
},
"group": "[\"trigger\"]",
"defaults": {
"name": "When chat message received"
},
"iconData": {
"icon": "comments",
"type": "icon"
},
"displayName": "Chat Trigger",
"typeVersion": 1,
"nodeCategories": [
{
"id": 9,
"name": "Core Nodes"
},
{
"id": 26,
"name": "Langchain"
}
]
},
{
"id": 1262,
"icon": "file:google.svg",
"name": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"codex": {
"data": {
"resources": {
"primaryDocumentation": [
{
"url": "https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatgooglegemini/"
}
]
},
"categories": [
"AI",
"Langchain"
],
"subcategories": {
"AI": [
"Language Models",
"Root Nodes"
],
"Language Models": [
"Chat Models (Recommended)"
]
}
}
},
"group": "[\"transform\"]",
"defaults": {
"name": "Google Gemini Chat Model"
},
"iconData": {
"type": "file",
"fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgNDggNDgiPjxkZWZzPjxwYXRoIGlkPSJhIiBkPSJNNDQuNSAyMEgyNHY4LjVoMTEuOEMzNC43IDMzLjkgMzAuMSAzNyAyNCAzN2MtNy4yIDAtMTMtNS44LTEzLTEzczUuOC0xMyAxMy0xM2MzLjEgMCA1LjkgMS4xIDguMSAyLjlsNi40LTYuNEMzNC42IDQuMSAyOS42IDIgMjQgMiAxMS44IDIgMiAxMS44IDIgMjRzOS44IDIyIDIyIDIyYzExIDAgMjEtOCAyMS0yMiAwLTEuMy0uMi0yLjctLjUtNCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9ImIiPjx1c2UgeGxpbms6aHJlZj0iI2EiIG92ZXJmbG93PSJ2aXNpYmxlIi8+PC9jbGlwUGF0aD48cGF0aCBmaWxsPSIjRkJCQzA1IiBkPSJNMCAzN1YxMWwxNyAxM3oiIGNsaXAtcGF0aD0idXJsKCNiKSIvPjxwYXRoIGZpbGw9IiNFQTQzMzUiIGQ9Im0wIDExIDE3IDEzIDctNi4xTDQ4IDE0VjBIMHoiIGNsaXAtcGF0aD0idXJsKCNiKSIvPjxwYXRoIGZpbGw9IiMzNEE4NTMiIGQ9Im0wIDM3IDMwLTIzIDcuOSAxTDQ4IDB2NDhIMHoiIGNsaXAtcGF0aD0idXJsKCNiKSIvPjxwYXRoIGZpbGw9IiM0Mjg1RjQiIGQ9Ik00OCA0OCAxNyAyNGwtNC0zIDM1LTEweiIgY2xpcC1wYXRoPSJ1cmwoI2IpIi8+PC9zdmc+"
},
"displayName": "Google Gemini Chat Model",
"typeVersion": 1,
"nodeCategories": [
{
"id": 25,
"name": "AI"
},
{
"id": 26,
"name": "Langchain"
}
]
},
{
"id": 1292,
"icon": "file:../mcp.svg",
"name": "@n8n/n8n-nodes-langchain.mcpClientTool",
"codex": {
"data": {
"alias": [
"Model Context Protocol",
"MCP Client"
],
"resources": {
"primaryDocumentation": [
{
"url": "https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolmcp/"
}
]
},
"categories": [
"AI",
"Langchain"
],
"subcategories": {
"AI": [
"Model Context Protocol"
]
}
}
},
"group": "[\"output\"]",
"defaults": {
"name": "MCP Client"
},
"iconData": {
"type": "file",
"fileBuffer": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTgwIiBoZWlnaHQ9IjE4MCIgdmlld0JveD0iMCAwIDE5NSAxOTUiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+Cgk8ZyBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMTIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCI+CgkJPHBhdGggZD0iTTI1IDk3Ljg1MjhMOTIuODgyMyAyOS45NzA2QzEwMi4yNTUgMjAuNTk4IDExNy40NTEgMjAuNTk4IDEyNi44MjMgMjkuOTcwNlYyOS45NzA2QzEzNi4xOTYgMzkuMzQzMSAxMzYuMTk2IDU0LjUzOTEgMTI2LjgyMyA2My45MTE3TDc1LjU1ODEgMTE1LjE3NyIvPgoJCTxwYXRoIGQ9Ik03Ni4yNjUzIDExNC40N0wxMjYuODIzIDYzLjkxMTdDMTM2LjE5NiA1NC41MzkxIDE1MS4zOTIgNTQuNTM5MSAxNjAuNzY1IDYzLjkxMTdMMTYxLjExOCA2NC4yNjUyQzE3MC40OTEgNzMuNjM3OCAxNzAuNDkxIDg4LjgzMzggMTYxLjExOCA5OC4yMDYzTDk5LjcyNDggMTU5LjZDOTYuNjAwNiAxNjIuNzI0IDk2LjYwMDYgMTY3Ljc4OSA5OS43MjQ4IDE3MC45MTNMMTEyLjMzMSAxODMuNTIiLz4KCQk8cGF0aCBkPSJNMTA5Ljg1MyA0Ni45NDExTDU5LjY0ODIgOTcuMTQ1N0M1MC4yNzU3IDEwNi41MTggNTAuMjc1NyAxMjEuNzE0IDU5LjY0ODIgMTMxLjA4N1YxMzEuMDg3QzY5LjAyMDggMTQwLjQ1OSA4NC4yMTY4IDE0MC40NTkgOTMuNTg5NCAxMzEuMDg3TDE0My43OTQgODAuODgyMiIvPgoJPC9nPgo8L3N2Zz4K"
},
"displayName": "MCP Client Tool",
"typeVersion": 1,
"nodeCategories": [
{
"id": 25,
"name": "AI"
},
{
"id": 26,
"name": "Langchain"
}
]
},
{
"id": 1293,
"icon": "file:../mcp.svg",
"name": "@n8n/n8n-nodes-langchain.mcpTrigger",
"codex": {
"data": {
"alias": [
"Model Context Protocol",
"MCP Server"
],
"resources": {
"primaryDocumentation": [
{
"url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.mcptrigger/"
}
]
},
"categories": [
"AI",
"Core Nodes",
"Langchain"
],
"subcategories": {
"AI": [
"Root Nodes",
"Model Context Protocol"
],
"Core Nodes": [
"Other Trigger Nodes"
]
}
}
},
"group": "[\"trigger\"]",
"defaults": {
"name": "MCP Server Trigger"
},
"iconData": {
"type": "file",
"fileBuffer": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTgwIiBoZWlnaHQ9IjE4MCIgdmlld0JveD0iMCAwIDE5NSAxOTUiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+Cgk8ZyBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMTIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCI+CgkJPHBhdGggZD0iTTI1IDk3Ljg1MjhMOTIuODgyMyAyOS45NzA2QzEwMi4yNTUgMjAuNTk4IDExNy40NTEgMjAuNTk4IDEyNi44MjMgMjkuOTcwNlYyOS45NzA2QzEzNi4xOTYgMzkuMzQzMSAxMzYuMTk2IDU0LjUzOTEgMTI2LjgyMyA2My45MTE3TDc1LjU1ODEgMTE1LjE3NyIvPgoJCTxwYXRoIGQ9Ik03Ni4yNjUzIDExNC40N0wxMjYuODIzIDYzLjkxMTdDMTM2LjE5NiA1NC41MzkxIDE1MS4zOTIgNTQuNTM5MSAxNjAuNzY1IDYzLjkxMTdMMTYxLjExOCA2NC4yNjUyQzE3MC40OTEgNzMuNjM3OCAxNzAuNDkxIDg4LjgzMzggMTYxLjExOCA5OC4yMDYzTDk5LjcyNDggMTU5LjZDOTYuNjAwNiAxNjIuNzI0IDk2LjYwMDYgMTY3Ljc4OSA5OS43MjQ4IDE3MC45MTNMMTEyLjMzMSAxODMuNTIiLz4KCQk8cGF0aCBkPSJNMTA5Ljg1MyA0Ni45NDExTDU5LjY0ODIgOTcuMTQ1N0M1MC4yNzU3IDEwNi41MTggNTAuMjc1NyAxMjEuNzE0IDU5LjY0ODIgMTMxLjA4N1YxMzEuMDg3QzY5LjAyMDggMTQwLjQ1OSA4NC4yMTY4IDE0MC40NTkgOTMuNTg5NCAxMzEuMDg3TDE0My43OTQgODAuODgyMiIvPgoJPC9nPgo8L3N2Zz4K"
},
"displayName": "MCP Server Trigger",
"typeVersion": 2,
"nodeCategories": [
{
"id": 9,
"name": "Core Nodes"
},
{
"id": 25,
"name": "AI"
},
{
"id": 26,
"name": "Langchain"
}
]
}
]
},
"detail": {
"description": "Talk to Your Apps: Building a Personal Assistant MCP Server with Google Gemini Wouldn't it be cool to just tell your computer or phone to \"schedule a meeting with Sarah next Tuesday at 3 PM\" or \"find John Doe's email address\" and have it actually do it? That's the dream of a personal assistant! With n8n and the power of MCP and AI models like Google Gemini, you can actually build something pretty close to that. We've put together a workflow that shows you how you can use a natural language chat interface to interact with your other apps, like your CRM, email, and calendar. What You Need to Get Started Before you dive in, you'll need a few things: n8n: An n8n instance (either cloud or self-hosted) to build and run your workflow. Google Gemini Access: Access to the Google Gemini model via an API key. Credentials for Your Apps: API keys or login details for the specific CRM, Email, and Calendar services you want to connect (like Google Sheets for CRM, Gmail, Google Calendar, etc., depending on your chosen nodes). A Chat Interface: A way to send messages to n8n to trigger the workflow (e.g., via a chat app node or webhook). How it Works (In Simple Terms) Imagine this workflow is like a helpful assistant who sits between you and your computer. Step 1: You Talk, the AI Agent Listens It all starts when you send a message through your connected chat interface. Think of this as you speaking directly to your assistant. Step 2: The Assistant's Brain (Google Gemini) Your message goes straight to the assistant's \"brain.\" In this case, the brain is powered by a smart AI model like Google Gemini. In our template we are using the latest Gemini 2.5 Pro. But this is totally up to you. Experiment and track which model fits the kind of tasks you will pass to the agent. Its job is to understand exactly what you're asking for. Are you asking to create something? Are you asking to find information? Are you asking to update something? The brain also uses a \"memory\" so it can remember what you've talked about recently, making the conversation feel more natural. We are using the default context window, which is the past 5 interactions. Step 3: The Assistant Decides What Tool to Use Once the brain understands your request, the assistant figures out the best way to help you. It looks at the request and thinks, \"Okay, to do this, I need to use one of my tools.\" Step 4: The Assistant's Toolbox (MCP & Your Apps) Here's where the \"MCP\" part comes in. Think of \"MCP\" (Model Context Protocol) as the assistant's special toolbox. Inside this toolbox are connections to all the different apps and services you use \u2013 your CRM for contacts, your email service, and your calendar. The MCP system acts like a manager for these tools, making them available to the assistant whenever they're needed. Step 5: Using the Right Tool for the Job Based on what you asked for, the assistant picks the correct tool from the toolbox. If you asked to find a contact, it grabs the \"Get Contact\" node from the CRM section. If you wanted to schedule a meeting, it picks the \"Create Event\" node from the Calendar section. If you asked to draft an email, it uses the \"Draft Email\" node. Step 6: The Tool Takes Action Now, the node or set of nodes get to work! It performs the action you requested within the specific app. The CRM tool finds or adds the contact. The Email tool drafts the message. The Calendar tool creates the event. Step 7: Task Completed! And just like that, your request is handled automatically, all because you simply told your assistant what you wanted in plain language. Why This is Awesome This kind of workflow shows the power of combining AI with automation platforms like n8n. You can move beyond clicking buttons and filling out forms, and instead, interact with your digital life using natural conversation. n8n makes it possible to visually build these complex connections between your chat, the AI brain, and all your different apps. Taking it Further (Possible Enhancements) This "
}
}