netcafe-tables

Messy spreadsheets in, clean checkable tables out. Every result carries its arithmetic proof.

사용해야 할까요

품질 및 안전성

A
설명 품질
96%
스키마 완전성
71%
이름 품질
83%
오염 위험
100%
권한 일치
100%
프로토콜 준수
100%

발견 사항 (2)

  • LOWTool 'csv_to_md_table' description lacks action verbcsv_to_md_table에서
  • LOWTool 'json_to_csv' description lacks action verbjson_to_csv에서

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~2,549토큰 (도구 정의)
~817 B일반적인 응답 크기
중간 정도의 주의 영향 (128k 컨텍스트의 1.99%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`claude_desktop_config.json` 파일에 다음을 추가하세요:

{
  "mcpServers": {
    "netcafe-tables": {
      "url": "https://ainetcafe.com/mcp/table?s=registry"
    }
  }
}

원격 엔드포인트

https://ainetcafe.com/mcp/table?s=registrystreamable-http

할 수 있는 일

도구 목록

도구 (15)

🟢 읽기 전용🟡 쓰기🔴 삭제⚪ 알 수 없음
🟢what_can_you_do(task)

Describe a task in plain language (any language) and get back exactly which tools on this server do it, with ready-to-run example calls — instead of reading the whole catalogue and guessing. Also returns multi-step recipes when a task needs several tools chained (invoices to a ledger, a bank statement reconciled, a messy CSV turned into a deliverable). Deterministic and free: it calls no model, costs nothing, and never runs out of quota. Call this FIRST when you are not sure what this server offers.

입력 스키마

{
  "type": "object",
  "properties": {
    "task": {
      "type": "string",
      "description": "What you are trying to do, e.g. \"reconcile a bank statement against my books\" or \"把一堆发票整理成能入账的表格\""
    }
  },
  "required": [
    "task"
  ]
}

출력 스키마

{
  "type": "object",
  "additionalProperties": true
}
🟢csv_to_qbo(csv, url, account_id, bank_id, currency)

Convert a transaction CSV into a .qbo / OFX bank-feed file that QuickBooks and similar accounting software import directly. Needs date, description and amount columns (or debit + credit). Pairs with extract_statement: statement PDF in, importable bank feed out.

입력 스키마

{
  "type": "object",
  "properties": {
    "csv": {
      "type": "string",
      "description": "CSV content with a header row."
    },
    "url": {
      "type": "string",
      "description": "Or a link to the CSV."
    },
    "account_id": {
      "type": "string",
      "description": "Your account number as the accounting software expects it."
    },
    "bank_id": {
      "type": "string",
      "description": "Routing / bank identifier, if your import asks for one."
    },
    "currency": {
      "type": "string",
      "description": "Three-letter currency code, default USD."
    }
  },
  "required": []
}

출력 스키마

{
  "type": "object",
  "additionalProperties": true
}
🟢diff_tables(url_a, url_b, text_a, text_b, key)

Matches rows across two CSVs on a key column and reports three things: keys only in A, keys only in B, and keys in both whose other columns disagree — naming the exact column and both values. Unlike reconcile_ledger this needs no amount column, so it also fits name lists, inventory counts, permission tables, and any "these two exports should match" check.

입력 스키마

{
  "type": "object",
  "properties": {
    "url_a": {
      "type": "string",
      "description": "Link to the first CSV."
    },
    "url_b": {
      "type": "string",
      "description": "Link to the second CSV."
    },
    "text_a": {
      "type": "string",
      "description": "Or the first CSV content directly."
    },
    "text_b": {
      "type": "string",
      "description": "Or the second CSV content directly."
    },
    "key": {
      "type": "string",
      "description": "Column that identifies a row, e.g. id."
    }
  },
  "required": [
    "key"
  ]
}

출력 스키마

{
  "type": "object",
  "additionalProperties": true
}
🟢clean_table(url, text, ops, keep, split_column, ...)

Tidies a spreadsheet export: removes duplicate rows, trims whitespace (half-width and full-width — Chinese exports are full of  ), unifies the half-dozen ways a cell can say "empty" (NA / null / - / 无), drops empty rows and columns, and can split one column into several. Returns the cleaned CSV plus exactly what changed: rows in, rows out, duplicates removed, cells trimmed per column. It can also transpose rows/columns and unpivot a wide table into a long one. The row arithmetic is verified in code — if in − removed ≠ out, the response says so instead of handing back a table nobody can check. Use when a CSV came out of Excel or an export and needs cleaning before analysis.

입력 스키마

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "Link to the CSV. Provide this or text."
    },
    "text": {
      "type": "string",
      "description": "The CSV content itself. Provide this or url."
    },
    "ops": {
      "type": "string",
      "description": "Comma-separated, default \"dedupe,trim,drop_empty,unify_blank\". Also available: split_column, transpose (swap rows/columns), wide_to_long (unpivot a wide table into the long format analysis tools expect)."
    },
    "keep": {
      "type": "string",
      "description": "For wide_to_long: comma-separated id columns to keep as-is. Defaults to the first column."
    },
    "split_column": {
      "type": "string",
      "description": "Column name to split (requires ops to include split_column)."
    },
    "split_by": {
      "type": "string",
      "description": "Separator to split on, default a single space."
    }
  }
}

출력 스키마

{
  "type": "object",
  "additionalProperties": true
}
🟢merge_tables(urls, texts)

Combines up to 20 CSVs into a single table. Headers do not have to match: columns are unioned and a file missing a column contributes blanks for it, so rows never shift silently — the failure mode that makes hand-merged spreadsheets untrustworthy. Reports each source file row count and checks in code that they sum to the merged total. Use for monthly exports, per-store sheets, or any set of files with the same subject but drifting headers.

입력 스키마

{
  "type": "object",
  "properties": {
    "urls": {
      "type": "string",
      "description": "Comma-separated CSV links, at least two."
    },
    "texts": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Or pass the CSV contents directly as an array."
    }
  }
}

출력 스키마

{
  "type": "object",
  "additionalProperties": true
}
🟢reconcile_ledger(url_a, url_b, text_a, text_b, key, ...)

Reconciles two sets of records — your books against a bank, platform, or supplier statement. Matches rows on a key column, compares an amount column, and returns three lists: only in A, only in B, and same key but different amount. Amounts are compared in integer cents, so 0.1 + 0.2 never invents a phantom difference for someone to chase. The response also proves the result: the listed differences are re-added and must equal the gap between the two totals, checked in code. Use for month-end close, platform payouts vs orders, or any "these two numbers should agree and do not" problem. This is the job people do by hand with VLOOKUP or a groupby and then cannot prove they got right.

입력 스키마

{
  "type": "object",
  "properties": {
    "url_a": {
      "type": "string",
      "description": "Link to side A (e.g. your books)."
    },
    "url_b": {
      "type": "string",
      "description": "Link to side B (e.g. the statement)."
    },
    "text_a": {
      "type": "string",
      "description": "Or the CSV content of side A directly."
    },
    "text_b": {
      "type": "string",
      "description": "Or the CSV content of side B directly."
    },
    "key": {
      "type": "string",
      "description": "Column name to match rows on, e.g. order_id."
    },
    "amount": {
      "type": "string",
      "description": "Numeric column to compare, e.g. amount."
    }
  },
  "required": [
    "key",
    "amount"
  ]
}

출력 스키마

{
  "type": "object",
  "additionalProperties": true
}
🟢fix_csv_encoding(url, text)

Detect the real encoding of a CSV (GB18030, Shift-JIS, Windows-1252…), repair mojibake (UTF-8 that was read as Latin-1, e.g. "é"), and re-emit UTF-8 with a BOM so Excel opens it correctly.

입력 스키마

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "Public URL of the CSV."
    },
    "text": {
      "type": "string",
      "description": "Or paste the CSV content directly."
    }
  },
  "required": []
}

출력 스키마

{
  "type": "object",
  "additionalProperties": true
}
🟢read_xlsx(url, sheet, keep_formulas, max_rows, inline, ...)

Read an Excel .xlsx workbook (by URL) into rows — every sheet, or one you name. Returns cell values (not formula text), dates as YYYY-MM-DD instead of Excel serial numbers, and keeps leading zeros so ID/postcode columns are not silently mangled. Says plainly which sheet it used, which sheets are hidden, and where merged cells left blanks, instead of guessing for you.

입력 스키마

{
  "type": "object",
  "properties": {
    "url": {},
    "sheet": {},
    "keep_formulas": {},
    "max_rows": {},
    "inline": {},
    "preview_rows": {
      "type": "number"
    }
  },
  "additionalProperties": true
}
🟡write_xlsx(sheets, url, text, sheet_name)

Build an Excel .xlsx file from rows (CSV text or JSON arrays), optionally several sheets at once. Numbers are written as real numbers so they sum in Excel, while values with leading zeros stay text so IDs and postcodes survive the round trip.

입력 스키마

{
  "type": "object",
  "properties": {
    "sheets": {},
    "url": {},
    "text": {},
    "sheet_name": {}
  },
  "additionalProperties": true
}
⚪match_transactions(url_a, text_a, url_b, text_b, sheet_a, ...)

Match bank statement lines to ledger/invoice entries when there is NO shared key — by amount, date window, reference numbers found inside free-text descriptions, and fuzzy counterparty names ("北京XX科技" vs "XX科技(北京)"). Handles split payments (one invoice paid in instalments, 1:N) and combined payments (one transfer covering several invoices, N:1). Its rule is: never guess — a pair is only auto-match

입력 스키마

{
  "type": "object",
  "properties": {
    "url_a": {},
    "text_a": {},
    "url_b": {},
    "text_b": {},
    "sheet_a": {},
    "sheet_b": {},
    "date_window_days": {},
    "fee_tolerance": {},
    "max_group_size": {}
  },
  "additionalProperties": true
}
🟢dedupe_entities(url, text, sheet, name, tax_id, ...)

Find records in a supplier/customer/store list that are probably the SAME entity under different names — "北京星辰科技有限公司" vs "星辰科技(北京)" — by cross-checking name similarity against hard identifiers: tax ID (统一社会信用代码, checksum-verified), phone, domain, bank account, address. It never merges anything: it returns candidate groups with the evidence for each link, pairs that need human review, and — just as

입력 스키마

{
  "type": "object",
  "properties": {
    "url": {},
    "text": {},
    "sheet": {},
    "name": {},
    "tax_id": {},
    "phone": {},
    "domain": {},
    "address": {},
    "bank": {},
    "name_threshold": {}
  },
  "additionalProperties": true
}
⚪csv_to_md_table(csv, url)

CSV (text or URL) → GitHub-flavoured Markdown table.

입력 스키마

{
  "type": "object",
  "properties": {
    "csv": {},
    "url": {}
  },
  "additionalProperties": true
}
⚪csv_to_chart(csv, url, type)

CSV (first column = labels, second = values) → chart PNG in one call.

입력 스키마

{
  "type": "object",
  "properties": {
    "csv": {},
    "url": {},
    "type": {}
  },
  "additionalProperties": true
}
⚪csv_to_json(csv, url)

CSV (text or URL) → JSON array of objects (first row = keys). Returns a .json file.

입력 스키마

{
  "type": "object",
  "properties": {
    "csv": {},
    "url": {}
  },
  "additionalProperties": true
}
⚪json_to_csv(json)

JSON array of objects → CSV file. Flattens keys, quotes fields containing commas.

입력 스키마

{
  "type": "object",
  "properties": {
    "json": {}
  },
  "additionalProperties": true
}

커뮤니티

이 서버 평가하기

증거

최근 관측

검증됨버전이 기록되지 않음도구 15개
검증됨버전이 기록되지 않음도구 15개