프로토타입 · 미리 보기: 공식 레지스트리의 모든 서버를 담고 있으며 30분마다 동기화해요. 리뷰와 계정 기능은 다음 단계에서 열려요.
PopNx MCPAI를 쓰는 사람을 위한 MCP 서버 · 쉬운 말로 설명해요

Basis

제작자: basis1tech버전 0.2.2i★ –i컴퓨터 또는 클라우드
레지스트리 이름tech.basis1/mcp

설치

개요

제작자가 쓴 설명(영어 원문)

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

PopNx MCP의 세 기둥

이 세 가지는 절대 하나의 점수로 합치지 않아요. 의견, 측정, 인기는 서로 다른 것이니까요.

할 수 있는 일

이 서버는 아직 쉬운 말로 된 요약을 쓰지 못했어요. 아래는 레지스트리에서 읽어 온 사실이에요.

  • 연결 방식: 컴퓨터 또는 클라우드
  • 전송 방식: stdio, Streamable HTTP
  • 카테고리: 문서, 시트 및 사무 업무
  • 입력해야 할 값: BASIS_API_KEY, Authorization

설치

쓰고 있는 AI 앱을 고른 다음 설정을 복사하세요.

설치하기 전에

비밀로 표시된 값은 내 계정의 열쇠예요. 절대 다른 사람과 공유하거나 채팅에 붙여 넣지 마세요.

필요한 것

어떤 앱을 쓰세요?

위에서 앱을 고르세요. 기억해 두었다가 다음부터는 버튼에 “…에 설치”라고 표시해요.

이 주소는 요청 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를 쓰세요.

선택한 앱은 이 기기의 쿠키에만 저장돼요. 계정은 필요 없어요.

직접 입력할 값

  • 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월 6일에 알려 준 그대로예요. 우리가 아니라 제작자가 쓴 글이고, 일반 텍스트로만 보여 드려요.

  • parse_workbook

    Parse an .xlsx workbook and return the full semantic NDJSON output (workbook_meta, sheet, cell, edge, image, image_summary, audit records).

  • submit_job

    Submit an .xlsx workbook for async parsing and get back a job handle (job_id, status_url, stream_url) without waiting for it to finish.

  • get_job_status

    Check the status of a parse job submitted via submit_job.

  • stream_job

    Fetch the NDJSON output of a completed parse job. Pass `since` to resume from a record index.

  • diff_workbooks

    Compare two .xlsx workbooks and return the cell-level differences as JSON. Cells are joined on (sheet title, cell ref) and classified into added, removed, and changed (value and/or formula), with format-only changes bucketed separately. Provide exactly one of before_url/before_ba

  • 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": 200, "B1": "hello"}) and a formula string

  • create_session

    Create a persistent computation session for a workbook. Pass library_file_id to load from the Library, base64 for raw xlsx bytes, url to fetch from a URL, or omit all for a blank model. Returns a session_id for subsequent calls. The workbook is recalculated on load, including for

  • close_session

    Close a computation session and release its resources.

  • list_sessions

    List all active computation sessions for the current user.

  • add_sheet

    Add a new sheet to a session's workbook. The new sheet becomes the active sheet. Only works on sessions created from blank documents (not imported xlsx files).

  • rename_sheet

    Rename a sheet in a session's workbook. Formulas, named ranges and validations that reference the sheet are rewritten to the new name, so results don't change. Excel's rules apply: 1-31 characters, none of : \ / ? * [ ], no leading or trailing apostrophe, unique ignoring case.

  • set_inputs

    Set one or more cells in a session and recalculate. Keys can be defined names (e.g. "Revenue") or cell references (e.g. "Sheet1!A1"). A string starting with "=" is stored as a formula, so you can also try a formula in place and read the result with get_outputs. Returns the applie

  • 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, e.g. to check what the formulas in a workbook return. Pass defined names, cell refs ("B4", "Sheet1!B4") or ranges ("Sheet1!H2:H18", one entry per cell), or omit to read all defined names. A cell that evaluates to an Excel error is returned wit

  • define_variable

    Create or retarget a named variable in the session's workbook. The name can then be used in set_inputs and get_outputs instead of cell references.

  • inspect_model

    Inspect a session's model structure: sheets, defined names, cell/formula counts, and optionally the full dependency edge graph.

  • snapshot_session

    Export the session's current state as xlsx bytes (base64). Optionally creates a commit first. To get the file for a user or a non-Excel reader, with formula errors listed, prefer export_workbook.

  • 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

    Batch-read formulas and computed values for a rectangular range of cells: the way to check what the formulas in a file compute. Returns {cell, formula, value, value_type} per cell; a formula that errors has value_type "error". Much more efficient than calling get_cell_formula rep

  • commit_session

    Create a named checkpoint of the session's current state. Returns the commit ID which can be passed to restore_session to roll back. Checkpoints live in the session only; to keep one in the Library's version history, call save_to_library after it (the version takes this message a

  • restore_session

    Roll back a session to a previous commit. Reverts all cell changes made since that commit. Returns the number of cells that were changed by the rollback.

  • get_cell_formula

    Return the formula text and computed value for a single cell. If the cell has no formula (constant or empty), formula will be null.

  • trace_dependencies

    Trace the dependency graph from a cell. direction="precedents" shows what feeds into this cell; direction="dependents" shows what this cell feeds. Returns a BFS traversal up to the given depth with formula text and computed value at each node.

  • audit_workbook

    Run a structural audit on the session's workbook. Returns formula errors, broken references, circular dependencies, hardcoded plugs, and verification mismatches.

  • 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. Returns the library_file_id. Each save is a named version i

기본 점검i

누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 6일 점검

  • ✓ 통과

    제작자와 저장소 일치

    레지스트리 이름이 도메인 basis1.tech 기준으로 확인되었어요(레지스트리가 도메인 소유를 확인해요)

  • … 아직 점검 안 함

    계속 관리되고 있음

    아직 GitHub에서 이 저장소를 읽어 오지 않았어요

  • … 아직 점검 안 함

    라이선스 있음

    아직 GitHub에서 이 저장소를 읽어 오지 않았어요

  • ✓ 통과

    엔드포인트 응답

    361ms 만에 응답(HTTP 200)

  • – 해당 없음

    OAuth로 로그인

    로그인 필요 없음

  • ✓ 통과

    도구 설명에 숨겨진 지시 없음

    도구 설명 26개를 읽었고, AI에게 보내는 숨겨진 지시는 없었어요

문서, 시트 및 사무 업무 카테고리의 다른 서버와 비교i

  • 이 카테고리의 다른 서버 2171개 중 0%보다 스타가 많아요
  • 이 카테고리의 다른 서버 2171개 중 98%보다 최근에 레지스트리에 공개됐어요
  • 기본 점검 결과가 이 카테고리의 다른 서버 2171개 중 100%와 같거나 더 좋아요

레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.

자주 묻는 질문

Basis, 안전한가요?

해당하는 기본 점검 3개 중 3개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.

어떤 키나 코드가 필요한가요?

입력해야 할 값: BASIS_API_KEY, Authorization

내 컴퓨터에서 실행되나요, 클라우드에서 실행되나요?

둘 다 가능해요. 내 컴퓨터에 설치해도 되고, 클라우드 버전에 연결해도 돼요.

아직 관리되고 있나요?

GitHub 저장소는 마지막으로 – 변경됐고, 최신 버전(0.2.2)은 어제 레지스트리에 올라왔어요.

어떤 앱에서 쓸 수 있나요?

Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. URL로 연결되기 때문에, 원격 MCP 서버를 지원하는 앱(예: 개발자 모드의 ChatGPT)에서도 쓸 수 있어요.

대신 쓸 수 있는 건 뭐가 있나요?

같은 카테고리에는: Agent-Native Calendar, Excel MCP Server, MCP Server for Excel

대안

같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.

카드 보는 법:★ GitHub 스타i세 기둥: 리뷰 · 점검 · 사용 정도i업데이트 = 최신 버전을 레지스트리에 공개한 날i

Agent-Native Calendar

제작자: BuilderIO

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

클라우드에서 실행★ 7,620MIT2개월 전 업데이트
설치

Excel MCP Server

제작자: haris-musa

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

내 컴퓨터에서 실행★ 4,276MIT6일 전 업데이트
설치

MCP Server for Excel

제작자: sbroenne

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

내 컴퓨터에서 실행★ 847MIT3일 전 업데이트
설치

제작자의 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에게 묻기