Excel Vision MCP vs Google Workspace MCP | AllMCPs
Side-by-Side Model Context Protocol Comparison
Excel Vision MCP vs Google Workspace MCP
In-depth architectural comparison of the Excel Vision MCP and Google Workspace MCP MCP servers. Compare execution transports, security boundaries, tool capabilities, quality scores, and ready-to-paste client installation snippets for Claude, Cursor, Windsurf, and VS Code.
At a Glance & Executive Verdict
Excel Vision MCP
Workplace & Productivity · Local stdio
Quality: 61/100 (Good) | Auth: No auth required
Google Workspace MCP
Workplace & Productivity · Local stdio
Quality: 67/100 (Great) | Auth: OAuth 2.0
Verdict Summary: Choose Excel Vision MCP if you need specialized Workplace & Productivity tools running via a local process. Choose Google Workspace MCP if your workspace requires Workplace & Productivity integration with local subprocess execution. Both servers can be configured concurrently in your client's mcpServers manifest.
Which MCP Server Should You Choose?
Choose Excel Vision MCP when:
You need dedicated capabilities in the Workplace & Productivity domain.
You prefer local stdio subprocess transport architecture.
Your security boundary fits: No auth required (Free / Open Source).
You need dedicated capabilities in the Workplace & Productivity domain.
You prefer local stdio subprocess transport architecture.
Your security boundary fits: OAuth 2.0 (Free / Open Source).
You have access to required keys: GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET, GOOGLE_OAUTH_REDIRECT_URI, WORKSPACE_MCP_LOG_LEVEL, WORKSPACE_MCP_PORT, WORKSPACE_MCP_HOST.
Excel reading MCP with embedded image extraction — AI agents see text and images in xlsx files
Comprehensive Google Workspace MCP server with full support for Google Calendar, Drive, Gmail, and Docs, Forms, Chats, Slides and Sheets over stdio, Streamable HTTP and SSE transports.
List all sheets in an Excel workbook with their dimensions and metadata.
Returns sheet names, row/column counts, data ranges, merged cell counts,
and total embedded image count. Use this to understand the structure of
an Excel file before reading its contents.
@param file_path: Absolute path to the .xlsx file.
@return: Formatted text with workbook structure overview.
read_excel_data
Read cell data from an Excel sheet with pagination for large files.
Returns cell values organized by row with coordinate labels and
formatting markers ([B]=bold, [S]=strikethrough, [HL:color]=highlight,
[C:color]=font color) that reveal the author's emphasis and status marks.
Hidden rows/columns are skipped by default — the author hid them for a
reason — except hidden cells that visible formulas depend on, which are
kept and marked [HIDDEN-REF].
@param file_path: Absolute path to the .xlsx file.
@param sheet_name: Sheet to read. None = first/active sheet.
@param start_row: Starting row number (1-indexed).
@param max_rows: Maximum rows to return (default 200).
@param include_hidden: Set true to also read hidden rows/columns.
@return: Formatted text table with cell values and formatting markers.
extract_images
Extract all embedded images from an Excel file.
Uses dual extraction strategy: cell-position mapping (primary) and
ZIP archive scanning (fallback) to ensure no images are missed.
Returns images as base64-encoded ImageContent that AI can visually analyze.
@param file_path: Absolute path to the .xlsx file.
@param sheet_name: Specific sheet, or None for all sheets.
@param max_width: Max width in pixels for image optimization (default 1024).
@param max_height: Max height in pixels for image optimization (default 1024).
@return: Mixed list of TextContent (metadata) and ImageContent (images).
Ready-to-Paste Client Configurations
Paste either (or both) of these JSON server blocks into your client config file (e.g. claude_desktop_config.json or ~/.cursor/mcp.json).
Excel Vision MCP is categorized under Workplace & Productivity and uses a local stdio subprocess. In contrast, Google Workspace MCP belongs to Workplace & Productivity using local stdio subprocess. Select Excel Vision MCP when you need capabilities focused on workplace & productivity and Google Workspace MCP when you require tools for workplace & productivity.
Read the FULL content of an Excel file including all text data AND embedded images.
This is the primary tool for comprehensive document analysis. Returns all sheet
data as structured text followed by all extracted images with their cell positions.
Ideal for analyzing documents where both text and diagrams/screenshots are
essential, such as requirement definitions, reports, or design specs.
For very large files, data is paginated per sheet. Image extraction uses
dual strategy (cell-mapping + archive) for maximum coverage. Cell text
carries formatting markers ([B]=bold, [S]=strikethrough, [HL:color]=
highlight) so emphasis and status marks survive into the analysis.
Hidden rows/columns are skipped by default, except hidden cells that
visible formulas depend on.
@param file_path: Absolute path to the .xlsx file.
@param max_rows_per_sheet: Max rows to read per sheet (default 500).
@param max_image_width: Max width for image optimization (default 1024).
@param max_image_height: Max height for image optimization (default 1024).
@param include_hidden: Set true to also read hidden rows/columns.
@return: Mixed list of TextContent and ImageContent covering entire workbook.
get_workbook_overview
Get a quick summary overview of an Excel workbook.
Returns file metadata, sheet list with dimensions, image count,
and merged cell information. Use this for a fast assessment
before deeper analysis.
@param file_path: Absolute path to the .xlsx file.
@return: Formatted text summary.
search_excel
Search for text content across all cells in an Excel workbook.
Performs case-insensitive substring search and returns matching cells
with their coordinates and values. Hidden rows/columns are excluded by
default. Limited to 100 results.
@param file_path: Absolute path to the .xlsx file.
@param query: Text to search for.
@param sheet_name: Limit to specific sheet, or None for all sheets.
@param include_hidden: Set true to also search hidden rows/columns.
@return: Formatted text with search results.
create_excel_file
Create a new empty .xlsx workbook.
@param file_path: Absolute destination path; parent directory must exist.
@param sheet_names: Sheet names to create in order. None = single "Sheet1".
@param overwrite: Set true to replace an existing file. Default false.
@return: Confirmation with the created sheet list.
add_excel_sheet
Add a new empty sheet to an existing workbook.
@param file_path: Absolute path to the .xlsx/.xlsm file.
@param sheet_name: Name for the new sheet; must not already exist.
@param position: 0-based index to insert at. None = append at the end.
@return: Confirmation with the updated sheet list.
update_excel_cells
Set individual cells by coordinate, e.g. {"A1": "Title", "B2": 42}.
String values starting with "=" are written as formulas (e.g. "=SUM(A1:A5)").
Note: newly written formulas have no calculated value until the file is
opened in Excel. For cells inside a merged range, write to the range's
top-left anchor cell.
The save is atomic — a failed write never corrupts the original file.
@param file_path: Absolute path to the .xlsx/.xlsm file.
@param updates: Mapping of cell coordinate to value.
@param sheet_name: Target sheet. None = first sheet.
@return: Confirmation with the number of cells written.
write_excel_rows
Write a rectangular block of rows starting at start_cell.
Efficient for tabular data: pass a list of rows, each a list of values.
Existing cells in the target range are overwritten; cells outside it
are untouched. The save is atomic.
@param file_path: Absolute path to the .xlsx/.xlsm file.
@param rows: List of rows, each a list of cell values.
@param sheet_name: Target sheet. None = first sheet.
@param start_cell: Top-left coordinate of the block (default "A1").
@return: Confirmation with the written range.
insert_excel_image
Insert an image from a local file into a workbook, anchored at a cell.
@param file_path: Absolute path to the .xlsx/.xlsm file.
@param image_path: Absolute path to the image file (PNG/JPEG/GIF/BMP).
@param cell: Anchor cell coordinate (e.g. "B2").
@param sheet_name: Target sheet. None = first sheet.
@param width: Display width in pixels. None = natural size.
@param height: Display height in pixels. None = natural size.
@return: Confirmation with anchor position and display size.
format_excel_cells
Apply formatting to a cell range: font, colors, borders, alignment, number format.
Only the attributes you pass are changed; existing styling is preserved.
Example — style a header row: cell_range="A1:D1", bold=true,
font_color="FFFFFF", fill_color="4472C4", horizontal_align="center",
border_style="thin".
@param file_path: Absolute path to the .xlsx/.xlsm file.
@param cell_range: Range like "A1:C10" or a single cell like "B2".
@param sheet_name: Target sheet. None = first sheet.
@param font_name: Font family (e.g. "Calibri").
@param font_size: Font size in points.
@param bold: Bold on/off.
@param italic: Italic on/off.
@param font_color: Text color, RRGGBB hex (e.g. "FFFFFF").
@param fill_color: Background color, RRGGBB hex (e.g. "4472C4").
@param border_style: thin, medium, thick, double, dashed, or dotted.
@param border_edges: "all" = every cell; "outline" = outer edge of range only.
@param horizontal_align: left, center, right, or justify.
@param vertical_align: top, center, or bottom.
@param wrap_text: Enable/disable text wrapping.
@param number_format: Excel format code (e.g. "#,##0.00", "dd/mm/yyyy", "0%").
@return: Confirmation with the number of cells formatted.
+1 more tools listed on main page
Google Workspace MCP Tools (123)
start_google_auth
Manually initiate Google OAuth authentication flow.
NOTE: This is a legacy OAuth 2.0 tool and is disabled when OAuth 2.1 is enabled.
The authentication system automatically handles credential checks and prompts for
authentication when needed. Only use this tool if:
1. You need to re-authenticate with different credentials
2. You want to proactively authenticate before using other tools
3. The automatic authentication flow failed and you need to retry
In most cases, simply try calling the Google Workspace tool you need - it will
automatically handle authentication if required.
search_gmail_messages
Searches messages in a user's Gmail account based on a query.
Returns both Message IDs and Thread IDs for each found message, along with Gmail web interface links for manual verification.
Supports pagination via page_token parameter.
get_gmail_message_content
Retrieves the full content (subject, sender, recipients, body) of a specific Gmail message.
Bodies are returned inline and truncated at 20,000 characters. Set full=True to
get the complete, untruncated message instead: it is exported to disk and the
response carries a short-lived download URL (HTTP transport) or file path (stdio
transport) rather than the body, so large messages never stream through the model
context. Stateless deployments have no file storage, so there full=True returns the
untruncated body inline.
get_gmail_messages_content_batch
Retrieves the content of multiple Gmail messages in a single batch request.
Supports up to 25 messages per batch to prevent SSL connection exhaustion.
get_gmail_attachment_content
Downloads an email attachment and saves it to local disk.
In stdio mode, returns the local file path for direct access.
In HTTP mode, returns a temporary download URL (valid for 1 hour).
May re-fetch message metadata to resolve filename and MIME type.
send_gmail_message
Sends an email using the user's Gmail account. Supports new emails, replies, and
forwards, with optional attachments. Supports Gmail's "Send As" feature to send
from configured alias addresses.
To forward an existing message, pass forward_message_id. The original subject,
body (quoted with a "Forwarded message" header), and attachments are carried over.
In forward mode, body (if any) is prepended as a note and subject is optional.
Threading, reply, and signature options do not apply when forwarding.
THIS TOOL SENDS IMMEDIATELY AND CANNOT SCHEDULE. Gmail's REST API exposes no
send-time parameter; Schedule send is a web-UI feature with no API equivalent,
so no argument to this tool can defer delivery. Never tell a user a message
was scheduled. For "prepare now, deliver later", create a draft with
draft_gmail_message. An external scheduler must retain the message data to
create and send a new message via send_gmail_message at the chosen time, or
call users.drafts.send with the draft ID returned by draft_gmail_message.
Alternatively, let the user schedule that draft in the Gmail UI.
draft_gmail_message
Creates a draft email in the user's Gmail account. Supports both new drafts and reply drafts with optional attachments.
Supports Gmail's "Send As" feature to draft from configured alias addresses.
SCHEDULED SEND IS NOT AVAILABLE. Gmail's REST API exposes no send-time
parameter; the Schedule send feature is web-UI only, and a message cannot be
placed in the Scheduled folder through the API. Do not claim a message was
scheduled. To deliver at a chosen time, create a draft with
draft_gmail_message. An external scheduler must retain the message data to
create and send a new message via send_gmail_message then, or call
users.drafts.send with the draft ID returned by draft_gmail_message.
Alternatively, let the user schedule the draft in the Gmail UI.
get_gmail_thread_content
Retrieves the complete content of a Gmail conversation thread, including all messages.
Optionally also returns structured ownership analysis so a caller can
determine who sent the last message and who owes whom a response without
re-parsing the formatted string or making a second tool call.
get_gmail_threads_content_batch
Retrieves the content of multiple Gmail threads in a single batch request.
Supports up to 25 threads per batch to prevent SSL connection exhaustion.
list_gmail_labels
Lists labels in the user's Gmail account.
manage_gmail_label
Manages Gmail labels: create, update, or delete labels.
list_gmail_filters
Lists all Gmail filters configured in the user's mailbox.