append-log-mcp
A generic append-only log MCP server. Agents write timestamped JSON entries to a JSONL file and query them back by recency.
Tools
| Tool | Description | |---|---| | append | Append a JSON entry to the log. The server adds a logged_at timestamp. | | query | Return logged entries, optionally filtered to the last N days. |
Configuration
| Variable | Required | Description | |---|---|---| | APPEND_LOG_FILE | No | Path to the JSONL file (default: append-log.jsonl in cwd) | | APPEND_LOG_TOOLS | Yes | Comma-separated tools to expose: append, query |
Running
Binary (stdio)
task build # outputs to build/append-log-mcp
APPEND_LOG_FILE=/tmp/log.jsonl \
APPEND_LOG_TOOLS=append,query \
./build/append-log-mcp --transport stdio
Binary (HTTP)
APPEND_LOG_FILE=/tmp/log.jsonl \
APPEND_LOG_TOOLS=append,query \
./build/append-log-mcp --transport http --addr :8080
Docker
The Dockerfile uses Docker Hardened Images (DHI). Building requires Docker Hub authentication:
docker login
docker build -t append-log-mcp .
Run via stdio:
docker run -i --rm \
-e APPEND_LOG_TOOLS=append,query \
-v append-log-data:/data \
roberthouse224/append-log-mcp
Docker Compose
docker compose up
The compose file mounts a named volume at /data and sets both env vars.
MCP client config (stdio)
{
"mcpServers": {
"append-log": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-e", "APPEND_LOG_TOOLS=append,query",
"-v", "append-log-data:/data",
"roberthouse224/append-log-mcp"
]
}
}
}
Log file format
Each line is a JSON object:
{"data": {"passage_key": "2680:42"}, "logged_at": "2026-03-25T08:00:00Z"}
data accepts any valid JSON value. logged_at is always RFC3339 UTC.
Development
task test # go test ./...
task build # outputs to build/append-log-mcp
go vet ./...
staticcheck ./...










