Skip to main content
Glama

char-index-mcp (Archivado)

Este repositorio está archivado. Este proyecto se ha trasladado a char-index-skill, ahora disponible como un plugin de Claude Code Skill con soporte continuo para servidores MCP.

Las futuras actualizaciones tanto del Skill como del servidor MCP (char-index-mcp) se publicarán desde el nuevo repositorio.


Un servidor del Protocolo de Contexto de Modelos (MCP) que proporciona manipulación de cadenas basada en índices a nivel de carácter. Perfecto para la generación de código de prueba donde la posición exacta del carácter es importante.

License: MIT PyPI Python

🎯 Por qué existe esto

Los LLMs generan texto token por token y tienen dificultades con el conteo exacto de caracteres. Al generar código de prueba con requisitos de longitud específicos o validar posiciones de cadenas, necesitas herramientas precisas basadas en índices. Este servidor MCP resuelve ese problema.

✨ Características (12 herramientas)

🔍 Búsqueda de caracteres y subcadenas (4 herramientas)

  • find_nth_char - Encuentra la enésima aparición de un carácter

  • find_all_char_indices - Encuentra todos los índices de un carácter

  • find_nth_substring - Encuentra la enésima aparición de una subcadena

  • find_all_substring_indices - Encuentra todas las apariciones de una subcadena

✂️ División (1 herramienta)

  • split_at_indices - Divide la cadena en múltiples posiciones

✏️ Modificación de cadenas (3 herramientas)

  • insert_at_index - Inserta texto en una posición específica

  • delete_range - Elimina caracteres en un rango

  • replace_range - Reemplaza un rango con texto nuevo

🛠️ Utilidades (3 herramientas)

  • find_regex_matches - Encuentra coincidencias de patrones regex con posiciones

  • extract_between_markers - Extrae texto entre dos marcadores

  • count_chars - Estadísticas de caracteres (total, letras, dígitos, etc.)

📦 Procesamiento por lotes (1 herramienta)

  • extract_substrings - Extrae una o más subcadenas (herramienta unificada)

🚀 Instalación

Opción 1: Usando uvx (Recomendado)

¡No requiere instalación! Solo configura y ejecuta:

# Test it works
uvx char-index-mcp --help

Opción 2: Desde PyPI

pip install char-index-mcp

Opción 3: Desde el código fuente

git clone https://github.com/agent-hanju/char-index-mcp.git
cd char-index-mcp
pip install -e .

🔧 Configuración

Claude Desktop

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

Windows: %APPDATA%\Claude\claude_desktop_config.json

Usando uvx (Recomendado)

{
  "mcpServers": {
    "char-index": {
      "command": "uvx",
      "args": ["char-index-mcp"]
    }
  }
}

Usando pip install

{
  "mcpServers": {
    "char-index": {
      "command": "char-index-mcp"
    }
  }
}

Claude Code

# Using uvx (recommended)
claude mcp add char-index '{"command":"uvx","args":["char-index-mcp"]}'

# Using pip install
claude mcp add char-index '{"command":"char-index-mcp"}'

Cursor

Añadir a ~/.cursor/mcp.json:

Usando uvx (Recomendado)

{
  "mcpServers": {
    "char-index": {
      "command": "uvx",
      "args": ["char-index-mcp"]
    }
  }
}

Usando pip install

{
  "mcpServers": {
    "char-index": {
      "command": "char-index-mcp"
    }
  }
}

📖 Ejemplos de uso

Búsqueda de caracteres

# Find 3rd occurrence of 'l'
find_nth_char("hello world", "l", 3)  # Returns: 9

# Find all occurrences of 'l'
find_all_char_indices("hello world", "l")  # Returns: [2, 3, 9]

Trabajo con subcadenas

# Find 2nd "hello"
find_nth_substring("hello hello world", "hello", 2)  # Returns: 6

# Find all occurrences
find_all_substring_indices("hello hello world", "hello")  # Returns: [0, 6]

Manipulación de cadenas

# Insert comma after "hello"
insert_at_index("hello world", 5, ",")  # Returns: "hello, world"

# Delete " world"
delete_range("hello world", 5, 11)  # Returns: "hello"

# Replace "world" with "Python"
replace_range("hello world", 6, 11, "Python")  # Returns: "hello Python"

División y extracción

# Split at multiple positions
split_at_indices("hello world", [2, 5, 8])  # Returns: ["he", "llo", " wo", "rld"]

# Extract single character
extract_substrings("hello", [{"start": 1, "end": 2}])
# Returns: [{"start": 1, "end": 2, "substring": "e", "length": 1}]

# Batch extraction
extract_substrings("hello world", [
    {"start": 0, "end": 5},
    {"start": 6, "end": 11}
])
# Returns: [
#   {"start": 0, "end": 5, "substring": "hello", "length": 5},
#   {"start": 6, "end": 11, "substring": "world", "length": 5}
# ]

Coincidencia de patrones

# Find all numbers with their positions
find_regex_matches("test123abc456", r"\d+")
# Returns: [
#   {"start": 4, "end": 7, "match": "123"},
#   {"start": 10, "end": 13, "match": "456"}
# ]

Extracción de texto

# Extract content between markers
extract_between_markers("start[content]end", "[", "]", 1)
# Returns: {
#   "content": "content",
#   "content_start": 6,
#   "content_end": 13,
#   "full_start": 5,
#   "full_end": 14
# }

🧪 Desarrollo

# Clone the repository
git clone https://github.com/agent-hanju/char-index-mcp.git
cd char-index-mcp

# Install in development mode
pip install -e ".[dev]"

# Run tests
pytest

# Run with coverage
pytest --cov=char_index_mcp --cov-report=term-missing

🎯 Casos de uso

  1. Generación de código de prueba: Generar cadenas con conteos exactos de caracteres

  2. Procesamiento de datos: Dividir/extraer datos en posiciones precisas

  3. Formateo de texto: Insertar/eliminar/reemplazar en índices específicos

  4. Análisis de patrones: Encontrar y extraer coincidencias de patrones con posiciones

  5. Análisis de respuestas de LLM: Extraer contenido entre etiquetas XML por posición

📝 Ejemplo: Generación de código de prueba

# Ask Claude: "Generate a test string that's exactly 100 characters long"
# Claude can use count_chars() to verify the exact length

# Ask: "Find where the 5th comma is in this CSV line"
# Claude can use find_nth_char(csv_line, ",", 5)

# Ask: "Split this string at characters 10, 25, and 50"
# Claude can use split_at_indices(text, [10, 25, 50])

# Ask: "Extract the text between the 2nd <thinking> and </thinking> tags"
# Claude can use extract_between_markers(text, "<thinking>", "</thinking>", 2)

🤝 Contribución

¡Las contribuciones son bienvenidas! Por favor:

  1. Haz un fork del repositorio

  2. Crea una rama de funcionalidad

  3. Añade pruebas para la nueva funcionalidad

  4. Envía una solicitud de extracción (pull request)

📄 Licencia

Licencia MIT - consulta el archivo LICENSE para más detalles

🔗 Proyectos relacionados

📮 Contacto

Para problemas, preguntas o sugerencias, por favor abre un issue en GitHub.


Nota: Este es el primer servidor MCP diseñado específicamente para la manipulación de cadenas basada en índices. Todos los demás servidores MCP de texto se centran en el conteo, la conversión de mayúsculas/minúsculas o la codificación, no en el posicionamiento preciso de caracteres.

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/agent-hanju/char-index-mcp'

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