tabnas

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

¿Debería usar esto?

Calidad y seguridad

A
Calidad de la descripción
100%
Integridad del esquema
89%
Calidad de los nombres
91%
Riesgo de envenenamiento
100%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~1,251Tokens (definiciones de herramientas)
~1.1 KBTamaño de respuesta típico
Impacto moderado en la atención (0.98% del contexto de 128k)

Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.

Instalar

Instalación con un clic

Agrega esto a tu archivo `claude_desktop_config.json`:

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

Puntos de conexión remotos

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

Qué puede hacer

Inventario de herramientas

Herramientas (7)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟢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.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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).

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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:[...]}.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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
}

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada7 herramientas
verificadoversión no registrada7 herramientas