LL

logisky/logisheets-mcp

开发工具

本页由 AI 翻译,技术细节请以原文为准。 查看原文

41 stars 21 forks 质量 81 趋势 20MIT

给你的AI代理一个它能真正思考的电子表格:确定性兼容Excel的数学+结构化内存(块),实际.xlsx输出。开源,自托管。

概览

Excel兼容的公式无需在脑中操作,表格按名称而非坐标处理,还有一个真正的.xlsx,用户可以打开、审计并持续使用。 一个基于LogiSheets的MCP服务器,LogiSheets是一个用Rust写成的电子表格引擎。MIT运行在你的机器上,不开任何套接字。 问一个模型五年预测,它写出二十个公式,每个公式的行号都经过人工调整。这就是无声错误所在:其中一个公式读成B7,原本是B8,总数看起来合理,且没有错误。 然后表格移动。有人在顶部插入一行,删除年份,添加一列。模型持有的每个坐标都偏差了一,无法察觉,接下来的回合只能反复读取单元格,弄清楚内容去了哪里,而不是你问的问题。 每一个“如果”都需要往返——写输入、重新计算、读取输出,然后放回去。

概述(AI 翻译)

一个真正的电子表格引擎,你的经纪人可以用来思考。 Excel兼容公式 它不必在脑中做,比如用名称来呼应表,而不是用 协调,并且在结尾有一个真实的.xlsx,用户可以打开、审计和 继续使用。

一个MCP服务器 LogiSheets,一个编写的电子表格引擎 在Rust里。麻省理工,运行在你的机器上,不能打开任何插槽。

网格的麻烦

问一个模型五年预测,它写出二十个公式,每个公式都包括 手动调整的行号。这就是无声错误所在:其中之一 它们的读数为B7,其中表示B8],总数看起来合理,且无 会引发错误。

然后表格移动。有人在顶部插入一行,删除一个年份,添加一个 列。模型持有的每个坐标现在都偏离一,且没有 注意得很好,所以它接下来的回合会反复读取单元格,找出所在位置 事情不是围绕你问的问题展开的。

每一个“如果”都需要往返——写入输入,重新计算,读取 输出,放回去。十六种场景就是十六种,还有一个扫描会死 一半时模型中会留下一个场景。

方块

块是表上的命名表。

本页由 AI 翻译,技术细节请以原文为准。

README

以下为原文 README 节选,完整内容请查看原文。

logisheets-mcp

A real spreadsheet engine your agent can think in. Excel-compatible formulas it doesn’t have to do in its head, a table it addresses by name instead of by coordinate, and a genuine .xlsx at the end that a person can open, audit and keep using.

An MCP server over LogiSheets, a spreadsheet engine written in Rust. MIT, runs on your machine, opens no sockets.

The trouble with a grid

Ask a model for a five-year projection and it writes twenty formulas, each with the row number adjusted by hand. That is where the silent mistake lives: one of them reads B7 where it meant B8, the total looks plausible, and nothing raises an error.

Then the sheet moves. Someone inserts a row at the top, deletes a year, adds a column. Every coordinate the model was holding is now off by one and it has no way to notice, so it spends the next turns re-reading cells to work out where things went instead of on the question you asked.

And every “what if” costs a round trip — write the input, recalculate, read the output, put it back. Sixteen scenarios is sixteen of those, and a scan that dies half way leaves a scenario behind in your model.

Blocks

A block is a named table on the sheet. Rows have keys, columns have names, and everything is addressed by those rather than by position.

  • A field’s formula is stated once, for the whole column — not per cell. Add a row and it computes. There is no twentieth formula to get wrong.
  • A reference names what it means: the pv field of the row keyed Y3. Insert a row above it and the reference still says the same thing, because it never said “row 8”.
  • The engine owns computed values. A formula field cannot be overwritten with a number the model worked out itself.
create_block     proj    fields: year, fcf, df, pv
set_field_rule   proj.pv = fcf × df          ← once, for the column
add_block_rows   Y1 … Y5
describe_block   proj
  →  Y1 147.2727   Y2 144.5950   Y3 141.9660   Y4 139.3848   Y5 136.8506

… the sheet is then reshaped: two rows inserted at the top, a column at the left …

describe_block   proj
  →  Y3 141.9660               ← same answer, same address, nothing re-derived

Blocks are created by the agent as it works, so nothing needs preparing. Point it at a blank workbook or at a spreadsheet someone emailed you — convert_to_block adopts a table that is already in ordinary cells, reading the field names off the header row and working out which column is the key.

The second session

The conversation that builds a spreadsheet is almost never the conversation that has to answer a question about it. A week later there is a new session, with none of the context, holding only the file — and what the file records is what

在 GitHub 查看完整 README

安装

npx -y logisheets-mcp
新手?先看 mcpskill.org 教程 →

配置

{ "mcpServers": { "logisheets": { "command": "npx", "args": ["-y", "logisheets-mcp"] } } }