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

Csvbox MCP Server

제작자: csvbox-io버전 1.0.1i★ –i내 컴퓨터에서 실행
레지스트리 이름io.github.csvbox-io/csvbox-mcp-server

설치

개요

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

CSVBox MCP server for creating, updating, validating and generating CSVBox importer sheets.

PopNx MCP의 세 기둥

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

할 수 있는 일

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

  • 연결 방식: 내 컴퓨터에서 실행
  • 전송 방식: stdio
  • 카테고리: 기타
  • 입력해야 할 값: CSVBOX_API_KEY, CSVBOX_API_SECRET, OPENAI_API_KEY, ANTHROPIC_API_KEY

설치

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

설치하기 전에

  • 기본 점검: 1개 중 1개 통과
  • 내 컴퓨터에서 내 사용자 계정의 권한(파일, 네트워크, 앱)으로 실행돼요.
  • 직접 입력할 값: CSVBOX_API_KEY, CSVBOX_API_SECRET, OPENAI_API_KEY, ANTHROPIC_API_KEY

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

필요한 것

  • npmNode.js 설치(npx 명령어용)

어떤 앱을 쓰세요?

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

Claude Desktop → Settings → Developer → Edit Config를 열고 claude_desktop_config.json에 이 내용을 붙여 넣으세요

{
  "mcpServers": {
    "csvbox": {
      "command": "npx",
      "args": [
        "-y",
        "@csvbox/mcp-server"
      ],
      "env": {
        "CSVBOX_API_KEY": "your-value",
        "CSVBOX_API_SECRET": "your-value",
        "OPENAI_API_KEY": "your-value",
        "ANTHROPIC_API_KEY": "your-value"
      }
    }
  }
}

터미널에서 이 명령어를 실행하세요

claude mcp add csvbox --env CSVBOX_API_KEY=your-value --env CSVBOX_API_SECRET=your-value --env OPENAI_API_KEY=your-value --env ANTHROPIC_API_KEY=your-value -- npx -y @csvbox/mcp-server

실행하기 전에 빈 값을 채워 주세요.

Cursor에서 열기

또는 설정을 직접 복사하기

프로젝트의 .cursor/mcp.json 또는 ~/.cursor/mcp.json에 붙여 넣으세요

{
  "mcpServers": {
    "csvbox": {
      "command": "npx",
      "args": [
        "-y",
        "@csvbox/mcp-server"
      ],
      "env": {
        "CSVBOX_API_KEY": "your-value",
        "CSVBOX_API_SECRET": "your-value",
        "OPENAI_API_KEY": "your-value",
        "ANTHROPIC_API_KEY": "your-value"
      }
    }
  }
}

브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.

VS Code에서 열기

또는 설정을 직접 복사하기

프로젝트의 .vscode/mcp.json에 붙여 넣으세요

{
  "servers": {
    "csvbox": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@csvbox/mcp-server"
      ],
      "env": {
        "CSVBOX_API_KEY": "your-value",
        "CSVBOX_API_SECRET": "your-value",
        "OPENAI_API_KEY": "your-value",
        "ANTHROPIC_API_KEY": "your-value"
      }
    }
  }
}

브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.

이 서버는 내 컴퓨터에서 실행되는데, ChatGPT는 인터넷에 있는 서버에만 연결할 수 있어요. 다른 앱을 고르세요.

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

직접 입력할 값

  • CSVBOX_API_KEY 비밀 필수 env
    CSVBox API key
  • CSVBOX_API_SECRET 비밀 필수 env
    CSVBox API secret
  • OPENAI_API_KEY 비밀 env
    OpenAI API key for AI-powered tools
  • ANTHROPIC_API_KEY 비밀 env
    Anthropic API key for AI-powered tools

이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.

할 수 있는 일

내 컴퓨터에서 실행돼요. 설치하면 AI 앱에 도구 목록이 나타나요.

기본 점검i

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

  • ✓ 통과

    제작자와 저장소 일치

    레지스트리 이름이 GitHub 계정 csvbox-io 기준으로 확인되었고, 이 계정이 저장소를 소유하고 있어요

  • … 아직 점검 안 함

    계속 관리되고 있음

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

  • … 아직 점검 안 함

    라이선스 있음

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

  • – 해당 없음

    엔드포인트 응답

    내 컴퓨터에서 실행되는 서버라 인터넷 엔드포인트가 없어요

  • – 해당 없음

    OAuth로 로그인

    내 컴퓨터에서 실행되며, 대신 로컬 설정을 사용해요

  • … 아직 점검 안 함

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

    내 컴퓨터에서 실행돼요. 도구 목록은 인터넷 엔드포인트가 있는 서버에서만 읽을 수 있어요

기타 카테고리의 다른 서버와 비교i

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

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

자주 묻는 질문

Csvbox MCP Server, 안전한가요?

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

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

입력해야 할 값: CSVBOX_API_KEY, CSVBOX_API_SECRET, OPENAI_API_KEY, ANTHROPIC_API_KEY

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

내 컴퓨터에서 실행돼요. AI 앱이 필요할 때 실행하고, 데이터는 제작자의 서버를 거치지 않아요(서버 자체가 온라인 서비스를 호출하는 경우는 제외).

아직 관리되고 있나요?

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

어떤 앱에서 쓸 수 있나요?

Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. 내 컴퓨터에 Node.js도 있어야 해요.

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

같은 카테고리에는: Spec Driven Development, Remote Desktop Commander, Symantec Cloud DLP AIops

대안

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

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

Spec Driven Development

제작자: formulahendry

MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.

내 컴퓨터에서 실행★ 440MIT14개월 전 업데이트
설치

Remote Desktop Commander

제작자: desktop-commander

Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.

클라우드에서 실행★ 211어제 업데이트
설치

Symantec Cloud DLP AIops

제작자: AIops-tools

Governed Symantec Cloud DLP — 14 MCP tools, read-only with audit.

내 컴퓨터에서 실행오늘 업데이트
설치

제작자의 README

README 열기

제작자의 저장소에서 쓰인 그대로 가져왔어요. PopNx MCP가 검토하거나 보증한 내용이 아니에요. HTML, 이미지, 스크립트는 제거했어요. 링크를 누르면 이 사이트를 벗어나요.

csvbox-mcp-server

A universal Model Context Protocol (MCP) server for CSVBox. It exposes CSVBox importer-sheet management as MCP tools so you can create, replace, patch, generate, validate, and scaffold importers from any MCP-compatible client — Claude Desktop, Cursor, Windsurf, Roo Code, Cline, VS Code, ChatGPT MCP, and more.

Runs over stdio, so it works the same way in every client.

Tools

ToolPurposeAPI call
create_sheetCreate a CSVBox sheetPOST /1.1/sheet
update_sheetReplace an existing sheetPUT /1.1/sheet/{key}
patch_sheetPartially update a sheetPATCH /1.1/sheet/{key}
generate_sheet_jsonNL prompt → complete sheet JSON (via LLM)none (calls LLM)
create_importer_from_promptNL prompt → validate → createPOST /1.1/sheet (+ LLM)
generate_import_codeIntegration code (vanilla-js/react/vue/angular)none
generate_sheet_functionsNL prompt → virtual columns / validation functions / data transforms (via LLM)none (calls LLM)
validate_schemaLocal schema validationnone

CSVBox currently has no GET or LIST endpoints, so there are intentionally no get_sheet / list_sheet tools.

It also exposes two MCP prompts:

PromptPurpose
create_csvbox_sheetMake the host client's own LLM build a complete CSVBox sheet (no server-side LLM key needed).
csvbox_sheet_functionsMake the host client's own LLM author virtual columns, validation functions, and data transforms (no server-side LLM key needed).
Prompt → sheet generation

generate_sheet_json and create_importer_from_prompt use an LLM to convert a free-form request into a complete CSVBox sheet — title, sheet_columns, destinations, webhooks, security_settings, and steps. Only actual data fields become columns; destinations, webhooks, domains, regions, file-upload and step settings are placed in their proper configuration sections, never turned into columns. There are three tiers:

  1. Server LLM — when ANTHROPIC_API_KEY or OPENAI_API_KEY is set, the server calls the LLM directly. Works in MCP Inspector and headless.
  2. MCP prompt (create_csvbox_sheet) — when you have no server key, host clients (Cursor, Claude Desktop, Cline) run the generation with their own model, then call validate_schema and create_sheet. Free.
  3. None configured — generate_sheet_json returns a structured "no LLM provider configured" error pointing to the MCP prompt, and create_importer_from_prompt does not call the CSVBox API. There is no regex fallback.
Category / module expansion

The generator runs in one of two modes, chosen automatically from the prompt:

  • Extraction (default) — the prompt names concrete fields (e.g. *"columns name, email, phone"*). Only those become columns; nothing is invented.
  • Expansion — the prompt names business modules / categories as a list (e.g. *"modules for: Company Information, Suppliers, Payroll, Invoice"*), asks for a *comprehensive*/*detailed* schema, or asks for a column count (*"at least 100 columns"*). Each named module is expanded into several realistic, prefixed, correctly-typed columns (e.g. Suppliers → supplier_id, supplier_name, supplier_gstin, supplier_email, …). An explicit minimum count is honored and every column_name is globally unique.

Data types and validations are inferred from the field names and any requested types:

Requested / impliedColumn typeValidators
Dropdown / status / category with fixed optionslistvalues: [...] candidate options
Percentage / percentnumbermin_value: 0, max_value: 100
Positive numeric (quantity, count, stock, cost, age)numbermin_value: 0
ID / code / reference numbertext—
Emailemail—
Phone / mobilephone_number—
URL / websiteurl—
Price / cost / amount / salarycurrency—
Date fieldsdateformat: "YYYY-MM-DD"
Boolean / is_* / activeboolean—
GST / GSTIN / tax idregexGSTIN pattern
PIN code / postal code (India)regex^1-9{5}$

Large schemas: the default models (claude-haiku-4-5, gpt-4o-mini) are cheap but produce noticeably better 100+ column schemas when you override with a stronger model via LLM_MODEL (e.g. claude-sonnet-4-6). The output cap is raised to fit big sheets; if a request is still too large the response is flagged `TRUNCATED` (a distinct result, not a parse error) and the CSVBox API is not called — reduce the column count / modules or use a model with a larger output budget and retry.

Function collections (virtual columns, validation functions, data transforms)

Beyond the six sheet properties, the CSVBox Sheet API accepts three collections whose items carry a js_code string that CSVBox executes during an import:

CollectionIdentified byMaxjs_code must…
virtual_columnscolumn_name20return the computed cell value
validation_functionsfunction_name10return an array of error strings ([] = valid)
data_transformstransform_name10mutate the csvbox object and return it

Inside js_code the csvbox object exposes row, column, virtual, user, import, and environment. The two accessors are not interchangeable — a virtual column is per-row and uses csvbox.row. (a scalar), while a "column"-scoped function sees the whole column via csvbox.column. (an array).

Shared optional fields: scope (column | row; not on virtual columns), run_at (before_validation | after_validation; data transforms only), columns / dynamic_columns, active, dependencies, and _delete (PATCH only).

Authoring them
// generate_sheet_functions  (requires ANTHROPIC_API_KEY or OPENAI_API_KEY)

{ "prompt": "add a virtual column joining first and last name, and check every email contains an @", "sheet": { "title": "Customers", "sheet_columns": [ ... ] } }

Returns { "virtual_columns": [...], "validation_functions": [...], "source": ..., "validation": {...} }. Collections the request does not imply are omitted, never returned as empty arrays.

This tool does not call the CSVBox API. Read the generated js_code, then apply it yourself with patch_sheet. Pass sheet so the model references real column names and the validator can check those references — CSVBox has no read endpoint, so it must be supplied inline. Without an LLM key, use the csvbox_sheet_functions MCP prompt instead.

PUT vs PATCH — read this before applying
update_sheet (PUT)patch_sheet (PATCH)
Collection you sendauthoritative — any existing item not named is deletedmerged — unnamed items are left alone
"virtual_columns": []deletes all 20no-op
Key omitteduntoucheduntouched
_delete: truenot validremoves that item (all its other fields ignored)

Use patch_sheet to apply generated functions. Validate first with the matching verb:

// validate_schema

{ "sheet": { "data_transforms": [ ... ] }, "mode": "patch" }

mode is create (default), put, or patch. It only affects the function collections — under put an empty array is a hard error rather than a warning, and _delete is rejected outside patch.

Dependencies

An item may load up to 5 third-party scripts:

{ "url": "https://cdn.jsdelivr.net/npm/dayjs@1.11.10/dayjs.min.js",

"globals": ["dayjs"], "integrity": "sha384-..." }

Only cdn.jsdelivr.net, unpkg.com, and cdnjs.cloudflare.com are allowed; https only, .js/.mjs path, no query string, fragment, userinfo, or port.

Security. This server never executes js_code — it is an opaque string here. Generated JavaScript is unreviewed model output, so read it before you PATCH it into a live importer. A dependency without an integrity digest can change under your customers at any time; validate_schema warns when one is missing.

See docs/sheet-functions-example.json for a full payload.

Installation

npm install @csvbox/mcp-server

Or build from source:

git clone <this-repo> csvbox-mcp-server

cd csvbox-mcp-server npm install npm run build

This produces dist/index.js — the entrypoint MCP clients launch.

Environment variables

Copy .env.example to .env and fill in your CSVBox credentials:

CSVBOX_API_KEY=your_api_key

CSVBOX_API_SECRET=your_api_secret

CSVBox credentials are only required for the API-backed tools (create_sheet, update_sheet, patch_sheet, create_importer_from_prompt). validate_schema and generate_import_code work without any credentials.

Auth header note: the client sends x-csvbox-api-key and x-csvbox-secret-api-key (matching the CSVBox reference payloads). These are defined as constants in src/services/csvbox-api.ts if your account uses different header names.

Client identification

Every request this server sends to the CSVBox API carries two extra headers:

x-csvbox-client: mcp

x-csvbox-client-version:

CSVBox records how each sheet was created; without these, sheets and imports made through MCP are indistinguishable from any other REST caller. The version is read from package.json and is the same one the server advertises to your MCP client, so the two can never disagree.

These are always sent — there is no environment variable or tool input that disables or changes them. They carry no credentials and nothing derived from your tool inputs. Tools that make no API call (generate_sheet_json, generate_sheet_functions, generate_import_code, validate_schema) send no request and therefore no headers.

LLM provider (for prompt → sheet generation)

generate_sheet_json and create_importer_from_prompt need an LLM. Set one of:

ANTHROPIC_API_KEY=sk-ant-...

OPENAI_API_KEY=sk-...

The provider is auto-detected:

ConditionProviderDefault model
LLM_PROVIDER=anthropic (and its key set)Anthropicclaude-haiku-4-5
LLM_PROVIDER=openai (and its key set)OpenAIgpt-4o-mini
ANTHROPIC_API_KEY set (no LLM_PROVIDER)Anthropicclaude-haiku-4-5
OPENAI_API_KEY set (no LLM_PROVIDER)OpenAIgpt-4o-mini
neither key setnone — tools return an error pointing to the create_csvbox_sheet MCP prompt—

LLM_PROVIDER disambiguates when both keys are present; LLM_MODEL overrides the model for whichever provider is chosen. For large category/module schemas (100+ columns) set LLM_MODEL to a stronger model (e.g. claude-sonnet-4-6) — see Category / module expansion.

MCP Inspector: set the LLM key in the Inspector's environment-variables panel to use the server-LLM path. Inspector has no host LLM of its own, so it can *render* the create_csvbox_sheet prompt but cannot *execute* it — for the keyless path use a client with a model (Cursor, Claude Desktop, Cline).

Running locally

# After building:

npm start

Or run the built file directly:

node dist/index.js

The server speaks MCP over stdio and logs csvbox-mcp-server running on stdio to stderr (stdout is reserved for the protocol).

Client configuration

For a published installation, use the npm package with npx. Set CSVBOX_API_KEY / CSVBOX_API_SECRET in the env block.

Note: The npm package is @csvbox/mcp-server and the executable is csvbox-mcp-server.

Claude Desktop

Add the following to your Claude Desktop MCP configuration:

{

"mcpServers": { "csvbox": { "command": "npx", "args": [ "-y

앞부분만 보여 드려요. 나머지는 저장소에서 읽어 보세요

PopNx에게 묻기