mcp-context-window
mcp-context-window
Сервер MCP, который предоставляет локальной модели внешний контекстный буфер: долговременную память сессии, в которую она может записывать заметки, и большие документы, которые она может просматривать постранично, не загружая их целиком.
Создан на основе MCP TypeScript SDK v2
и соответствует протоколу версии 2026-07-28. Работает через stdio (LM Studio, Claude
Desktop, любой процесс, запускающий локальный сервер) или Streamable HTTP.
Прочитайте это первым: что сервер MCP может и не может
Ни один сервер MCP не может видеть или изменять ваше окно контекста. MCP — это строго модель «запрос-ответ»: хост вызывает инструмент, инструмент отвечает. Сервер никогда не видит диалог, не может перехватывать сообщения до того, как они достигнут модели, и не может ничего обрезать. LM Studio выполняет собственное усечение контекста внутри и не советуется с серверами по этому поводу.
Поэтому это не автоматическое скользящее окно, и любой сервис, который рекламирует себя как таковой, вводит вас в заблуждение. Что это на самом деле: хранилище, к которому модель обращается осознанно, сохраняя основной объем материала за пределами окна и подгружая только то, что нужно в данный момент. Это действительно мощно даже с локальной моделью на 8k токенов — но работает только потому, что модель сама вызывает инструменты, а не потому, что сервер что-то перехватывает.
Практическое следствие: модель должна сотрудничать. Описания инструментов здесь
написаны намеренно предписывающе, а context_guide возвращает рекомендуемый
рабочий процесс. Если ваша модель игнорирует инструкции — укажите это явно
в системном промпте.
Связанное примечание: MCP Sampling — механизм, позволяющий серверу попросить LLM клиента сгенерировать текст — был объявлен устаревшим в спецификации 2026-07-28, с официальной рекомендацией «интегрироваться напрямую с API провайдера LLM». Поэтому этот сервер сам вызывает OpenAI-совместимую endpoint. Это же делает его независимым от конкретного хоста: один и тот же код работает с LM Studio, Ollama, llama.cpp или vLLM.
Related MCP server: membot
Две половины
Сессии — рабочая память для длительной задачи
Инструмент | Назначение |
| Начать или возобновить именованную сессию; показывает, что уже сохранено |
| Записать факт, решение или тупик. Закрепите то, что нельзя потерять |
| Извлечь наиболее релевантные записи, упакованные в бюджет токенов |
| Свернуть старые записи в сводку, чтобы освободить бюджет |
| Насколько заполнена сессия и нужно ли её сжать |
| Закрепить, открепить или удалить одну запись |
| Найти идентификатор сессии из предыдущей работы |
Документы — материал, слишком большой для чтения целиком
Инструмент | Назначение |
| Загрузить текст или файл; разбить на фрагменты, почти ничего не попадает в контекст |
| Структура: индексы фрагментов, заголовки, размеры, опциональные сводки |
| Найти релевантные фрагменты по ключевым словам и вернуть их дословно |
| Прочитать диапазон фрагментов по порядку; курсор перемещается автоматически |
| Суммировать диапазон или весь документ |
| Управление списком документов |
Плюс context_guide, который объясняет модель, как всем этим пользоваться.
Быстрый старт
```bash
npm install npm run build npm test
### ```bash
node dist/index.js --ingest-root ./sourcesИли исследуйте интерактивно:
```bash
npx @modelcontextprotocol/inspector node dist/index.js
***
## LM Studio
Отредактируйте `~/.lmstudio/mcp.json` (в Windows — `C:\Users\<вы>\.lmstudio\mcp.json`)
через **Program → Install → Edit mcp.json**, затем перезагрузите LM Studio.
### ```json
{
"mcpServers": {
"context": {
"command": "node",
"args": [
"/absolute/path/to/mcp-context-sliding/dist/index.js",
"--ingest-root", "/absolute/path/to/your/project",
"--budget", "4000"
]
}
}
}Эти два пути должны быть абсолютными. Хост запускает сервер как дочерний процесс с непредсказуемым рабочим каталогом, поэтому относительный путь не будет разрешён. В командной строке, где вы контролируете рабочий каталог, относительные пути вроде
--ingest-root ./sourcesдопустимы.В Windows используйте либо прямые слэши (
C:/Users/вы/проекты), либо двойные обратные (C:\\Users\\вы\\проекты), поскольку одиночный обратный слэш является escape-символом в JSON-строке.
Установите --budget примерно равным половине контекста вашей модели. Это целевой
объём, который сервер упаковывает в результаты поиска, а не жёсткий лимит, который
LM Studio навязывает.
--ingest-root — это каталог, из которого doc_ingest может читать файлы. Если его
не указывать, сервер принимает только встроенный текст — это безопасно по умолчанию,
поскольку сервер, который открывает произвольные пути по запросу модели, — это
риск безопасности.
Docker
```bash
docker build -t mcp-context-window:latest .
### ```json
{
"mcpServers": {
"context": {
"command": "docker",
"args": [
"run", "-i", "--rm", "--init",
"-v", "mcp-context-data:/data",
"-v", "/absolute/path/to/your/project:/ingest:ro",
"-e", "CTX_INGEST_ROOTS=/ingest",
"--add-host", "host.docker.internal:host-gateway",
"mcp-context-window:latest", "--stdio"
]
}
}
}Два важных момента: флаг -i обязателен, иначе JSON-RPC рукопожатие не состоится
(серверу нужен STDIN). Именованный том обязателен, иначе каждый перезапуск
бесшумно стирает все сохранённые сессии и документы. Внутри контейнера localhost
указывает на сам контейнер, поэтому URL LLM по умолчанию — host.docker.internal.
Docker также требует, чтобы путь монтирования с -v был абсолютным.
Как реально проходит сессия
```
context_open session_id "refactor-auth" context_append "Goal: replace session cookies with JWT" (pinned) context_append "auth/middleware.ts:42 assumes a cookie is present" context_append "Decision: keep cookie support behind a flag for one release" ... context_status → 3200/4000 tokens — approaching budget context_compact → folds 14 old entries into one 380-token summary context_recall "cookie flag decision" → returns the pinned goal + the decision
А вот документ:
### ```
doc_ingest file_path "logs/build-failure.log" → doc_kx91, 240 chunks
doc_search "OutOfMemory" → 3 chunks, 1400 tokens
doc_window from 118 to 121 → the surrounding contextЖурнал никогда не попадает в контекст модели. Три целевых чтения — да.
Конфигурация
Флаг | Переменная окружения | Значение по умолчанию | Назначение |
|
| системный каталог данных | Где хранится состояние |
|
| (нет) | Разрешить |
|
|
| OpenAI-совместимая endpoint |
|
| (загруженная модель) | Оставьте пустым, чтобы использовать текущую |
|
|
| Локальные модели могут быть медленными |
|
| включено | Только экстрактивные сводки |
|
|
| Целевой объём для поиска/окна по умолчанию |
|
|
| Целевой размер фрагмента |
|
|
| Перекрытие между фрагментами |
|
|
| Начальная оценка токенов на символ |
|
|
| Транспорт |
|
|
| Привязка HTTP |
|
| включено | JSON-журнал каждого вызова в stderr |
Принципы проектирования
Подсчёт токенов калибруется по вашей реальной модели. Универсального токенизатора
не существует — Llama, Qwen и GPT разделяют текст по-разному, и встроенный токенизатор
был бы неточным для любой загруженной модели. Поэтому сервер сначала оценивает дёшево,
а затем измеряет истину: он отправляет два образца разной длины на вашу endpoint
с max_tokens: 1 и вычисляет наклон зависимости сообщаемого usage.prompt_tokens
между ними. Наклон компенсирует постоянные накладные расходы чат-шаблона и даёт
реальную предельную стоимость токена на символ. Результат кэшируется, так что
некалиброванным бывает только самый первый запуск, и калибровка выполняется в фоне,
поэтому запуск никогда не блокируется моделью, которая может быть ещё не загружена.
Оценки намеренно завышены. Занижение переполняет окно и обрезает именно тот контекст, для защиты которого существует этот сервер.
Суммирование деградирует, а не отказывает. Если endpoint недоступен или модель не загружена, сервер переключается на экстрактивное суммирование — оценку предложений по TF-ISF — которое мгновенно, детерминировано и структурно не способно галлюцинировать, поскольку может только выбирать предложения, которые реально существовали. Потеря доступа к сохранённому контексту — худший исход, чем более грубая сводка. После сбоя клиент делает короткую паузу, поэтому документ из 200 фрагментов не ждёт 200 отдельных TCP-таймаутов.
Хранилище — это добавляемый в конец JSONL. Сбой может повредить максимум
последнюю строку, которая пропускается при загрузке, а не вызывает фатальную ошибку.
tail файла позволяет наблюдать, как накапливается память. Уплотнение помечает
оригиналы как заменённые, а не удаляет их, поэтому уплотнение, которое потеряло
что-то важное, всё ещё восстановимо из журнала.
Разбиение на фрагменты следует структуре документа, а не фиксированным смещениям — заголовки, абзацы и блоки кода остаются нетронутыми, и каждый фрагмент несёт цепочку заголовков, под которыми он находится. Только блок, действительно превышающий размер целого фрагмента, разбивается принудительно.
Поиск — это BM25 плюс учёт свежести, без модели эмбеддингов. Это не требует
ничего загруженного, не занимает VRAM рядом с основной моделью и детерминировано —
что важно, когда вся суть в предсказуемости того, что увидит модель.
Идентификаторы индексируются целиком и по частям, поэтому getUserName можно найти
по запросу «user name».
Ограничения
Модель должна реально вызывать эти инструменты. Ничего автоматического нет.
Поиск по ключевым словам пропускает перефразировки, которые нашла бы модель эмбеддингов.
Подсчёт токенов — это оценка до первой успешной калибровки.
Ни один транспорт не аутентифицирует; HTTP привязывается к loopback по этой причине.
doc_ingestчитает UTF-8 текст. Это не извлекатель PDF или DOCX.
Лицензия
MIT
Maintenance
Related MCP Servers
- AlicenseAqualityCmaintenanceProvides persistent session memory for AI assistants, enabling them to store, search, and retrieve conversation summaries across sessions via the Model Context Protocol.10MIT
- AlicenseNot gradedqualityAmaintenanceProvides a persistent, versioned, and searchable context store for AI agents with local embedding and hybrid search.1143MIT
- AlicenseNot gradedqualityCmaintenanceLocal-first, cross-session context store that reduces token usage by saving facts, decisions, and preferences, and recalling them in later sessions with token-efficient ranking and compression.2MIT
- AlicenseNot gradedqualityAmaintenanceProvides a local context-memory layer for AI assistants, enabling retrieval-augmented queries, explanations, feedback, and status checks via MCP tools.1Apache 2.0
Related MCP Connectors
Universal memory for AI agents and tools. Save, organize and search context anywhere.
Your portable context layer — load it into any AI.
Persistent memory for AI agents. Search, store, and recall across sessions.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/donliggett/mcp-context-sliding'
If you have feedback or need assistance with the MCP directory API, please join our Discord server