Unstorage MCP Server
by slow-groovin
A Key-Value storage MCP server based on unjs/unstorage. It supports multiple drivers like memory, filesystem, Redis, HTTP, and MongoDB.
Last updated: N/A
Unstorage MCP Server
A Key-Value storage MCP server based on unjs/unstorage.
Current support drivers:
- memory
- filesystem
- redis
- unstorage http server
- mongodb
Current tools:
showMounts()
getItem(key)
getItems(items)
getItemRaw(key)
getMeta(key, nativeOnly)
getKeys(base, maxDepth)
setItem(key, value)
setItems(items)
setItemRaw(key, value)
setMeta(key, meta)
removeItem(key, removeMeta)
removeMeta(key)
<br><br>
install
minimal configuration
{
"mcpServers": {
"unstorage": {
"command": "npx",
"args": ["/y", "@slow-groovin/unstorage-mcp"]
}
}
}
maximum configuration
{
"mcpServers": {
"unstorage": {
"command": "npx",
"env": {
"REDIS_URL": "redis://default:123456@localhost:6379",
"REDIS_BASE": "visits:date:api:",
"REDIS_MOUNT_POINT": "redis_storage",
"FS_BASE": "D:/tmp",
"FS_MOUNT_POINT": "fs_storage",
"HTTP_BASE": "http://localhost:3001",
"HTTP_MOUNT_POINT": "http_storage",
"HTTP_HEADERS": "Authorization=Bear 123;A=3;B=4;C=5",
"MONGODB_URL": "mongodb://root:123456@localhost:27017/",
"MONGODB_DB_NAME": "test",
"MONGODB_COLLECTION_NAME": "unstorage",
"MONGODB_MOUNT_POINT": "mongo_storage"
},
"args": ["/y", "@slow-groovin/unstorage-mcp", "--disable-modify"]
}
}
}
for Cline+Windows:
{
"mcpServers": {
"unstorage": {
"command": "cmd",
"args": ["/c", "npx", "/y", "@slow-groovin/unstorage-mcp"]
}
}
}
If you have problem of installation on Windows, you can refrer to this article
args
--disable-modify
Default: false
Disable tools with modify functionality like setItem, setItems ...
environment variables
for the concept of base and mountpoint, please refer to the doc of unstorage
redis
if REDIS_URL
is set, a redis storage will be mounted
| Syntax | Description | Default Value | Optional |
| ----------------------- | -------------------------------------------------------------- | ------------- | -------- |
| REDIS_URL
| redis connect url, eg: redis://default:123456@localhost:6379
| | |
| REDIS_BASE
| base of redisDriver | | ✅ |
| REDIS_MOUNT_POINT
| mountpoint of this storage | "/" | ✅ |
mongodb
if MONGODB_URL
is set, a mongodb storage will be mounted
| Syntax | Description | Default Value | Optional |
| ----------------------------- | -------------------------------------------------------- | ------------- | -------- |
| MONGODB_URL
| mongodb connect url, eg: mongodb://user:pass@host:port
| | |
| MONGODB_DB_NAME
| mongodb database name, eg: test
| | |
| MONGODB_COLLECTION_NAME
| mongodb collection name, eg: mycollection
| | |
| MONGODB_MOUNT_POINT
| mountpoint of this storage | "/" | ✅ |
filesystem
if FS_BASE
is set, a redis storage will be mounted
| Syntax | Description | Default Value | Optional |
| -------------------- | ------------------------------------ | ------------- | -------- |
| FS_BASE
| base of fsDriver, path of filesystem | | |
| FS_MOUNT_POINT
| mountpoint of this storage | "/" | ✅ |
http server
if HTTP_BASE
is set, a http storage will be mounted
| Syntax | Description | Default Value | Optional |
| ---------------------- | --------------------------------------------------------------- | ------------- | -------- |
| HTTP_BASE
| base of httpDriver, endpoint of http server | | |
| HTTP_MOUNT_POINT
| mountpoint of this storage | "/" | ✅ |
| HTTP_HEADERS
| headers for http requests, eg: Authorization=Bear 123;A=1;B=2
| | ✅ |
memory
If there is no mount on root("/"), a memory driver will be mounted automatically on "/" (same behaviour of unstorage).
extend guide
- clone this repo
- copy src/storage/redis.ts to a new file and modify it to your desired driver(
unjs/unstorage
is super easy to learn) - test and verify that it is effective
- (optional) pull a merge request
If you are not a typescript developer, please submit a issue to ask for other drivers support.
prompts for cursor/cline assisted programming
@/src/storage/mongodb.ts , please implement this file:
1. you need to fetch information using the storage type's corresponding Doc URL (https://unstorage.unjs.io/drivers/<storage type>).
2. you can refer to examples in @/src/adapter/redis.ts and @/src/storage/http.ts.
3. You are only responsible for generating the code and do not need to perform testing.
If you have not installed fetch MCP server, delete the first sentence
debug approaches
mcp-inspector
mcp-inspector -e HTTP_BASE=http://localhost:3001 -e HTTP_MOUNT_POINT=http_storage -e FS_BASE=D:/temp -e FS_MOUNT_POINT=fs_storage -e HTTP_HEADERS="Authorization=Bear 123;" tsx ./src/index.ts
tsx mcpServer Config for local dev
{
"mcpServers": {
"command": "cmd",
"env": {
"REDIS_URL": "redis://default:123456@localhost:6379",
"REDIS_BASE": "my:mcp:values:",
"REDIS_MOUNT_POINT": "redis_storage"
},
"args": ["/c", "tsx", "D:/xxx/projects/unstorage-mcp/src/index.ts"]
}
}
restarting server is needed to make changes take effect