---
title: "Free Online Aspose.Cells Cloud MCP Client for AI Spreadsheets"
description: "Use Aspose.Cells Cloud AI spreadsheet tools online for free. Connect to the MCP server in your browser, run Excel AI tasks, and get results instantly — no install."

---

# Free Online Aspose.Cells Cloud MCP Client for AI Spreadsheets


> Use Aspose.Cells Cloud AI spreadsheet tools online for free. Connect to the MCP server in your browser, run Excel AI tasks, and get results instantly — no install.





















































```
- 
.cells-cloud-mcp-root {
--cells-cloud-mcp-primary: #4f46e5;
--cells-cloud-mcp-secondary: #7c3aed;
--cells-cloud-mcp-accent: #06b6d4;
--cells-cloud-mcp-dark: #1e293b;
--cells-cloud-mcp-light: #f8fafc;
--cells-cloud-mcp-card-bg: rgba(255, 255, 255, 0.95);
--cells-cloud-mcp-shadow: 0 10px 25px rgba(0, 0, 0, 0.1);
--cells-cloud-mcp-transition: all 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94);
--cells-cloud-mcp-ok: #10b981;
--cells-cloud-mcp-err: #ef4444;
--cells-cloud-mcp-warn: #d29922;
font-family: 'Segoe UI', sans-serif;
background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
color: var(--cells-cloud-mcp-dark);
line-height: 1.6;
min-height: 100vh;
}
.cells-cloud-mcp-root *,
.cells-cloud-mcp-root *::before,
.cells-cloud-mcp-root *::after {
box-sizing: border-box;
}
.cells-cloud-mcp-container {
max-width: 1200px;
margin: 0 auto;
padding: 2rem;
}
.cells-cloud-mcp-header {
text-align: center;
margin-bottom: 2.5rem;
padding-top: 2rem;
}
.cells-cloud-mcp-header-title {
font-size: 2.8rem !important;
margin: 0 0 1rem !important;
background: linear-gradient(to right, var(--cells-cloud-mcp-primary), var(--cells-cloud-mcp-accent)) !important;
-webkit-background-clip: text !important;
background-clip: text !important;
color: transparent !important;
}
.cells-cloud-mcp-header-subtitle {
color: #64748b;
font-size: 1.1rem;
max-width: 640px;
margin: 0 auto !important;
}
.cells-cloud-mcp-card {
background: var(--cells-cloud-mcp-card-bg);
border-radius: 20px;
padding: 2rem;
box-shadow: var(--cells-cloud-mcp-shadow);
margin-bottom: 1.5rem;
transition: var(--cells-cloud-mcp-transition);
}
.cells-cloud-mcp-card-compact { padding: 1.25rem 2rem; }
.cells-cloud-mcp-card-title {
font-size: 1.4rem !important;
margin: 0 0 1rem;
color: var(--cells-cloud-mcp-dark) !important;
display: flex;
align-items: center;
gap: 0.6rem;
}
.cells-cloud-mcp-card-title i { color: var(--cells-cloud-mcp-primary); }
.cells-cloud-mcp-label {
display: block;
color: #64748b;
font-size: 0.85rem;
font-weight: 600;
margin-bottom: 0.5rem;
text-transform: uppercase;
letter-spacing: 0.03em;
}
.cells-cloud-mcp-input,
.cells-cloud-mcp-textarea,
.cells-cloud-mcp-select {
width: 100%;
font: inherit;
color: var(--cells-cloud-mcp-dark);
background: white;
border: 2px solid #e2e8f0;
border-radius: 12px;
padding: 0.8rem 1rem;
transition: var(--cells-cloud-mcp-transition);
}
.cells-cloud-mcp-input:focus,
.cells-cloud-mcp-textarea:focus,
.cells-cloud-mcp-select:focus {
outline: none;
border-color: var(--cells-cloud-mcp-primary);
box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.1);
}
.cells-cloud-mcp-textarea {
font-family: ui-monospace, Consolas, monospace;
font-size: 0.9rem;
resize: vertical;
}
.cells-cloud-mcp-input-preview { color: #94a3b8 !important; }
.cells-cloud-mcp-btn {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 0.6rem;
background: linear-gradient(to right, var(--cells-cloud-mcp-primary), var(--cells-cloud-mcp-secondary));
color: white !important;
padding: 0.9rem 2rem;
border-radius: 50px;
border: none;
font: inherit !important;
font-weight: 600 !important;
cursor: pointer;
transition: var(--cells-cloud-mcp-transition);
box-shadow: 0 5px 20px rgba(79, 70, 229, 0.3);
}
.cells-cloud-mcp-btn:hover:not(:disabled) {
transform: translateY(-3px);
box-shadow: 0 8px 25px rgba(79, 70, 229, 0.4);
}
.cells-cloud-mcp-btn:disabled { opacity: 0.5; cursor: not-allowed; transform: none; }
.cells-cloud-mcp-btn-ghost {
background: white;
color: var(--cells-cloud-mcp-dark);
border: 2px solid #e2e8f0;
box-shadow: none;
padding: 0.6rem 1.2rem;
}
.cells-cloud-mcp-btn-ghost:hover:not(:disabled) {
border-color: var(--cells-cloud-mcp-primary);
color: var(--cells-cloud-mcp-primary);
transform: translateY(-2px);
box-shadow: 0 4px 12px rgba(79, 70, 229, 0.15);
}
.cells-cloud-mcp-btn-small { padding: 0.55rem 1.1rem; font-size: 0.9rem; }
.cells-cloud-mcp-row { display: flex; gap: 0.8rem; align-items: flex-end; }
.cells-cloud-mcp-row > *:first-child { flex: 1; }
.cells-cloud-mcp-status {
padding: 1rem 1.25rem;
border-radius: 12px;
background: #f8fafc;
border-left: 4px solid #cbd5e1;
font-size: 0.95rem;
}
.cells-cloud-mcp-status-ok { border-left-color: var(--cells-cloud-mcp-ok); background: rgba(16,185,129,0.06); }
.cells-cloud-mcp-status-err { border-left-color: var(--cells-cloud-mcp-err); background: rgba(239,68,68,0.06); }
.cells-cloud-mcp-status-warn { border-left-color: var(--cells-cloud-mcp-warn); background: rgba(210,153,34,0.06); }
.cells-cloud-mcp-status b { color: inherit; }
.cells-cloud-mcp-status-detail {
color: #64748b;
margin-top: 0.5rem;
font-size: 0.85rem;
line-height: 1.5;
}
.cells-cloud-mcp-status code {
font-family: ui-monospace, Consolas, monospace;
background: rgba(0,0,0,0.06);
padding: 0.1rem 0.4rem;
border-radius: 4px;
font-size: 0.85em;
}
.cells-cloud-mcp-tools {
max-height: 320px;
overflow: auto;
margin-top: 0.5rem;
}
.cells-cloud-mcp-tool {
padding: 0.75rem 1rem;
border-radius: 10px;
cursor: pointer;
transition: var(--cells-cloud-mcp-transition);
border: 1px solid transparent;
}
.cells-cloud-mcp-tool:hover { background: #f1f5f9; }
.cells-cloud-mcp-tool-selected {
background: rgba(79, 70, 229, 0.08);
border-color: rgba(79, 70, 229, 0.25);
}
.cells-cloud-mcp-tool-name {
font-family: ui-monospace, Consolas, monospace;
font-size: 0.9rem;
font-weight: 600;
color: var(--cells-cloud-mcp-dark);
}
.cells-cloud-mcp-tool-desc {
color: #64748b;
font-size: 0.85rem;
margin-top: 0.2rem;
}
.cells-cloud-mcp-output {
font-family: ui-monospace, Consolas, monospace;
font-size: 0.85rem;
white-space: pre-wrap;
word-break: break-word;
margin: 0;
max-height: 420px;
overflow: auto;
background: #0f172a;
color: #e2e8f0;
padding: 1.25rem;
border-radius: 12px;
line-height: 1.55;
}
.cells-cloud-mcp-output-muted { color: #94a3b8; }
.cells-cloud-mcp-param {
padding: 1rem 0;
border-top: 1px solid #e2e8f0;
}
.cells-cloud-mcp-param:first-child { border-top: 0; padding-top: 0; }
.cells-cloud-mcp-param-label {
display: flex;
align-items: center;
gap: 0.5rem;
margin-bottom: 0.5rem;
font-size: 0.9rem;
flex-wrap: wrap;
}
.cells-cloud-mcp-param-name {
font-family: ui-monospace, Consolas, monospace;
font-weight: 600;
color: var(--cells-cloud-mcp-dark);
}
.cells-cloud-mcp-param-required { color: var(--cells-cloud-mcp-err); font-weight: 700; }
.cells-cloud-mcp-param-type {
color: #64748b;
font-size: 0.75rem;
border: 1px solid #e2e8f0;
border-radius: 4px;
padding: 0.1rem 0.45rem;
background: #f8fafc;
}
.cells-cloud-mcp-param-b64 {
color: white;
background: linear-gradient(to right, var(--cells-cloud-mcp-primary), var(--cells-cloud-mcp-accent));
font-size: 0.72rem;
font-weight: 600;
border-radius: 4px;
padding: 0.15rem 0.5rem;
}
.cells-cloud-mcp-param-desc {
color: #64748b;
font-size: 0.85rem;
margin-top: 0.45rem;
white-space: pre-wrap;
}
.cells-cloud-mcp-param-meta {
color: var(--cells-cloud-mcp-warn);
font-size: 0.82rem;
margin-top: 0.5rem;
}
.cells-cloud-mcp-param-meta-ok { color: var(--cells-cloud-mcp-ok); }
.cells-cloud-mcp-raw { margin-top: 1rem; }
.cells-cloud-mcp-raw summary {
cursor: pointer;
color: #64748b;
font-size: 0.85rem;
user-select: none;
}
.cells-cloud-mcp-raw summary:hover { color: var(--cells-cloud-mcp-primary); }
.cells-cloud-mcp-raw pre {
font-family: ui-monospace, Consolas, monospace;
font-size: 0.82rem;
background: #f8fafc;
padding: 1rem;
border-radius: 10px;
margin-top: 0.6rem;
white-space: pre-wrap;
word-break: break-word;
max-height: 220px;
overflow: auto;
color: #475569;
}
.cells-cloud-mcp-hint { color: #94a3b8; font-size: 0.85rem; margin-top: 0.6rem; }
.cells-cloud-mcp-hint code {
font-family: ui-monospace, Consolas, monospace;
background: #f1f5f9;
padding: 0.1rem 0.4rem;
border-radius: 4px;
color: var(--cells-cloud-mcp-primary);
}
@media (max-width: 768px) {
.cells-cloud-mcp-container { padding: 1rem; }
.cells-cloud-mcp-header-title { font-size: 2rem; }
.cells-cloud-mcp-card { padding: 1.5rem; }
.cells-cloud-mcp-row { flex-direction: column; align-items: stretch; }
}
# Aspose.Cells Cloud MCP
Browser query client &middot; streamable-http &middot; MCP 2024-11-05
## Endpoint
MCP Endpoint URL
Connect
Local container: http://127.0.0.1:28080/cells/mcp &middot; trailing slash is removed automatically
Not connected.
## Available Tools
Click to select &mdash; the parameter form below is generated from its inputSchema
## Call Tool
Method
Call
Reset
Parameter preview (JSON actually sent)
—
## Output
—
'use strict';
(function () {
var PROTOCOL_VERSION = '2024-11-05';
var CLIENT_INFO = { name: 'aspose-cells-cloud-mcp-client-html', version: '1.0.0' };
var TIMEOUT_MS = 180000;
var $ = function (id) { return document.getElementById(id); };
function parseSse(text) {
var payloads = [];
var blocks = text.split(/\r?\n\r?\n/);
for (var i = 0; i "']/g, function (c) {
return { '&': '&amp;', '': '>', '"': '"', "'": ''' }[c];
});
}
function isBase64Param(name) { return /b64string$/i.test(name); }
function wantsTextarea(name, schema) {
return /json/i.test(name) || /json/i.test(schema.description || '');
}
var MAX_INLINE_CHARS = 4096;
var currentTool = null;
var values = {};
var inputs = {};
var truncated = {};
function markPreview(el, on) {
el.readOnly = on;
if (on) el.classList.add('cells-cloud-mcp-input-preview');
else el.classList.remove('cells-cloud-mcp-input-preview');
}
function renderForm(tool) {
currentTool = tool;
values = {}; inputs = {}; truncated = {};
var box = $('params');
box.innerHTML = '';
var schema = tool.inputSchema || {};
var props = schema.properties || {};
var required = schema.required || [];
var names = Object.keys(props);
if (!names.length) {
var none = document.createElement('div');
none.className = 'cells-cloud-mcp-hint';
none.textContent = 'This tool takes no parameters — just call it.';
box.appendChild(none);
updatePreview();
return;
}
for (var i = 0; i base64 ' + formatBytes(b64.length) + ' chars';
setMeta(wrap, meta + (b64.length > MAX_INLINE_CHARS
? ' (too large to display in full, but will be sent completely)' : ''), true);
if (values.file_name === '' && inputs.file_name) {
values.file_name = file.name;
inputs.file_name.value = file.name;
}
updatePreview();
});
picker.value = '';
};
var btn = document.createElement('button');
btn.className = 'cells-cloud-mcp-btn cells-cloud-mcp-btn-ghost cells-cloud-mcp-btn-small';
btn.innerHTML = ' Choose File';
btn.onclick = function () { picker.click(); };
var clr = document.createElement('button');
clr.className = 'cells-cloud-mcp-btn cells-cloud-mcp-btn-ghost cells-cloud-mcp-btn-small';
clr.innerHTML = '';
clr.onclick = function () {
values[name] = '';
box.value = '';
truncated[name] = false;
markPreview(box, false);
setMeta(wrap, '', true);
updatePreview();
};
bar.appendChild(picker);
bar.appendChild(btn);
bar.appendChild(clr);
wrap.appendChild(bar);
var meta = document.createElement('div');
meta.className = 'cells-cloud-mcp-param-meta';
meta.hidden = true;
wrap.appendChild(meta);
wrap.__meta = meta;
return wrap;
}
function setMeta(wrap, text, ok) {
var el = wrap.__meta;
if (!el) return;
el.hidden = !text;
el.textContent = text;
el.className = 'cells-cloud-mcp-param-meta' +
(ok ? ' cells-cloud-mcp-param-meta-ok' : '');
}
function setValue(name, fullValue) {
values[name] = fullValue;
var box = inputs[name];
if (!box) return;
if (fullValue.length > MAX_INLINE_CHARS) {
box.value = fullValue.slice(0, 48) + ' ... (full content saved, ' + fullValue.length + ' chars)';
truncated[name] = true;
markPreview(box, true);
} else {
box.value = fullValue;
truncated[name] = false;
markPreview(box, false);
}
}
function readFileAsBase64(file, cb) {
var reader = new FileReader();
reader.onload = function () {
var s = String(reader.result);
var comma = s.indexOf(',');
cb(comma === -1 ? s : s.slice(comma + 1));
};
reader.onerror = function () {
cb(null, (reader.error && reader.error.message) || 'FileReader error');
};
reader.readAsDataURL(file);
}
function formatBytes(n) {
if (n ' + list.length + ' tool(s) available';
showStatus('ok', html);
renderTools(list);
var sel = $('tool');
sel.innerHTML = '';
list.forEach(function (t) {
var o = document.createElement('option');
o.value = t.name;
o.textContent = t.name;
sel.appendChild(o);
});
sel.onchange = function () { selectTool(sel.value); };
$('toolsPanel').hidden = false;
$('callPanel').hidden = false;
if (list.length) selectTool(list[0].name);
});
}).catch(function (err) {
var msg = err && err.message ? err.message : String(err);
if (msg === 'CORS-EXPOSE') {
showStatus('err',
'**Handshake succeeded, but the session id is not readable.**' +
'The server did not send Access-Control-Expose-Headers: mcp-session-id, ' +
'so the mcp-session-id response header is invisible to JavaScript. ' +
'Add that header on the server side.');
return;
}
diagnose(client.url).then(function (verdict) {
if (verdict === 'cors') {
showStatus('err',
'**Blocked by CORS.**' +
'The server responded, but did not return the headers that allow cross-origin access. ' +
'Original error: ' + escapeHtml(msg) + '' +
'Enable CORS on the server, deploy this page same-origin, or use the command-line client.');
} else {
showStatus('err',
'**Cannot reach this address.**' +
'The server did not respond, so this is not a CORS issue. ' +
'Original error: ' + escapeHtml(msg) + '');
}
});
}).then(function () {
$('connect').disabled = false;
});
}
function call() {
if (!client || !client.sessionId) { showStatus('err', 'Please connect first.'); return; }
if (!currentTool) { showStatus('err', 'Please select a method first.'); return; }
var args;
try { args = buildArgs(); }
catch (e) {
showStatus('err', 'Incomplete parameters: ' + escapeHtml(e.message) + '');
return;
}
var name = currentTool.name;
$('call').disabled = true;
showOutput('Calling ' + name + ' ... (cloud processing may take a while)');
showStatus('', '**Calling ...** ' + escapeHtml(name));
client.callTool(name, args).then(function (result) {
var blocks = (result && result.content) || [];
var parts = blocks.map(function (block) {
if (block.type === 'text') return block.text;
return '[' + block.type + '] ' + JSON.stringify(block);
});
var body = parts.length ? parts.join('\n') : '(no content)';
var isError = !!(result && result.isError);
showOutput(isError ? 'Tool error:\n' + body : body);
showStatus(isError ? 'err' : 'ok',
(isError ? '**Tool error**' : '**Call succeeded**') +
' ' + escapeHtml(name) + '');
}).catch(function (err) {
showOutput('error: ' + (err && err.message ? err.message : String(err)));
showStatus('err', '**Call failed** ' + escapeHtml(name) + '');
}).then(function () {
$('call').disabled = false;
});
}
$('connect').onclick = connect;
$('call').onclick = call;
$('reset').onclick = function () { if (currentTool) renderForm(currentTool); };
$('url').onkeydown = function (e) { if (e.key === 'Enter') connect(); };
try {
var preset = new URLSearchParams(location.search).get('url');
if (preset) $('url').value = preset;
} catch (e) {}
window.addEventListener('beforeunload', function () { if (client) client.close(); });
}());
```



