datastore-mcp
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., "@datastore-mcpStore the value 'in-progress' under the key 'current-task'."
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.
datastore-mcp
A remote MCP server that gives an AI assistant a durable, named key/value store — backed by S3-compatible object storage, with each entry stored as an Open Knowledge Format (OKF) document, fronted by an OAuth 2.1 authorization server.
See datastore-mcp-brief-s3-okf.md (the design brief this implements) for the full
rationale. This README covers what's needed to run it.
Tools
state_create, state_get, state_update, state_delete, state_list — see the
brief's §4 for exact argument/behavior tables.
Related MCP server: S3 MCP Server
Decisions made while implementing (brief §9)
The brief left six items open. This implementation resolves them as follows:
S3 provider / conditional writes — provider-agnostic;
state_create's conflict check uses the universally-supported read-then-write pattern (GETthe metadata key first), not a conditional PUT. Works on any S3-compatible provider, at the cost of a narrow single-user race window (brief §8).typefield — caller-supplied optional argument onstate_create, defaulting to"mcp-state"when omitted.Binary response size threshold — 256 KiB (
BINARY_INLINE_THRESHOLD_BYTESinsrc/store.ts). Below it,state_getinlines binary content as base64; at or above it, a presigned URL (1 hour TTL) is returned instead.Orphaned binary payload cleanup — left indefinitely, matching the soft-delete philosophy. No sweep/lifecycle job is implemented.
Bucket versioning — not enabled by this codebase; left as a bucket-level choice for whoever provisions it. If you do enable it, pair it with a lifecycle rule expiring noncurrent versions (brief §0) — this app's access pattern is frequent overwrite, so unversioned storage grows unboundedly otherwise.
var_namevalidation —^[A-Za-z0-9_-]{1,200}$(seeassertValidVarNameinsrc/store.ts). No separators are allowed at all, which incidentally rules out../leading-slash/empty-segment path traversal by construction rather than by explicit denylist.
Local development
cp .env.example .env # fill in S3 + OAuth credentials
npm install
npm run devnpm run dev runs src/index.ts directly via tsx watch. npm run build && npm start
runs the compiled dist/ output, matching what the Docker image runs.
Configuration
See .env.example and src/config.ts for the full list of environment variables
and validation rules (brief §7). All required variables are validated eagerly at
boot; missing or malformed values fail fast with a specific error message.
Deployment
Two-stage Docker build (Dockerfile), single Fly.io Machine pinned to ams
(fly.toml) — see the file for why (in-memory OAuth state, brief §5/§6).
fly launch --no-deploy # first time only, review fly.toml
fly secrets set S3_ENDPOINT=... S3_REGION=... S3_BUCKET=... \
S3_ACCESS_KEY_ID=... S3_SECRET_ACCESS_KEY=... \
OAUTH_USERNAME=... OAUTH_PASSWORD=... PUBLIC_URL=https://<app>.fly.dev
fly deploy/health performs a live HeadBucket check against the configured bucket — point
Fly's health check at it (already configured in fly.toml).
This server cannot be deployed
Maintenance
Related MCP Connectors
- JustOnceOAuthai.justonce
Persistent memory for AI assistants — one shared, OAuth-secured vault for every MCP client.
Persistent cloud memory for AI agents. Store and search key-value memories across sessions.
Encrypted A2A object storage for autonomous agent state and artifacts
Personal wiki and memory layer for AI assistants. Persistent, structured memory across sessions.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to store and retrieve information persistently using key-value pairs with JSON file-based storage. Supports storing, retrieving, listing, deleting, and searching data across sessions.-
- AlicenseAqualityDmaintenanceEnables interaction with S3-compatible storage services like AWS S3 and Cloudflare R2, supporting bucket management, object listing, reading, uploading, and deletion operations.5240 npmISC
- AlicenseNot gradedqualityDmaintenanceIt Integration for MinIO / S3-compatible object storage, providing AI assistants with direct access to bucket management, object CRUD, presigned URLs, policies, lifecycle rules, and storage analytics.1MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI clients to read and write to a user-owned markdown bucket via S3-compatible storage, providing a persistent shared context layer across different AI tools.32,548 npm3MIT