Clark MCP Server
Provides memory storage and retrieval for Hermes agents, enabling contextual recall through Clark's memory layer.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Clark MCP Serverremember that Alice prefers concise answers"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Clark
Clark is a memory layer for personal agents. It stores profile, factual, episodic, and procedural memory behind one query surface, so tools such as Hermes, Codex, Claude Code, Gemini CLI, Cursor, and MCP-compatible agents can retrieve useful context without stitching several memory systems together.
The repository is being hardened for open-source production use. The current production path is:
Postgres 16 with
pgvectorfor server deployments.SQLite plus
sqlite-vecfor local development and single-user experiments.DeepSeek for LLM extraction by default.
Gemini embeddings by default.
FastAPI HTTP API with bearer-token auth.
MCP server for agent-native integration.
uvfor local development and CI-style commands.
Status
Clark is ready for public open-source development and production-path evaluation. The local CLI, HTTP API, MCP transports, Docker path, Postgres/pgvector backend, and provider contracts are covered by real tests.
Benchmark claims are intentionally conservative: publish comparative numbers only when they come from the checked-in benchmark runners, real provider credentials, and recorded artifacts.
Related MCP server: Synapto
Install
git clone https://github.com/Nomads-AI-Lab/clark.git
cd clark
uv sync --extra test --extra server --extra mcp --extra postgresFor local editable development:
uv pip install -e ".[test,server,mcp,postgres]"Configuration
Create .env from .env.example and set real credentials:
cp .env.example .envRequired for production server mode:
CLARK_ENV=production
CLARK_AUTH_TOKEN=replace-with-a-long-random-token
CLARK_DATABASE_URL=postgresql://clark:strong-password@postgres:5432/clark
GEMINI_API_KEY=...
DEEPSEEK_API_KEY=...Important behavior:
Clark does not silently replace missing providers with fake embeddings or fake LLM output.
If a required provider key is absent for the code path you run, the operation fails explicitly.
Server production mode requires
CLARK_AUTH_TOKEN.
CLI
uv run clark doctor
uv run clark migrate
uv run clark stats
uv run clark remember "Alice prefers concise technical answers"
uv run clark query "How should I answer Alice?"
uv run clark session-startclark migrate applies the Postgres/pgvector schema when CLARK_DATABASE_URL is set. Without CLARK_DATABASE_URL, the legacy SQLite schema initializes on first use.
Docker
cp .env.example .env
# edit .env and set strong real values
docker compose up --buildThen migrate the database:
docker compose exec clark-api clark migrateHealth and API smoke:
curl http://127.0.0.1:8000/healthz
curl -H "Authorization: Bearer $CLARK_AUTH_TOKEN" http://127.0.0.1:8000/v1/statsHTTP API
uv run clark serve 8000Endpoints:
GET /healthzGET /readyzGET /v1/statsPOST /v1/memoriesPOST /v1/query
Authenticated request:
curl -X POST http://127.0.0.1:8000/v1/memories \
-H "Authorization: Bearer $CLARK_AUTH_TOKEN" \
-H "Content-Type: application/json" \
-d '{"text":"Alice is building a production memory layer","source":"api"}'MCP
Run a stdio MCP server:
uv run clark mcpRun streamable HTTP transport:
uv run clark mcp streamable-httpAvailable tools:
clark_healthclark_statsclark_queryclark_remember
Resource:
clark://stats
When CLARK_DATABASE_URL is set, MCP uses the Postgres backend. Otherwise it uses the local SQLite backend.
Python API
from clark import HybridMemory
memory = HybridMemory()
memory.remember("Alice works on agent memory infrastructure")
result = memory.query("What does Alice work on?")
print(result["results"])For production server deployments, prefer the HTTP API or MCP server over importing the legacy SQLite class directly.
Tests
Run the local suite:
uv run pytestRun real provider contract tests:
GEMINI_API_KEY=... DEEPSEEK_API_KEY=... uv run pytest tests/test_provider_contracts.pyRun real Postgres/pgvector integration tests:
docker run --rm -d --name clark-pgvector-test \
-p 15434:5432 \
-e POSTGRES_DB=clark \
-e POSTGRES_USER=clark \
-e POSTGRES_PASSWORD=clark-local-dev-password \
pgvector/pgvector:pg16
CLARK_DATABASE_URL=postgresql://clark:clark-local-dev-password@127.0.0.1:15434/clark \
GEMINI_API_KEY=... \
uv run pytest tests/test_postgres_backend.py
docker rm -f clark-pgvector-testOpen-Source Documents
Security
Do not expose the HTTP API without CLARK_AUTH_TOKEN. Do not commit .env, database dumps, provider keys, or personal memory exports. Treat memory contents as sensitive user data.
This server cannot be deployed
Maintenance
Related MCP Connectors
Shared, governed long-term memory for AI agents across tools and sessions via MCP and REST.
Persistent memory for AI agents — log and recall conversation context over MCP.
- memnodeOAuthdev.memnode
Persistent, inspectable memory for AI agents with lineage, correction, and a hosted MCP endpoint.
Private-by-default, local-first memory/context/task orchestrator for MCP apps and agents.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceProvides a local, persistent long-term memory service for MCP-compatible AI agents, enabling them to store, search, and recall information across sessions.1GPL 3.0
- AlicenseNot gradedqualityAmaintenanceProvides persistent, searchable memory for MCP-compatible agents, enabling recall by meaning, automatic decay, trust scoring, and cross-agent handoffs.5MIT
- AlicenseAqualityDmaintenanceProvides persistent memory with semantic search for MCP-based AI agents, enabling them to store and recall information across sessions using vector embeddings.41MIT
- AlicenseAqualityAmaintenanceProvides persistent, graph-based memory for AI agents via MCP, enabling semantic search, wikilink traversal, reminders, and injection protection.930Apache 2.0