プロトタイプ · プレビュー版:公式レジストリのすべてのサーバーを掲載し、30分ごとに同期しています。レビューとアカウント機能は今後のステップで始まります。
PopNx MCPAIを使う人のためのMCPサーバー · やさしい言葉で解説

Basis

作者:basis1techバージョン 0.3.1i★ –iパソコンでもクラウドでも
レジストリ名tech.basis1/mcp

インストール

概要

作者による説明(英語の原文)

The Excel engine for AI agents: read, check and edit Excel models over MCP.

PopNx MCPの3つの柱

この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。

できること

このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。

  • 接続方法: パソコンでもクラウドでも
  • トランスポート: stdio, Streamable HTTP
  • カテゴリ: 文書・表計算・事務作業
  • 入力が必要なもの:BASIS_API_KEY, Authorization

インストール

使っているAIアプリを選んで、設定をコピーしてください。

インストールの前に

「秘密」と表示された値は、あなたのアカウントの鍵です。絶対に人に教えたり、チャットに貼り付けたりしないでください。

必要なもの

  • クラウドで動くインストール不要。インターネット経由でつながります
  • npmNode.jsのインストール(npxコマンドに必要)

どのアプリを使っていますか?

上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。

このアドレスはリクエストの header にキーが必要ですが、コネクタを追加するメニューでは設定できません。代わりにClaude Code、Cursor、VS Codeを使ってください。

または、パソコンで動かす

Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます

{
  "mcpServers": {
    "basis1": {
      "command": "npx",
      "args": [
        "-y",
        "@basis1/mcp"
      ],
      "env": {
        "BASIS_API_KEY": "your-value",
        "BASIS_BASE_URL": "your-value"
      }
    }
  }
}

ターミナルでこれを実行します

claude mcp add --transport http basis1 https://api.basis1.tech/mcp --header 'Authorization: Bearer {api_key}'

または、パソコンで動かす

claude mcp add basis1 --env BASIS_API_KEY=your-value --env BASIS_BASE_URL=your-value -- npx -y @basis1/mcp

動かす前に、空欄の値を入力してください。

Cursorで開く

または、設定を自分でコピーする

プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます

{
  "mcpServers": {
    "basis1": {
      "url": "https://api.basis1.tech/mcp",
      "headers": {
        "Authorization": "Bearer {api_key}"
      }
    }
  }
}

または、パソコンで動かす

Cursorで開く

または、設定を自分でコピーする

プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます

{
  "mcpServers": {
    "basis1": {
      "command": "npx",
      "args": [
        "-y",
        "@basis1/mcp"
      ],
      "env": {
        "BASIS_API_KEY": "your-value",
        "BASIS_BASE_URL": "your-value"
      }
    }
  }
}

ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。

VS Codeで開く

または、設定を自分でコピーする

プロジェクトの .vscode/mcp.json に貼り付けます

{
  "servers": {
    "basis1": {
      "type": "http",
      "url": "https://api.basis1.tech/mcp",
      "headers": {
        "Authorization": "Bearer {api_key}"
      }
    }
  }
}

または、パソコンで動かす

VS Codeで開く

または、設定を自分でコピーする

プロジェクトの .vscode/mcp.json に貼り付けます

{
  "servers": {
    "basis1": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@basis1/mcp"
      ],
      "env": {
        "BASIS_API_KEY": "your-value",
        "BASIS_BASE_URL": "your-value"
      }
    }
  }
}

ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。

このアドレスはリクエストの header にキーが必要ですが、コネクタを追加するメニューでは設定できません。代わりにClaude Code、Cursor、VS Codeを使ってください。

選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。

自分で入力する値

  • BASIS_API_KEY 秘密 必須 env
    Your Basis API key, from https://api.basis1.tech
  • BASIS_BASE_URL env
    Basis API base URL, to use a self-hosted server
  • Authorization 秘密 必須 HTTP header
    Bearer followed by your Basis API key

この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。

できること

ツールの名前と説明は、サーバーが2026年11月8日に返したそのままの内容です。書いたのは作者で、私たちではありません。プレーンテキストとして表示しています。

  • parse_workbook

    Parse an .xlsx workbook in one call and return its full semantic NDJSON: one JSON record per line (workbook_meta, sheet, cell, edge, image, image_summary, audit), covering every cell's value and formula and the formula dependency edges. Use it to read a whole file without opening

  • submit_job

    Start an async parse of an .xlsx workbook and return at once with a job handle {job_id, status: "processing", status_url, stream_url}. Use it instead of parse_workbook for large files or when you don't want to wait: call stream_job with wait_seconds to wait for the records (or st

  • stream_job

    Check on or read a parse job started by submit_job. By default it returns the job's NDJSON records once it has completed: the same output parse_workbook returns, one JSON record per line. Pass wait_seconds (up to 60) to wait that long for a job still processing; if it is still pr

  • diff_workbooks

    Compare two .xlsx files cell by cell and return the differences as JSON: {summary, added, removed, changed, format_changed}. Cells are matched on (sheet title, cell ref); changed covers value and formula changes, and format-only changes are listed separately. Use it to see what c

  • evaluate_formula

    Evaluate an Excel formula locally and return the computed result: a quick way to check what a formula returns on a few sample values before you put it in a workbook. Pass data as a map of cell references to values (e.g. {"A1": 100, "A2": true, "A3": "#N/A", "B1": "hello"}) and a

  • create_session

    Open a workbook in a session that the other workbook tools then use by session_id: the starting point for reading, editing, recalculating and exporting a model. Pass at most one of library_file_id (a file in your Library), base64 (raw .xlsx bytes) or url, or none for a blank work

  • close_session

    End a session and discard its workbook: the session_id stops working and the session can't be reopened. Edits not saved with save_to_library (or downloaded with export_workbook) are lost, and its commit_session checkpoints go with it, so restore_session can't bring it back. Call

  • list_sessions

    List the sessions open for this API key, to recover a session_id you've lost or to see how many are open before create_session. Returns {sessions: [{id, documentId, libraryFileId, createdAt, updatedAt, sheetCount, memBytes}]}, times in epoch milliseconds; closed and expired sessi

  • add_sheet

    Add an empty sheet at the end of a session's workbook and make it the active sheet (the one unqualified refs like "B4" point to). Only for sessions created blank (create_session with no file); on an imported workbook it fails, so work in its existing sheets with set_inputs instea

  • rename_sheet

    Rename a sheet in a session's workbook, found by its 0-based index (see the sheets list from create_session or inspect_model). Formulas, named ranges and validations that reference the sheet are rewritten to the new name, so results don't change; use it rather than add_sheet when

  • delete_sheet

    Delete a sheet from a session's workbook, found by its 0-based index (see the sheets list from create_session or inspect_model), the way Excel does: formulas on other sheets that referenced it now read #REF! (Gone!A1 becomes #REF!A1) and evaluate to #REF!, a 3D range ending on it

  • set_inputs

    Write values or formulas into cells of a session and recalculate: the way to run a scenario on a model ("what if Revenue is 1.2M?"). Keys are defined names (e.g. "Revenue") or cell refs ("B4" on the active sheet, "Sheet1!A1"); values are numbers, booleans (logical TRUE/FALSE), er

  • set_calc_settings

    Turn iterative calculation on or off for a session and recalculate. Needed for circular models (e.g. development pro formas where loan size depends on cost, which includes the loan's interest and fees): with it on, set_inputs re-converges the loop on every call. Saved with the se

  • get_outputs

    Read computed values from a session by defined name, cell or range: the way to check what a model's formulas return, e.g. after set_inputs. Pass names as defined names, cell refs ("B4", "Sheet1!B4") or ranges ("Sheet1!H2:H18", up to 2,000 cells, one entry per cell); omit names to

  • define_variable

    Create a defined name for a cell, or repoint an existing one, so set_inputs and get_outputs can use a readable key ("Revenue") instead of a cell ref. A name that already exists in the same scope is overwritten with the new target; no cell's value or formula changes. Names follow

  • delete_variable

    Delete a defined name from a session's workbook, e.g. one you made with define_variable and no longer need. Only the name goes; the cell it pointed to keeps its value and formula. Match is by name, ignoring case, in workbook scope or, with scope_sheet, the name scoped to that she

  • inspect_model

    Summarize a session's structure: each sheet's index, name and used rows and columns, every defined name with its target, the iterative-calc settings, and counts of cells, memory, edit events and commits. Use it to find your way around a workbook before reading or editing it: shee

  • export_workbook

    Get a session's workbook back as an .xlsx file with every formula's computed value saved in it. Recalculates first. Call this when you need the file itself: to give it to the user, or to read it with pandas, openpyxl (data_only=True) or any tool that is not Excel. Returns file_ba

  • recalc_workbook

    Recalculate an .xlsx file and return it with the computed values saved in every formula cell. Use this after you create or edit a workbook with openpyxl or any other library that writes formulas without results: those files have no cached values, so pandas, openpyxl (data_only=Tr

  • get_formula_range

    Read the formulas and computed values of one cell or a rectangular range in a session: the way to check what a cell or a block of cells computes. Pass a single cell ("B4", "Sheet1!B4") or a range ("A1:D10"). Returns {worksheet, range, cell_count, cells: [{cell, formula, value, va

  • commit_session

    Create a named checkpoint of the session's current state, e.g. before a risky edit. Returns {commit_id, message, total_commits}; pass commit_id to restore_session to roll back. Every call adds a new checkpoint. Checkpoints live in the session only and are lost when it closes or e

  • restore_session

    Roll a session back to a checkpoint from commit_session: every cell edit made after it is undone, calc settings included, and the workbook is recalculated. Use it to throw away a what-if or a bad edit; it rewinds this session only and can't reopen a closed one. Returns {restored_

  • trace_dependencies

    Follow formula references from one cell in a session, breadth first, up to depth levels (1-5): direction "precedents" walks to the cells it reads, "dependents" to the cells that read it, and "both" (the default) does each. Returns {root, direction, max_depth, levels: [{depth, nod

  • audit_workbook

    Check a session's whole workbook for modeling problems and return a JSON report: broken references, circular references and whether they converge, hardcoded plugs (a constant or odd formula breaking a run of consistent formulas), external links, volatile functions, hidden sheets

  • save_to_library

    Save the session's workbook to the user's Library for durable storage. If the session was loaded from the Library or was previously saved, this creates a new version of that file. Otherwise it creates a new Library file. Each save is a named version in the Library's history: pass

  • list_library_files

    List the workbooks in the user's Library: the files this account owns, newest-updated first, including everything save_to_library saved. Use it to find a library_file_id to open with create_session, or to check that a save landed. Returns {files: [{library_file_id, name, size_byt

基本チェックi

誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月9日にチェック

  • ✓ 合格

    作者とリポジトリが一致

    レジストリ名はドメイン basis1.tech で確認済みです(レジストリがドメインの所有を確認しています)

  • … 未チェック

    今もメンテナンスされている

    このリポジトリはまだGitHubから読み取っていません

  • … 未チェック

    ライセンスがある

    このリポジトリはまだGitHubから読み取っていません

  • ✓ 合格

    エンドポイントが応答する

    78ミリ秒で応答(HTTP 200)

  • – 対象外

    OAuthでサインイン

    サインイン不要

  • ✓ 合格

    ツールの説明に隠れた指示がない

    26件のツールの説明を読み、AIへの隠れた指示は見つかりませんでした

文書・表計算・事務作業のほかのサーバーとの比較i

  • このカテゴリのほかの3603件のうち0%よりスターが多い
  • このカテゴリのほかの3603件のうち94%より最近レジストリに公開
  • 基本チェックの結果が、このカテゴリのほかの3603件のうち100%と同じかそれ以上

レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。

よくある質問

Basisは安全ですか?

当てはまる基本チェック3項目のうち3項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。

どんなキーやコードが必要ですか?

入力が必要なもの:BASIS_API_KEY, Authorization

パソコンで動きますか、それともクラウドですか?

どちらでも使えます。パソコンにインストールしても、クラウド版につないでもかまいません。

今もメンテナンスされていますか?

GitHubリポジトリの最終更新は–、最新バージョン(0.3.1)がレジストリに届いたのは昨日です。

どのアプリで使えますか?

Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。URLでつながるので、リモートMCPサーバーに対応したアプリ(開発者モードのChatGPTなど)でも使えます。

代わりに使えるものは?

同じカテゴリには:Agent-Native Calendar, Excel MCP Server, MCP Server for Excel

代わりの候補

同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。

カードの見方:↓ 週あたりのダウンロードi★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i

Agent-Native Calendar

Agent-Native Google Calendar - manage events, sync, and public booking

作者:BuilderIO広く使われている★ 76202 か月前更新

クラウドで動く

Excel MCP Server

Create and edit Excel files with AI: charts, PivotTables, formulas. No Excel needed.

作者:haris-musa広く使われている↓ 5万/週★ 42768 日前更新

パソコンで動く

MCP Server for Excel

Excel automation for AI - Sheets, Power Query, DAX, VBA, Tables, Ranges and more. Windows only.

作者:sbroenne成長中↓ 4321/週★ 8475 日前更新

パソコンで動く

作者のREADME

READMEを開く

作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。

@basis1/mcp

The Excel engine for AI agents. Let AI agents read, check and edit Excel models.

An MCP server for Basis. It lets Claude, Cursor and other MCP clients parse Excel workbooks, evaluate formulas, trace dependencies, and open a workbook as a session to change inputs and read results.

Every tool runs on the Basis API. You need a Basis API key and a network connection, and the workbooks you give a tool are uploaded to the Basis API at https://api.basis1.tech. See What gets uploaded.

Install

You need Node.js 20.19 or later and a Basis API key, which you create yourself in your account settings at basis1.tech/settings. Each snippet below starts the server with npx, which downloads the package the first time.

Claude Desktop

Open Settings → Developer → Edit Config and add this to claude_desktop_config.json, then restart Claude Desktop:

{

"mcpServers": { "basis": { "command": "npx", "args": ["-y", "@basis1/mcp"], "env": { "BASIS_API_KEY": "your-api-key" } } } }

Claude Code
claude mcp add basis --env BASIS_API_KEY=your-api-key -- npx -y @basis1/mcp

Add --scope user to use it in every project, or --scope project to share it through the project's .mcp.json. In a shared file, write "BASIS_API_KEY": "${BASIS_API_KEY}" so each person's key comes from their own environment.

Cursor

Add this to ~/.cursor/mcp.json, or to .cursor/mcp.json in a project:

{

"mcpServers": { "basis": { "command": "npx", "args": ["-y", "@basis1/mcp"], "env": { "BASIS_API_KEY": "your-api-key" } } } }

Other MCP clients

Configure a stdio server with the command npx and the arguments -y @basis1/mcp, and set BASIS_API_KEY in its environment. On Windows, if your client can't start npx directly, use the command cmd with the arguments /c npx -y @basis1/mcp.

Without installing anything: the hosted endpoint

If your client supports remote MCP servers over HTTP with custom headers, you can connect to the hosted endpoint directly instead of running this package:

{

"mcpServers": { "basis": { "type": "http", "url": "https://api.basis1.tech/mcp", "headers": { "Authorization": "Bearer your-api-key" } } } }

In Claude Code: claude mcp add --transport http basis https://api.basis1.tech/mcp --header "Authorization: Bearer your-api-key".

It offers the same tools, except that it can't read files on your computer: pass a url or base64 instead of a path. This package adds path support by reading the file on your machine and uploading it for you.

Settings

VariableDefaultWhat it does
BASIS_API_KEYnone (required)Your Basis API key. Without it the server still starts, and every tool tells you the key is missing.
BASIS_BASE_URLhttps://api.basis1.techThe Basis API to use, for example a self-hosted server. It must use https:// unless it points at localhost, so your key is never sent unencrypted.
BASIS_MCP_MAX_FETCH_BYTES200000000The largest workbook a tool will download when you pass a url.

BASIS_TOKEN, the old name for the key, still works and logs a reminder to rename it.

If a setting is invalid, the server doesn't start: it writes what to fix to stderr, which your MCP client shows in its server logs (Claude Desktop: Settings → Developer, or ~/Library/Logs/Claude/mcp-server-basis.log on macOS). The server writes diagnostics only to stderr, because stdout carries the MCP protocol, and it never prints your key.

npx -y @basis1/mcp --help lists these settings, and --version prints the version.

Tools

Workbook inputs accept exactly one of path (a file on your computer), url or base64.

Parsing

  • parse_workbook: returns the workbook as NDJSON records (workbook_meta, sheet, cell, edge, image, image_summary, audit). Large files run as a background job and are polled to completion for you.
  • submit_job: starts a parse job and returns its handle (job_id, status_url, stream_url) without waiting.
  • get_job_status: the status of a job.
  • stream_job: the NDJSON output of a finished job, optionally from record since.
  • diff_workbooks: cell-level differences between two workbooks: added, removed and changed cells (value and/or formula), with format-only changes listed separately. Takes before_* and after_* inputs and include_format.

Formulas

  • evaluate_formula: evaluates one Excel formula against cell values you pass, for example {"formula": "NPV(0.08,A1:A5)", "data": {"A1": 100, ...}}. Supports 278 Excel functions, including financial, statistical, lookup and dynamic-array functions.

Recalculating a file

  • recalc_workbook: takes an .xlsx (path, url or base64) and returns it with computed values saved in every formula cell, plus the same error summary. Call it after you create or edit a workbook with openpyxl (or any library that saves formulas without results): without it, pandas, openpyxl data_only=True and other readers that are not Excel see empty cells. It replaces running LibreOffice's recalc.py. Pass output_path to write the result on your computer; the same path as the input with overwrite: true recalculates a file in place. The file is uploaded for the calculation and not kept.

Both file-returning tools carry over what Basis does not model (styles, charts, images, data validation, conditional formats, defined names, comments, VBA in .xlsm) byte for byte. What cannot be kept is listed under summary.warnings: per-word formatting inside a cell's text, what-if data tables, and the cached results of multi-cell array formulas. Formulas Basis cannot compute are listed under summary.uncomputed instead of being saved blank without notice.

Workbook sessions. A session holds one workbook open on the Basis API so you can change it step by step.

  • create_session: opens a workbook from path, url, base64 or your Library (library_file_id), or starts a blank one. Optional calc turns on iterative calculation. A local path travels inside one request, so files over about 24 MB can't open as a session yet; parse_workbook handles large files.
  • list_sessions, close_session.
  • set_inputs: sets values or formulas by defined name or cell reference, recalculates, and reports which named outputs changed.
  • get_outputs: reads computed values by name, cell reference or range (Sheet1!H2:H18), or every defined name.
  • define_variable: creates or retargets a defined name.
  • add_sheet: adds a sheet to a blank workbook.
  • rename_sheet: renames a sheet; formulas, defined names and validations that point at it follow the new name.
  • set_calc_settings: turns iterative calculation on or off for circular models.
  • inspect_model: sheets, defined names, calculation settings and statistics, optionally with the dependency graph.
  • get_cell_formula, get_formula_range: formulas and values for one cell or a range.
  • trace_dependencies: precedents and dependents of a cell, up to 5 levels deep.
  • audit_workbook: a structural audit (errors, broken references, cycles, named ranges).
  • commit_session, restore_session: named checkpoints and rollback.
  • export_workbook: recalculates the session and returns it as an .xlsx with every formula's computed value saved in the file, plus a summary of formula errors (#REF!, #DIV/0!, #NAME? with sheet and cell). Pass output_path to write the file on your computer instead of getting base64 back (overwrite: true to replace an existing file).
  • snapshot_session: the current workbook as .xlsx bytes (base64), no summary. Prefer export_workbook.
  • save_to_library: saves the workbook to your Basis Library as a new file or a new version.

Tool errors come back as a tool result with isError set and a JSON body {"code", "message", "status"}, for example missing_api_key, unauthorized, network_error, session_not_found or one of the API's error codes.

What gets uploaded

  • Parsing and diffing: the workbook is sent to the Basis API. Parse jobs and their results are kept in the server's memory only and expire after 15 minutes.
  • Formulas: the formula and the cell values you pass are sent to the Basis API.
  • Sessions: the workbook is uploaded when you create the session and stays on the Basis API while you work. A session closes after 30 minutes without use, or when you call close_session. So that sessions survive server restarts, their state is also checkpointed to private cloud storage, which deletes checkpoints within a day.
  • Library: save_to_library stores the workbook in your Library until you delete it.
  • Files on your computer: a tool reads a path you pass and uploads that file's contents. It reads nothing else.
  • URLs: this package downloads a url you pass to parse_workbook, submit_job or diff_workbooks on your machine and uploads the bytes. For sessions, the Basis API downloads the URL itself.

All traffic uses HTTPS, with your API key in the Authorization header. If your workbooks can't leave your machine, don't use this server with them.

Development

From a checkout of this repository:

(cd ../sdk && npm ci && npm run build)  # @basis1/parse, linked as file:../sdk

npm ci npm run build # typecheck, then bundle dist/index.js npm test # unit, hosted forwarding and stdio handshake tests npm run test:pack # pack, install in a temp dir, MCP handshake over stdio

To run your build against another Basis server, for example a self-hosted one:

BASIS_API_KEY=devtoken BASIS_BASE_URL=http://localhost:8080 node dist/index.js
How the package is built

dist/index.js is a single esbuild bundle that includes @modelcontextprotocol/sdk and zod (both MIT). As runtime dependencies they would install 95 packages (23 MB) on every first npx run, including web-server frameworks a stdio server never uses. Bundled, npx installs two packages and runs the exact versions we tested. Their license texts ship in dist/THIRD_PARTY_LICENSES.txt, and the build fails if a bundled package isn't permissively licensed.

@basis1/parse is a real runtime dependency, not bundled. In the repository it's file:../sdk. The release process rewrites that to ^ before publishing, and scripts/check-publishable.mjs refuses a package that still has a local path.

Releasing

Releases are published by the maintainers. When a change touches both packages, the SDK is released first, then the MCP server, which depends on the published SDK version. version is kept in sync between package.json and server.json.

MCP Registry

server.json describes this server for the MCP Registry as tech.basis1/mcp, and mcpName in package.json links the npm package to it. The tech.basis1/ namespace belongs to the basis1.tech domain rather than a personal GitHub account, so the registry verifies it through DNS. Nothing is submitted automatically.

The maintainers list each release in the registry after the npm publish, signing in with mcp-publisher login dns --domain basis1.tech. The tech.basis1/ namespace is verified through a DNS record on basis1.tech.

License

Apache-2.0. See LICENSE.

PopNxに聞く