mcp-data-extractor

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

Integrations

  • Uses Babel to parse and traverse the AST (Abstract Syntax Tree) of source files for data extraction

  • Extracts data from JavaScript source code files, including nested objects, string literals, and template literals

  • Extracts SVG components from React files and removes React-specific code and props

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.

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)

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.

You must be authenticated.

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

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.

  1. Features
    1. Usage
      1. Basic Usage
      2. Source File Replacement
      3. Supported Patterns
      4. Output Formats
    2. Extending Supported Patterns
      1. Development
        1. Debugging
      2. License
        ID: 40c3iyazm5