ai.sovantica/engrava
Tamper-evident audit, MindQL, and Action Records — embedded memory database for AI agents.
ai.sovantica/engrava · Repository · version 0.6.0 · 1 star · listed from registry
Install
The sweep installs into a clean prefix, but this is the command a user would run:
uvx engrava-mcp
Results by platform
Linux
MCP handshake failed2026-08-15 · probed over pypi4 recorded runs, oldest first.
handshake failed: MCP error -32000: Connection closed
--- stderr (tail) ---
…stmcp/server.py", line 299, in run
| anyio.run(self.run_stdio_async)
| File "/home/runner/.cache/uv/archive-v0/9Mk9P1o9GZaf6LTB/lib/python3.12/site-packages/anyio/_core/_eventloop.py", line 83, in run
| return async_backend.run(func, args, {}, backend_options)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/home/runner/.cache/uv/archive-v0/9Mk9P1o9GZaf6LTB/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 2481, in run
| return runner.run(wrapper())
| ^^^^^^^^^^^^^^^^^^^^^
| File "/usr/lib/python3.12/asyncio/runners.py", line 118, in run
| return self._loop.run_until_complete(task)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/usr/lib/python3.12/asyncio/base_events.py", line 687, in run_until_complete
| return future.result()
| ^^^^^^^^^^^^^^^
| File "/home/runner/.cache/uv/archive-v0/9Mk9P1o9GZaf6LTB/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 2464, in wrapper
| return await func(*args)
| ^^^^^^^^^^^^^^^^^
| File "/home/runner/.cache/uv/archive-v0/9Mk9P1o9GZaf6LTB/lib/python3.12/site-packages/mcp/server/fastmcp/server.py", line 758, in run_stdio_async
| async with stdio_server() as (read_stream, write_stream):
| File "/usr/lib/python3.12/contextlib.py", line 231, in __aexit__
| await self.gen.athrow(value)
| File "/home/runner/.cache/uv/archive-v0/9Mk9P1o9GZaf6LTB/lib/python3.12/site-packages/mcp/server/stdio.py", line 85, in stdio_server
| async with anyio.create_task_group() as tg:
| File "/home/runner/.cache/uv/archive-v0/9Mk9P1o9GZaf6LTB/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 815, in __aexit__
| raise BaseExceptionGroup(
| ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
+-+---------------- 1 ----------------
| Traceback (most recent call last):
| File "/home/runner/.cache/uv/archive-v0/9Mk9P1o9GZaf6LTB/lib/python3.12/site-packages/mcp/server/stdio.py", line 88, in stdio_server
| yield read_stream, write_stream
| File "/home/runner/.cache/uv/archive-v0/9Mk9P1o9GZaf6LTB/lib/python3.12/site-packages/mcp/server/fastmcp/server.py", line 759, in run_stdio_async
| await self._mcp_server.run(
| File "/home/runner/.cache/uv/archive-v0/9Mk9P1o9GZaf6LTB/lib/python3.12/site-packages/mcp/server/lowlevel/server.py", line 663, in run
| lifespan_context = await stack.enter_async_context(self.lifespan(self))
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/usr/lib/python3.12/contextlib.py", line 659, in enter_async_context
| result = await _enter(cm)
| ^^^^^^^^^^^^^^^^
| File "/usr/lib/python3.12/contextlib.py", line 210, in __aenter__
| return await anext(self.gen)
| ^^^^^^^^^^^^^^^^^^^^^
| File "/home/runner/.cache/uv/archive-v0/9Mk9P1o9GZaf6LTB/lib/python3.12/site-packages/mcp/server/fastmcp/server.py", line 141, in wrap
| async with lifespan(app) as context:
| File "/usr/lib/python3.12/contextlib.py", line 210, in __aenter__
| return await anext(self.gen)
| ^^^^^^^^^^^^^^^^^^^^^
| File "/home/runner/.cache/uv/archive-v0/9Mk9P1o9GZaf6LTB/lib/python3.12/site-packages/engrava_mcp/server.py", line 1470, in lifespan
| resolved: ResolvedStore = await resolve_store()
| ^^^^^^^^^^^^^^^^^^^^^
| File "/home/runner/.cache/uv/archive-v0/9Mk9P1o9GZaf6LTB/lib/python3.12/site-packages/engrava_mcp/config.py", line 183, in resolve_store
| raise StoreResolutionError(msg)
| engrava_mcp.config.StoreResolutionError: No engrava store configured. Set ENGRAVA_MCP_CONFIG to an engrava.yaml path or ENGRAVA_DB_PATH to a SQLite database path.
+------------------------------------
macOS
MCP handshake failed2026-08-15 · probed over pypi4 recorded runs, oldest first.
handshake failed: MCP error -32000: Connection closed
--- stderr (tail) ---
… return self._loop.run_until_complete(task)
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^
| File "/opt/homebrew/Cellar/[email protected]/3.14.6/Frameworks/Python.framework/Versions/3.14/lib/python3.14/asyncio/base_events.py", line 719, in run_until_complete
| return future.result()
| ~~~~~~~~~~~~~^^
| File "/Users/runner/.cache/uv/archive-v0/oSPKIDmU1q_8OgpU/lib/python3.14/site-packages/anyio/_backends/_asyncio.py", line 2464, in wrapper
| return await func(*args)
| ^^^^^^^^^^^^^^^^^
| File "/Users/runner/.cache/uv/archive-v0/oSPKIDmU1q_8OgpU/lib/python3.14/site-packages/mcp/server/fastmcp/server.py", line 758, in run_stdio_async
| async with stdio_server() as (read_stream, write_stream):
| ~~~~~~~~~~~~^^
| File "/opt/homebrew/Cellar/[email protected]/3.14.6/Frameworks/Python.framework/Versions/3.14/lib/python3.14/contextlib.py", line 235, in __aexit__
| await self.gen.athrow(value)
| File "/Users/runner/.cache/uv/archive-v0/oSPKIDmU1q_8OgpU/lib/python3.14/site-packages/mcp/server/stdio.py", line 85, in stdio_server
| async with anyio.create_task_group() as tg:
| ~~~~~~~~~~~~~~~~~~~~~~~^^
| File "/Users/runner/.cache/uv/archive-v0/oSPKIDmU1q_8OgpU/lib/python3.14/site-packages/anyio/_backends/_asyncio.py", line 815, in __aexit__
| raise BaseExceptionGroup(
| "unhandled errors in a TaskGroup", self._exceptions
| ) from None
| ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
+-+---------------- 1 ----------------
| Traceback (most recent call last):
| File "/Users/runner/.cache/uv/archive-v0/oSPKIDmU1q_8OgpU/lib/python3.14/site-packages/mcp/server/stdio.py", line 88, in stdio_server
| yield read_stream, write_stream
| File "/Users/runner/.cache/uv/archive-v0/oSPKIDmU1q_8OgpU/lib/python3.14/site-packages/mcp/server/fastmcp/server.py", line 759, in run_stdio_async
| await self._mcp_server.run(
| ...<3 lines>...
| )
| File "/Users/runner/.cache/uv/archive-v0/oSPKIDmU1q_8OgpU/lib/python3.14/site-packages/mcp/server/lowlevel/server.py", line 663, in run
| lifespan_context = await stack.enter_async_context(self.lifespan(self))
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/opt/homebrew/Cellar/[email protected]/3.14.6/Frameworks/Python.framework/Versions/3.14/lib/python3.14/contextlib.py", line 668, in enter_async_context
| result = await _enter(cm)
| ^^^^^^^^^^^^^^^^
| File "/opt/homebrew/Cellar/[email protected]/3.14.6/Frameworks/Python.framework/Versions/3.14/lib/python3.14/contextlib.py", line 214, in __aenter__
| return await anext(self.gen)
| ^^^^^^^^^^^^^^^^^^^^^
| File "/Users/runner/.cache/uv/archive-v0/oSPKIDmU1q_8OgpU/lib/python3.14/site-packages/mcp/server/fastmcp/server.py", line 141, in wrap
| async with lifespan(app) as context:
| ~~~~~~~~^^^^^
| File "/opt/homebrew/Cellar/[email protected]/3.14.6/Frameworks/Python.framework/Versions/3.14/lib/python3.14/contextlib.py", line 214, in __aenter__
| return await anext(self.gen)
| ^^^^^^^^^^^^^^^^^^^^^
| File "/Users/runner/.cache/uv/archive-v0/oSPKIDmU1q_8OgpU/lib/python3.14/site-packages/engrava_mcp/server.py", line 1470, in lifespan
| resolved: ResolvedStore = await resolve_store()
| ^^^^^^^^^^^^^^^^^^^^^
| File "/Users/runner/.cache/uv/archive-v0/oSPKIDmU1q_8OgpU/lib/python3.14/site-packages/engrava_mcp/config.py", line 183, in resolve_store
| raise StoreResolutionError(msg)
| engrava_mcp.config.StoreResolutionError: No engrava store configured. Set ENGRAVA_MCP_CONFIG to an engrava.yaml path or ENGRAVA_DB_PATH to a SQLite database path.
+------------------------------------
Windows
MCP handshake failed2026-08-15 · probed over pypi4 recorded runs, oldest first.
handshake failed: MCP error -32000: Connection closed
--- stderr (tail) ---
…ckends\_asyncio.py", line 2481, in run
| return runner.run(wrapper())
| ^^^^^^^^^^^^^^^^^^^^^
| File "C:\hostedtoolcache\windows\Python\3.12.10\x64\Lib\asyncio\runners.py", line 118, in run
| return self._loop.run_until_complete(task)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "C:\hostedtoolcache\windows\Python\3.12.10\x64\Lib\asyncio\base_events.py", line 691, in run_until_complete
| return future.result()
| ^^^^^^^^^^^^^^^
| File "C:\Users\runneradmin\AppData\Local\uv\cache\archive-v0\wLD2rTQrbHkjjz6s\Lib\site-packages\anyio\_backends\_asyncio.py", line 2464, in wrapper
| return await func(*args)
| ^^^^^^^^^^^^^^^^^
| File "C:\Users\runneradmin\AppData\Local\uv\cache\archive-v0\wLD2rTQrbHkjjz6s\Lib\site-packages\mcp\server\fastmcp\server.py", line 758, in run_stdio_async
| async with stdio_server() as (read_stream, write_stream):
| ^^^^^^^^^^^^^^
| File "C:\hostedtoolcache\windows\Python\3.12.10\x64\Lib\contextlib.py", line 231, in __aexit__
| await self.gen.athrow(value)
| File "C:\Users\runneradmin\AppData\Local\uv\cache\archive-v0\wLD2rTQrbHkjjz6s\Lib\site-packages\mcp\server\stdio.py", line 85, in stdio_server
| async with anyio.create_task_group() as tg:
| ^^^^^^^^^^^^^^^^^^^^^^^^^
| File "C:\Users\runneradmin\AppData\Local\uv\cache\archive-v0\wLD2rTQrbHkjjz6s\Lib\site-packages\anyio\_backends\_asyncio.py", line 815, in __aexit__
| raise BaseExceptionGroup(
| ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
+-+---------------- 1 ----------------
| Traceback (most recent call last):
| File "C:\Users\runneradmin\AppData\Local\uv\cache\archive-v0\wLD2rTQrbHkjjz6s\Lib\site-packages\mcp\server\stdio.py", line 88, in stdio_server
| yield read_stream, write_stream
| File "C:\Users\runneradmin\AppData\Local\uv\cache\archive-v0\wLD2rTQrbHkjjz6s\Lib\site-packages\mcp\server\fastmcp\server.py", line 759, in run_stdio_async
| await self._mcp_server.run(
| File "C:\Users\runneradmin\AppData\Local\uv\cache\archive-v0\wLD2rTQrbHkjjz6s\Lib\site-packages\mcp\server\lowlevel\server.py", line 663, in run
| lifespan_context = await stack.enter_async_context(self.lifespan(self))
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "C:\hostedtoolcache\windows\Python\3.12.10\x64\Lib\contextlib.py", line 659, in enter_async_context
| result = await _enter(cm)
| ^^^^^^^^^^^^^^^^
| File "C:\hostedtoolcache\windows\Python\3.12.10\x64\Lib\contextlib.py", line 210, in __aenter__
| return await anext(self.gen)
| ^^^^^^^^^^^^^^^^^^^^^
| File "C:\Users\runneradmin\AppData\Local\uv\cache\archive-v0\wLD2rTQrbHkjjz6s\Lib\site-packages\mcp\server\fastmcp\server.py", line 141, in wrap
| async with lifespan(app) as context:
| ^^^^^^^^^^^^^
| File "C:\hostedtoolcache\windows\Python\3.12.10\x64\Lib\contextlib.py", line 210, in __aenter__
| return await anext(self.gen)
| ^^^^^^^^^^^^^^^^^^^^^
| File "C:\Users\runneradmin\AppData\Local\uv\cache\archive-v0\wLD2rTQrbHkjjz6s\Lib\site-packages\engrava_mcp\server.py", line 1470, in lifespan
| resolved: ResolvedStore = await resolve_store()
| ^^^^^^^^^^^^^^^^^^^^^
| File "C:\Users\runneradmin\AppData\Local\uv\cache\archive-v0\wLD2rTQrbHkjjz6s\Lib\site-packages\engrava_mcp\config.py", line 183, in resolve_store
| raise StoreResolutionError(msg)
| engrava_mcp.config.StoreResolutionError: No engrava store configured. Set ENGRAVA_MCP_CONFIG to an engrava.yaml path or ENGRAVA_DB_PATH to a SQLite database path.
+------------------------------------
Badge
Paste this into the project README to show the current result:
[](https://doesitinstall.com/s/ai.sovantica__engrava.html)