char-index-mcp
char-index-mcp (Архивировано)
Этот репозиторий архивирован. Проект переехал в char-index-skill, теперь доступный как плагин Claude Code Skill с продолжением поддержки сервера MCP.
Будущие обновления как Skill, так и MCP-сервера (
char-index-mcp) будут публиковаться из нового репозитория.
Сервер протокола контекста модели (MCP), обеспечивающий манипуляцию строками на основе индексов на уровне символов. Идеально подходит для генерации тестового кода, где важна точная позиция символов.
🎯 Зачем это нужно
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🎯 Варианты использования
Генерация тестового кода: Генерация строк с точным количеством символов
Обработка данных: Разделение/извлечение данных по точным позициям
Форматирование текста: Вставка/удаление/замена по конкретным индексам
Анализ шаблонов: Поиск и извлечение совпадений по шаблону с позициями
Парсинг ответов 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)🤝 Участие в разработке
Вклад приветствуется! Пожалуйста:
Сделайте форк репозитория
Создайте ветку для новой функции
Добавьте тесты для нового функционала
Отправьте 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