io.github.VOYAGER-Inc/excel-vision-mcp
PYPI · EXCEL-VISION-MCP · SCANNED SEP 20
Excel MCP with image extraction and write support — AI agents see and edit xlsx files
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security99
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- Runs setuptools.build_meta at install time, a recognised native-build step with no shell scripting around it. View diagnostics → Pass
- 2 of 33 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency45
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 51 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability69
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 2347 tokens (~180/item across 13 items; 13 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management87
- Stability observed for 26 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage71
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 0% of tool parameters carry a description.Fail
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 13 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 13 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
How do I install the io.github.VOYAGER-Inc/excel-vision-mcp server?
io.github.VOYAGER-Inc/excel-vision-mcp runs locally as a PyPI package, launched with uvx excel-vision-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
pypi · excel-vision-mcp
claude mcp add voyager-inc-excel-vision-mcp -- uvx excel-vision-mcp
{
"mcpServers": {
"voyager-inc-excel-vision-mcp": {
"command": "uvx",
"args": [
"excel-vision-mcp"
]
}
}
} {
"servers": {
"voyager-inc-excel-vision-mcp": {
"command": "uvx",
"args": [
"excel-vision-mcp"
]
}
}
} codex mcp add voyager-inc-excel-vision-mcp -- uvx excel-vision-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"voyager-inc-excel-vision-mcp": {
"type": "local",
"command": [
"uvx",
"excel-vision-mcp"
],
"enabled": true
}
}
} openclaw mcp add voyager-inc-excel-vision-mcp --command uvx --arg excel-vision-mcp
mcp_servers:
voyager-inc-excel-vision-mcp:
command: "uvx"
args: ["excel-vision-mcp"] {
"McpServers": {
"voyager-inc-excel-vision-mcp": {
"Transport": "stdio",
"Command": "uvx",
"Arguments": [
"excel-vision-mcp"
]
}
}
} assistant mcp add voyager-inc-excel-vision-mcp -t stdio -c uvx -a excel-vision-mcp
{
"mcpServers": {
"voyager-inc-excel-vision-mcp": {
"command": "uvx",
"args": [
"excel-vision-mcp"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 20 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.
- 18 Sept 26 −3
- Stability: pass → 0.80 functional
- 17 Sept 26 +1
- Stability: 0.97 → pass security
- 15 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.
- 13 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.
- 11 Sept 26 −3
- Stability: pass → 0.80 functional
- 10 Sept 26 +1
- Stability: 0.97 → pass security
- 8 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Analysed pypi/excel-vision-mcp@1.2.1
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | pypi |
Background: How many MCP packages publish verified provenance →
Install scripts 1 script
| Hook | Tier | Command |
|---|---|---|
| build_backend | allowlisted | setuptools.build_meta |
Background: Why install scripts are a supply-chain risk →
Dependencies 33 packages
| Packages resolved | 33 |
|---|---|
| Stale | 2 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
add_excel_sheet ~98
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.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | – |
| position | – | – | – |
| sheet_name | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
create_excel_file ~93
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.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | – |
| overwrite | boolean | – | – |
| sheet_names | – | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
extract_images ~164
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).
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | – |
| max_height | integer | – | – |
| max_width | integer | – | – |
| sheet_name | – | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | array | yes | – |
No examples provided.
format_excel_cells ~411
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.
| Name | Type | Req | Description |
|---|---|---|---|
| bold | – | – | – |
| border_edges | string | – | – |
| border_style | – | – | – |
| cell_range | string | yes | – |
| file_path | string | yes | – |
| fill_color | – | – | – |
| font_color | – | – | – |
| font_name | – | – | – |
| font_size | – | – | – |
| horizontal_align | – | – | – |
| italic | – | – | – |
| number_format | – | – | – |
| sheet_name | – | – | – |
| vertical_align | – | – | – |
| wrap_text | – | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
get_workbook_overview ~77
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.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
insert_excel_image ~161
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.
| Name | Type | Req | Description |
|---|---|---|---|
| cell | string | yes | – |
| file_path | string | yes | – |
| height | – | – | – |
| image_path | string | yes | – |
| sheet_name | – | – | – |
| width | – | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
list_sheets ~91
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.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
read_excel_data ~230
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.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | – |
| include_hidden | boolean | – | – |
| max_rows | integer | – | – |
| sheet_name | – | – | – |
| start_row | integer | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
read_full_content ~299
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.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | – |
| include_hidden | boolean | – | – |
| max_image_height | integer | – | – |
| max_image_width | integer | – | – |
| max_rows_per_sheet | integer | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | array | yes | – |
No examples provided.
search_excel ~142
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.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | – |
| include_hidden | boolean | – | – |
| query | string | yes | – |
| sheet_name | – | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
set_excel_column_widths ~252
Set column widths manually and/or auto-fit them to content. Auto-fit sizes each column to its longest content (full-width CJK characters count double), capped at max_width. Cells longer than the cap get wrap_text enabled so long descriptions wrap onto multiple lines instead of stretching the column; Excel auto-expands their row heights on open. Columns in `widths` are set exactly and skipped by auto-fit. @param file_path: Absolute path to the .xlsx/.xlsm file. @param sheet_name: Target sheet. None = first sheet. @param widths: Explicit widths per column letter, e.g. {"A": 12, "B": 35}. @param auto_fit: Auto-size all other columns in the used range. @param max_width: Width cap for auto-fit in character units (default 60). @param wrap_overflow: Wrap cells longer than max_width (default true). @return: Confirmation listing each column and the width applied.
| Name | Type | Req | Description |
|---|---|---|---|
| auto_fit | boolean | – | – |
| file_path | string | yes | – |
| max_width | integer | – | – |
| sheet_name | – | – | – |
| widths | – | – | – |
| wrap_overflow | boolean | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
update_excel_cells ~174
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.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | – |
| sheet_name | – | – | – |
| updates | object | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
write_excel_rows ~155
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.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | – |
| rows | array | yes | – |
| sheet_name | – | – | – |
| start_cell | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
What is the io.github.VOYAGER-Inc/excel-vision-mcp server?
io.github.VOYAGER-Inc/excel-vision-mcp is listed in the public MCP registry as io.github.VOYAGER-Inc/excel-vision-mcp. Excel MCP with image extraction and write support, AI agents see and edit xlsx files. This page covers its PyPI package (excel-vision-mcp).
Is the io.github.VOYAGER-Inc/excel-vision-mcp server safe to use?
io.github.VOYAGER-Inc/excel-vision-mcp scores 79 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the io.github.VOYAGER-Inc/excel-vision-mcp server expose?
io.github.VOYAGER-Inc/excel-vision-mcp exposes 13 tools: list_sheets, read_excel_data, extract_images, read_full_content, get_workbook_overview, and 8 more. Their descriptions and schemas cost roughly 2,347 tokens of context every time the server is loaded.
Is the io.github.VOYAGER-Inc/excel-vision-mcp server still maintained?
io.github.VOYAGER-Inc/excel-vision-mcp is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the io.github.VOYAGER-Inc/excel-vision-mcp server under?
io.github.VOYAGER-Inc/excel-vision-mcp declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.