tabnas

Seven tools over the tabnas parsing engine: parse, validate, diagnose, fixtures, compare.

Sollte ich dies verwenden

Qualität und Sicherheit

A
Qualität der Beschreibung
100%
Vollständigkeit des Schemas
89%
Qualität der Benennung
91%
Risiko der Vergiftung
100%
Übereinstimmung der Berechtigungen
100%
Einhaltung des Protokolls
100%

Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.

Kontextkosten

~1,251Tokens (Tool-Definitionen)
~1.1 KBTypische Antwortgröße
Mittlere Auswirkung auf die Aufmerksamkeit (0.98% von 128k Kontext)

Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.

Installieren

Installation mit einem Klick

Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:

{
  "mcpServers": {
    "mcp": {
      "url": "https://mcp.tabnas.dev/mcp"
    }
  }
}

Remote-Endpunkte

https://mcp.tabnas.dev/mcpstreamable-http

Was es kann

Tool-Inventar

Tools (7)

🟢 Nur lesen🟡 Schreiben🔴 Löschen⚪ Unbekannt
🟢parse(input, grammar, options)

Parse input with the tabnas engine. Returns {ok:true, tree} or, on parse failure, {ok:false, diagnostic} — the structured diagnostic described by resource tabnas://schema/diagnostic. An invalid grammar is rejected as {ok:false, errors:[{path,message}]}. Without a grammar the bare engine is used, which defines no rules and produces an undefined tree for every input.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "input": {
      "type": "string",
      "description": "Source text to parse."
    },
    "grammar": {
      "type": "object",
      "description": "Serialized GrammarSpec (pure JSON, no functions). Schema: resource tabnas://schema/grammar. Grammars are validated before use; a `ref` key or a non-builtin function reference is rejected."
    },
    "options": {
      "type": "object",
      "description": "TabnasOptions applied to the fresh instance before the grammar. Data only: a plugins entry is rejected."
    }
  },
  "required": [
    "input"
  ],
  "additionalProperties": false
}
🟢validate_grammar(grammar)

Validate a serialized GrammarSpec. Structural validation against the bundled grammar schema, an engine load in a fresh instance, and a check that every rule reference (`p`, `r`) names a rule the grammar actually defines — a dangling reference loads cleanly and then fails at parse time with `unknown_rule`. Returns {ok:true, v} (v = declared builtin config-schema version, absent means 1) or {ok:false, errors:[{path,message}]}. Security: a grammar carrying a `ref` key, or any function reference that is not a $-suffixed engine builtin, is rejected — validating a grammar never runs supplied code.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "grammar": {
      "type": "object",
      "description": "Serialized GrammarSpec (pure JSON, no functions). Schema: resource tabnas://schema/grammar. Grammars are validated before use; a `ref` key or a non-builtin function reference is rejected."
    }
  },
  "required": [
    "grammar"
  ],
  "additionalProperties": false
}
🟢explain_parse_error(input, grammar)

Parse input and explain the failure. Returns {failed:false} when the input parses; otherwise {failed:true, diagnostic, registry} where registry is the error-code registry entry {code,message,hint} for the diagnostic code (resource tabnas://errors), or null for a code the bundled registry does not know (e.g. a plugin-declared code).

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "input": {
      "type": "string",
      "description": "Source text to parse."
    },
    "grammar": {
      "type": "object",
      "description": "Serialized GrammarSpec (pure JSON, no functions). Schema: resource tabnas://schema/grammar. Grammars are validated before use; a `ref` key or a non-builtin function reference is rejected."
    }
  },
  "required": [
    "input"
  ],
  "additionalProperties": false
}
⚪test_grammar(spec, grammar, options)

Run TSV fixture content against a grammar in a fresh instance, using the fleet fixture convention (@tabnas/support): line 1 is a header, the input column is escape-decoded, the expected column is JSON or ERROR / ERROR:<code>. Returns {pass, fail, rows:[{row,input,expected,got,ok}]}. Refuses more than 10000 rows.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "spec": {
      "type": "string",
      "description": "TSV fixture content (not a path)."
    },
    "grammar": {
      "type": "object",
      "description": "Serialized GrammarSpec (pure JSON, no functions). Schema: resource tabnas://schema/grammar. Grammars are validated before use; a `ref` key or a non-builtin function reference is rejected."
    },
    "options": {
      "type": "object",
      "properties": {
        "inputCol": {
          "type": [
            "integer",
            "string"
          ],
          "description": "Input column, by position or header name. Default 0."
        },
        "expectedCol": {
          "type": [
            "integer",
            "string"
          ],
          "description": "Expected column, by position or header name. Default 1."
        }
      },
      "additionalProperties": false
    }
  },
  "required": [
    "spec"
  ],
  "additionalProperties": false
}
🟢list_plugins

List every bundled tabnas plugin descriptor (tabnas.plugin.json of each fleet repo), sorted by name. Returns {plugins:[...]}.

Eingabe-Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
🟢describe_plugin(name)

The full descriptor for one plugin, by package name ('@tabnas/csv') or bare fleet name ('csv'). Unknown names get {ok:false, errors} naming the known plugins.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "Plugin name."
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false
}
⚪compare_grammars(a, b, corpus, options, depth)

Grammar compatibility (AX plan Phase 5): does candidate grammar B still accept what baseline A accepted, and does it build the same tree for inputs both accept? Returns EVIDENCE AND CONFIDENCE, never a bare verdict: {normalForm, proven[], observed[], changes[], counterexamples[], confidence, why}. confidence:'low' with a stated reason is a successful run, not a failure — language inclusion is undecidable in general, so anything outside the decidable subset is reported not-proven rather than incompatible. Supply `corpus` (real inputs) for the tier that measures what your documents actually do.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "a": {
      "type": "object",
      "description": "Baseline grammar: the serialized GrammarSpec already deployed."
    },
    "b": {
      "type": "object",
      "description": "Candidate grammar: the serialized GrammarSpec proposed to replace it."
    },
    "corpus": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Inputs to replay through both grammars, comparing acceptance and tree shape."
    },
    "options": {
      "type": "object",
      "description": "TabnasOptions applied to both instances."
    },
    "depth": {
      "type": "integer",
      "minimum": 0,
      "maximum": 5,
      "description": "Derivation depth for generated inputs (default 3)."
    }
  },
  "required": [
    "a",
    "b"
  ],
  "additionalProperties": false
}

Community

Diesen Server bewerten

Nachweis

Aktuelle Beobachtungen

verifiziertVersion nicht aufgezeichnet7 Tools
verifiziertVersion nicht aufgezeichnet7 Tools