Skip to main content
Glama

Extractor de datos mcp Servidor MCP

Un servidor de protocolo de contexto de modelo que extrae datos integrados (como traducciones i18n o configuraciones de clave/valor) del código fuente TypeScript/JavaScript en archivos de configuración JSON estructurados.

insignia de herrería

Características

  • Extracción de datos:

    • Extrae literales de cadena, literales de plantilla y objetos anidados complejos

    • Conserva las variables de plantilla (por ejemplo, Hello, {{name}}! )

    • Admite estructuras de objetos anidados y matrices

    • Mantiene la estructura jerárquica de claves mediante notación de puntos

    • Maneja archivos TypeScript y JavaScript con soporte JSX

    • Reemplaza el contenido del archivo de origen con "MIGRADO A" después de una extracción exitosa (configurable)

  • Extracción de SVG:

    • Extrae componentes SVG de archivos React/TypeScript/JavaScript

    • Conserva la estructura y los atributos del SVG

    • Elimina el código y los accesorios específicos de React

    • Crea archivos .svg individuales que llevan el nombre de su componente

    • Reemplaza el contenido del archivo de origen con "MIGRADO A" después de una extracción exitosa (configurable)

Related MCP server: mcp-server-code-assist

Uso

Agregue a su configuración de cliente MCP:

{
  "mcpServers": {
    "data-extractor": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-data-extractor"
      ],
      "disabled": false,
      "autoApprove": [
        "extract_data",
        "extract_svg"
      ]
    }
  }
}

Uso básico

El servidor proporciona dos herramientas:

1. Extracción de datos

Utilice extract_data para extraer datos (como traducciones i18n) de los archivos de origen:

<use_mcp_tool>
<server_name>data-extractor</server_name>
<tool_name>extract_data</tool_name>
<arguments>
{
  "sourcePath": "src/translations.ts",
  "targetPath": "src/translations.json"
}
</arguments>
</use_mcp_tool>

2. Extracción de SVG

Utilice extract_svg para extraer componentes SVG en archivos individuales:

<use_mcp_tool>
<server_name>data-extractor</server_name>
<tool_name>extract_svg</tool_name>
<arguments>
{
  "sourcePath": "src/components/icons/InspectionIcon.tsx",
  "targetDir": "src/assets/icons"
}
</arguments>
</use_mcp_tool>

Reemplazo de archivo fuente

De forma predeterminada, después de una extracción exitosa, el servidor reemplazará el contenido del archivo de origen con:

  • "MIGRADO A" para extracción de datos

  • "MIGRADO A" para la extracción de SVG

Esto ayuda a rastrear los archivos ya procesados y evita la extracción duplicada. Además, facilita que los LLM y los desarrolladores vean dónde se encuentran los datos extraídos cuando accedan al archivo fuente posteriormente.

Para deshabilitar este comportamiento, configure la variable de entorno DISABLE_SOURCE_REPLACEMENT como true en su configuración de MCP:

{
  "mcpServers": {
    "data-extractor": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-data-extractor"
      ],
      "env": {
        "DISABLE_SOURCE_REPLACEMENT": "true"
      },
      "disabled": false,
      "autoApprove": [
        "extract_data",
        "extract_svg"
      ]
    }
  }
}

Patrones compatibles

Patrones de extracción de datos

El extractor de datos admite varios patrones comúnmente utilizados en aplicaciones TypeScript/JavaScript:

  1. Exportaciones de objetos simples:

export default {
  welcome: "Welcome to our app",
  greeting: "Hello, {name}!",
  submit: "Submit form"
};
  1. Objetos anidados:

export default {
  header: {
    title: "Book Your Flight",
    subtitle: "Find the best deals"
  },
  footer: {
    content: [
      "Please refer to {{privacyPolicyUrl}} for details",
      "© {{year}} {{companyName}}"
    ]
  }
};
  1. Estructuras complejas con matrices:

export default {
  faq: {
    heading: "Common questions",
    content: [
      {
        heading: "What if I need to change my flight?",
        content: "You can change your flight online if:",
        list: [
          "You have a flexible fare type",
          "Your flight is more than 24 hours away"
        ]
      }
    ]
  }
};
  1. Literales de plantilla con variables:

export default {
  greeting: `Hello, {{username}}!`,
  message: `Welcome to {{appName}}`
};

Formatos de salida

Salida de extracción de datos

Los datos extraídos se guardan como un archivo JSON con notación de puntos para estructuras anidadas:

{
  "welcome": "Welcome to our app",
  "header.title": "Book Your Flight",
  "footer.content.0": "Please refer to {{privacyPolicyUrl}} for details",
  "footer.content.1": "© {{year}} {{companyName}}",
  "faq.content.0.heading": "What if I need to change my flight?"
}

Salida de extracción SVG

Los componentes SVG se extraen en archivos .svg individuales, eliminando el código específico de React. Por ejemplo:

Entrada (componente React):

const InspectionIcon: React.FC<InspectionIconProps> = ({ title }) => (
  <svg className="c-tab__icon" width="40px" id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
    <title>{title}</title>
    <path className="cls-1" d="M18.89,12.74a3.18,3.18,0,0,1-3.24-3.11..." />
  </svg>
);

Salida (InspectionIcon.svg):

<svg width="40px" id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
    <path class="cls-1" d="M18.89,12.74a3.18,3.18,0,0,1-3.24-3.11..." />
</svg>

Ampliación de patrones compatibles

El extractor utiliza Babel para analizar y recorrer el AST (Árbol Sintético Abstracto) de sus archivos fuente. Puede ampliar los patrones compatibles modificando el código fuente:

  1. Añadir nuevos tipos de nodos : El método extractStringValue en src/index.ts gestiona diferentes tipos de valores de cadena. Ampliarlo para que admita nuevos tipos de nodos:

private extractStringValue(node: t.Node): string | null {
  if (t.isStringLiteral(node)) {
    return node.value;
  } else if (t.isTemplateLiteral(node)) {
    return node.quasis.map(quasi => quasi.value.raw).join('{{}}');
  }
  // Add support for new node types here
  return null;
}
  1. Procesamiento de valores personalizados : El método processValue gestiona diferentes tipos de valores (cadenas, matrices, objetos). Amplíelo para que admita nuevos tipos de valores o procesamiento personalizado.

private processValue(value: t.Node, currentPath: string[]): void {
  if (t.isStringLiteral(value) || t.isTemplateLiteral(value)) {
    // Process string values
  } else if (t.isArrayExpression(value)) {
    // Process arrays
  } else if (t.isObjectExpression(value)) {
    // Process objects
  }
  // Add support for new value types here
}
  1. Recorrido personalizado del AST : El servidor utiliza el recorrido de Babel para recorrer el AST. Puedes añadir nuevos visitantes para gestionar diferentes tipos de nodos:

traverse(ast, {
  ExportDefaultDeclaration(path: NodePath<t.ExportDefaultDeclaration>) {
    // Handle default exports
  },
  // Add new visitors here
});

Desarrollo

Instalar dependencias:

npm install

Construir el servidor:

npm run build

Para desarrollo con reconstrucción automática:

npm run watch

Depuración

Dado que los servidores MCP se comunican a través de stdio, la depuración puede ser complicada. Recomendamos usar el Inspector MCP , disponible como script de paquete:

npm run inspector

El Inspector proporcionará una URL para acceder a las herramientas de depuración en su navegador.

Licencia

Este proyecto está licenciado bajo la licencia MIT: consulte el archivo de LICENCIA para obtener más detalles.

Install Server
A
security – no known vulnerabilities
A
license - permissive license
A
quality - confirmed to work

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/sammcj/mcp-data-extractor'

If you have feedback or need assistance with the MCP directory API, please join our Discord server