Skip to main content
Glama

char-index-mcp (Архивировано)

Этот репозиторий архивирован. Проект переехал в char-index-skill, теперь доступный как плагин Claude Code Skill с продолжением поддержки сервера MCP.

Будущие обновления как Skill, так и MCP-сервера (char-index-mcp) будут публиковаться из нового репозитория.


Сервер протокола контекста модели (MCP), обеспечивающий манипуляцию строками на основе индексов на уровне символов. Идеально подходит для генерации тестового кода, где важна точная позиция символов.

License: MIT PyPI Python

🎯 Зачем это нужно

LLM генерируют текст посимвольно и испытывают трудности с точным подсчетом символов. При генерации тестового кода с определенными требованиями к длине или проверке позиций строк вам нужны точные инструменты, основанные на индексах. Этот MCP-сервер решает данную проблему.

✨ Функции (12 инструментов)

🔍 Поиск символов и подстрок (4 инструмента)

  • find_nth_char - Найти n-е вхождение символа

  • find_all_char_indices - Найти все индексы символа

  • find_nth_substring - Найти n-е вхождение подстроки

  • find_all_substring_indices - Найти все вхождения подстроки

✂️ Разделение (1 инструмент)

  • split_at_indices - Разделить строку по нескольким позициям

✏️ Модификация строк (3 инструмента)

  • insert_at_index - Вставить текст в определенную позицию

  • delete_range - Удалить символы в диапазоне

  • replace_range - Заменить диапазон новым текстом

🛠️ Утилиты (3 инструмента)

  • find_regex_matches - Найти совпадения регулярного выражения с позициями

  • extract_between_markers - Извлечь текст между двумя маркерами

  • count_chars - Статистика символов (всего, буквы, цифры и т.д.)

📦 Пакетная обработка (1 инструмент)

  • extract_substrings - Извлечь одну или несколько подстрок (универсальный инструмент)

🚀 Установка

Вариант 1: Использование uvx (Рекомендуется)

Установка не требуется! Просто настройте и запустите:

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

Вариант 2: Из PyPI

pip install char-index-mcp

Вариант 3: Из исходного кода

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

🔧 Конфигурация

Claude Desktop

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

Windows: %APPDATA%\Claude\claude_desktop_config.json

Использование uvx (Рекомендуется)

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

Использование 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

Добавьте в ~/.cursor/mcp.json:

Использование uvx (Рекомендуется)

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

Использование pip install

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

📖 Примеры использования

Поиск символов

# 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]

Работа с подстроками

# 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]

Манипуляция строками

# 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"

Разделение и извлечение

# 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}
# ]

Поиск по шаблону

# 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"}
# ]

Извлечение текста

# 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
# }

🧪 Разработка

# 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

🎯 Варианты использования

  1. Генерация тестового кода: Генерация строк с точным количеством символов

  2. Обработка данных: Разделение/извлечение данных по точным позициям

  3. Форматирование текста: Вставка/удаление/замена по конкретным индексам

  4. Анализ шаблонов: Поиск и извлечение совпадений по шаблону с позициями

  5. Парсинг ответов LLM: Извлечение контента между XML-тегами по позиции

📝 Пример: Генерация тестового кода

# 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)

🤝 Участие в разработке

Вклад приветствуется! Пожалуйста:

  1. Сделайте форк репозитория

  2. Создайте ветку для новой функции

  3. Добавьте тесты для нового функционала

  4. Отправьте pull request

📄 Лицензия

Лицензия MIT - подробности см. в файле LICENSE

🔗 Связанные проекты

  • mcp-character-counter - Подсчет и анализ символов

  • mcp-wordcounter - Подсчет слов и символов в файлах

  • text-master-mcp - Комплексный инструментарий для обработки текста

📮 Контакты

По вопросам, предложениям или проблемам, пожалуйста, откройте issue на GitHub.


Примечание: Это первый MCP-сервер, специально разработанный для манипуляции строками на основе индексов. Все остальные текстовые MCP-серверы фокусируются на подсчете, преобразовании регистра или кодировании, а не на точном позиционировании символов.

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