Skip to main content
Glama

samskriti-shared-layer

License: MIT Python MCP

Локальный MCP-сервер, который позволяет нескольким ИИ-инструментам для разработки совместно использовать структурированное состояние проекта — решения, задачи, баги — чтобы они координировались без повторных объяснений.

   Claude Code      Cursor        Codex
       │              │             │
       │  read/write  │  read/write │
       └──────────────┼─────────────┘
                      ▼
            ┌───────────────────────┐
            │   samskriti-shared-layer   │   (local MCP server, stdio)
            └───────────┬───────────┘
                        ▼
              ┌───────────────────┐
              │   SQLite store    │   ~/.samskriti/  (100% local)
              └───────────────────┘

Проблема

Вы принимаете решение в одном ИИ-инструменте, затем переключаетесь на другой — и приходится объяснять всё заново с нуля. Каждый ассистент стартует «холодным», не имея представления о том, что уже решено, опробовано или отклонено. Этот сервер даёт им общий структурированный реестр вашего проекта, чтобы любой инструмент мог прочитать то, что записали другие.

Related MCP server: session-coord-mcp

Установка

Установите с помощью pipx (рекомендуется — это добавляет команду samskriti-shared-layer в PATH, чтобы ваши ИИ-инструменты могли её найти):

pipx install git+https://github.com/Escalate17/samskriti-shared-layer

Нет pipx? Сначала установите его: python3 -m pip install --user pipx && python3 -m pipx ensurepath (затем перезапустите терминал).

Чтобы проверить, что установка прошла успешно:

samskriti-shared-layer --help

Если вы видите текст справки, всё готово к подключению.

Подключение

Самый простой способ: позвольте ему настроить ваш инструмент

samskriti-shared-layer setup          # Claude Code
samskriti-shared-layer setup --cursor # Cursor
samskriti-shared-layer setup --codex  # Codex
samskriti-shared-layer setup --all    # all three

Это записывает блок конфигурации MCP в нужный файл за вас (предварительно создавая резервную копию существующей конфигурации), так что вам не придётся править JSON вручную. Затем полностью закройте и снова откройте ваш инструмент — MCP-серверы загружаются только при запуске инструмента, поэтому текущая сессия не увидит его, пока вы не перезапустите.

Или добавьте вручную

Добавьте сервер в MCP-конфиг вашего ИИ-инструмента, затем полностью перезапустите инструмент.

Claude Code (~/.claude.json):

{
  "mcpServers": {
    "samskriti-shared-layer": {
      "command": "samskriti-shared-layer",
      "args": []
    }
  }
}

Cursor (~/.cursor/mcp.json):

{
  "mcpServers": {
    "samskriti-shared-layer": {
      "command": "samskriti-shared-layer",
      "args": []
    }
  }
}

Codex (~/.codex/config.toml):

[mcp_servers.samskriti-shared-layer]
command = "samskriti-shared-layer"
args = []

Если ваш инструмент не может найти команду, это проблема PATH — выполните which samskriti-shared-layer, чтобы получить полный путь, и используйте этот полный путь в качестве значения command.

Проверка подключения

В Claude Code введите /mcp — вы должны увидеть samskriti-shared-layer в списке с его 8 инструментами. (В Cursor и Codex есть аналогичные индикаторы статуса MCP в настройках.)

Инструменты

  • record_project_entry — сохраняет запись (goal, update, decision, convention, bug, task, rejected_idea).

  • get_project_state — читает удобочитаемую сводку, сгруппированную по категориям.

  • search_project_state — поиск по ключевым словам среди записей.

  • update_project_entry — редактирует заголовок, содержимое или статус записи.

  • list_projects — выводит список всех отслеживаемых проектов.

Плюс три ярлыка — catchup, open и log — для самых частых действий. См. Вспомогательные команды ниже.

Уже установлено? Выполните pipx reinstall samskriti-shared-layer, чтобы получить новые команды. Если вы установили более раннюю сборку (она отображается как samskriti-shared-layer-local в pipx list), выполните миграцию один раз: pipx uninstall samskriti-shared-layer-local && pipx install git+https://github.com/Escalate17/samskriti-shared-layer.

Быстрый доступ: слэш-команда /sam

Каждый раз печатать «используйте MCP samskriti-shared-layer …» утомительно. И Claude Code, и Cursor поддерживают пользовательские слэш-команды — файлы-подсказки в Markdown, которые вы кладёте в папку. Они не привязываются напрямую к инструменту, но внедряют подсказку, которая говорит агенту использовать этот сервер, так что /sam <message> делает то, что нужно. (В Codex нет механизма слэш-команд для MCP; просто скажите «используйте samskriti-shared-layer, чтобы …» — агент сам выберет инструмент.)

Claude Code — сохраните slash-commands/claude-code/sam.md в одном из следующих мест:

  • ~/.claude/commands/sam.md (доступна в каждом проекте), или

  • <your-project>/.claude/commands/sam.md (только для этого проекта).

Затем в Claude Code: /sam what's open или /sam log we're dropping the Redis cache. Плейсхолдер $ARGUMENTS в файле получает всё, что вы вводите после /sam.

Cursor (1.6+) — сохраните slash-commands/cursor/sam.md в:

  • ~/.cursor/commands/sam.md (глобально), или

  • <your-project>/.cursor/commands/sam.md (только для этого проекта).

Затем введите / в поле агента Cursor, выберите sam и добавьте своё сообщение.

Пока ни одна функция клиента не привязывает слэш-команду напрямую к вызову MCP — этот файл команды является ближайшим поддерживаемым эквивалентом, и он работает уже сегодня.

Вспомогательные команды

Три ярлыка оборачивают самые частые действия. Вы никогда не вызываете их напрямую по имени инструмента — вы запускаете их с помощью /sam плюс обычный текст, или просто обращаясь обычным языком.

Что нужно сделать…

Инструмент

Что делает

Ознакомиться

catchup

Краткая сводка проекта — последние записи плюс количество открытых задач.

Посмотреть открытые задачи

open

Перечисляет активные (открытые) задачи с их ID.

Зафиксировать решение

log

Быстро записывает решение; заголовок автоматически выводится из текста, если вы его опустите.

Два способа вызова — оба работают:

  1. Слэш-команда /sam (Claude Code / Cursor, после того как вы добавили файл команды выше):

    /sam catch me up
    /sam what's open
    /sam log we're switching local storage to SQLite

    Вы вводите /sam, а затем обычный текст. Не существует отдельной команды /catchup, /open или /log — это всегда /sam плюс то, что вам нужно.

  2. Обычный язык (работает в любом MCP-инструменте, включая Codex):

    use samskriti-shared-layer to catch me up
    use samskriti-shared-layer to show what's open
    use samskriti-shared-layer to log: we're switching local storage to SQLite

Попробуйте за 30 секунд

  1. В инструменте A (например, Claude Code): «Запиши решение в проекте 'demo': мы используем SQLite для локального хранения.»

  2. В инструменте B (например, Cursor): «Получи состояние проекта для 'demo'.»

Инструмент B считывает решение, которое только что записал инструмент A, — без повторных объяснений.

Демо

Конфиденциальность

100% локально. Никакого облака, никакого аккаунта, ваши данные никогда не покидают ваш компьютер. Состояние хранится в базе данных SQLite в ~/.samskriti/ (можно переопределить с помощью переменной окружения SAMSKRITI_HOME или SAMSKRITI_PROJECT_DB). Собственные политики обработки данных и конфиденциальности вашего ИИ-клиента по-прежнему применяются.

Как это вписывается

Это одна из трёх вещей, которые я поддерживаю под именем Samskriti, и все они разделяют общую идею: важное состояние должно вычисляться и храниться явно, а не восстанавливаться из транскрипта каждый раз.

  • samskriti — движок, который детерминированно вычисляет эмоциональное и реляционное состояние агента на основе его опыта, вне какой-либо языковой модели. C++ с Python SDK. (статья)

  • samskriti-luau — та же модель для Roblox, где NPC запоминают, как игрок к ним относился.

  • samskriti-shared-layer — этот репозиторий. Та же идея, применённая к вашему проекту, а не к персонажу: решения, задачи и отклонённые идеи хранятся в структурированном реестре, который может прочитать любой инструмент, вместо того чтобы каждый раз заново извлекаться из контекста.

ИИ-ассистент, начинающий холодным на вашей кодовой базе, и игровой персонаж, забывший, что вы ограбили его на прошлой неделе, — это один и тот же сбой. Оба просят модель восстановить состояние, которое ей никогда не передавали. Этот сервер — не самая эффектная версия решения, но именно ею я пользуюсь каждый день.

Статус

Ранняя стадия / проверка. Это рабочий прототип, который тестируется на реальных рабочих процессах. Ожидаются баги, шероховатости и отсутствующие функции — вопросы и обратная связь очень приветствуются.

Лицензия

MIT — см. LICENSE.

Available Tools

5 tools
get_project_stateB

Returns a concise, readable summary of project state, grouped by category.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYesProject name or absolute root path
categoryNoOptional specific category to filter by

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It states the output is 'concise, readable summary, grouped by category' but does not disclose read-only nature, performance, or any side effects. Minimal behavioral insight.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no fluff, front-loaded with verb and object. Every word adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read tool with full schema parameter coverage and no output schema, the description adequately conveys categorization. However, it does not specify what 'state' includes (e.g., status, metrics), leaving some ambiguity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with clear parameter descriptions. The description adds 'grouped by category' hinting at the category parameter, but this is already implied by the parameter description. Meets baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Returns' and resource 'summary of project state' making the purpose clear. It implicitly distinguishes from siblings like list_projects (list only) and search_project_state (search), but does not explicitly differentiate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives such as search_project_state or list_projects. The description provides no context for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_projectsA

Returns a list of all known projects tracked by Samskriti V1.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description must fully disclose behavior. It only states it returns a list; no mention of pagination, ordering, performance characteristics, or potential large results. This lack of detail can cause agent uncertainty.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise single sentence with no wasted words. All information is front-loaded and clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters or output schema, the description is minimal. It covers the basic purpose but lacks details on return format, ordering, or any limitations. For a simple listing tool, it is adequate but could be more complete (e.g., 'Returns an array of project objects with id and name').

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, and schema coverage is 100%. Baseline score of 4 applies as description adds no parameter info but is not needed. The tool has no parameters to document.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it returns a list of all known projects tracked by Samskriti V1, with a specific verb and resource. It distinguishes from siblings like get_project_state (single project) and search_project_state (filtered).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like search_project_state for filtered results. The description implies listing all projects but does not explicitly state when to prefer this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

record_project_entryB

Stores a structured project-state entry (goal, update, decision, convention, bug, task, rejected_idea).

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYesProject name or absolute root path
categoryYesCategory: goal, update, decision, convention, bug, task, rejected_idea
titleYesConcise summary title
contentYesDetailed description or payload
source_agentNoOptional name of the agent calling this tool (e.g. 'claude-code')
statusNoOptional status: active, completed, resolved, superseded

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description must disclose behavioral traits. It only says 'Stores' without clarifying if entries are appended or overwritten, or if duplicates are allowed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence is concise but omits important details. While not verbose, it does not fully earn its place given the missing behavioral and usage information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema and description does not mention return value or success/error behavior. Does not explain whether entries are idempotent or require prior project existence.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 100% coverage with descriptions for all parameters. Description adds no extra meaning beyond the schema, such as value formats or constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it stores a structured project-state entry and lists the allowed categories. It distinguishes from siblings like get_project_state (read) and update_project_entry (update).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus update_project_entry or whether the project must already exist. Lacks prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_project_stateB

Search the project state ledger using a simple keyword query.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYesProject name or absolute root path
queryYesKeywords to match against title/content

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must fully disclose behavioral traits. It only mentions 'simple keyword query' without explaining output format, pagination, case sensitivity, wildcards, or any side effects. This minimal information is insufficient for an agent to understand the tool's behavior beyond the basic intent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence with no extraneous words. However, it lacks structure such as front-loading key details or breaking down complex information. While efficient, it could be slightly more informative without losing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of an output schema and annotations, the description should explain what the search returns. It does not mention the return format, whether results are filtered or sorted, or any limitations. This leaves a significant gap in context for the agent to correctly invoke and interpret the tool's output.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides full descriptions for both parameters ('project' and 'query'), achieving 100% coverage. The description adds only the qualifier 'simple', which does not significantly enhance meaning beyond the schema. Therefore, it meets the baseline for high schema coverage without adding substantial value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Search'), the resource ('project state ledger'), and the method ('simple keyword query'). It effectively distinguishes this tool from its siblings (get_project_state, list_projects, record_project_entry, update_project_entry) by indicating a different purpose: searching instead of retrieving full state, listing, recording, or updating.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for keyword-based searching but does not explicitly state when to use this tool versus alternatives. No guidance on when not to use it or which sibling might be better suited for specific scenarios is provided, leaving the agent to infer from the tool name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_project_entryA

Update an existing project entry's title, content, or status.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesUnique UUID of the entry to edit
titleNoOptional new title
contentNoOptional new content
statusNoOptional new status (active, completed, resolved, superseded)

TDQS

A3.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description does not disclose behavioral traits such as permissions, idempotency, side effects, or error handling. For a mutation tool, this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence of 10 words, front-loaded with the action and resource, with no extraneous information. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple update tool with no output schema, the description covers the what and the modifiable fields. However, it lacks information on return values, error conditions, or idempotency, which would be helpful for an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds value by listing the allowed status values in parentheses, which is not fully captured in the schema's description for the 'status' parameter. Schema coverage is 100%, so baseline is 3; the extra enum detail raises it to 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'Update' with the resource 'project entry' and lists the fields that can be modified (title, content, status). It clearly distinguishes from sibling tools like 'record_project_entry' (create) and 'get_project_state' (read).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implicitly conveys usage: modify an existing entry. However, it does not explicitly state when not to use it (e.g., for creating new entries) or provide alternatives. Despite this, the context is clear given the sibling tool names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updatesv0.1.0
    • First observedget_project_state
    • First observedlist_projects
    • First observedrecord_project_entry
    • First observedsearch_project_state
    • First observedupdate_project_entry

TDQS

A3.7/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a distinct purpose: summarizing state, listing projects, recording entries, searching, and updating. No overlapping functionality.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern (e.g., get_project_state, record_project_entry), ensuring predictability.

Tool Count5/5

With 5 tools, the server covers essential operations without being overwhelming or insufficient for project state management.

Completeness4/5

Covers core operations (list, get, record, search, update) but lacks explicit project creation and deletion, which may be minor gaps.

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    A portable MCP server that provides a shared persistent working state for AI coding agents, managing tasks, plans, notepads, memory, and project rules across different tools like Claude Code, OpenCode, and Cursor.
    6
    8 npm
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server that enables AI coding agents to communicate, share state, and coordinate work in real time via MCP tools or REST API.
    221 npm
    8
    MIT
  • A
    license
    Not graded
    quality
    F
    maintenance
    A self-hosted MCP server enabling multiple AI coding agents to share state, preserve context across sessions, and coordinate with each other.
    17 npm
    Apache 2.0