MCP ExplorerExplorer

Unstorage Mcp

@slow-groovinon 10 months ago
1 MIT
FreeCommunity
AI Systems
#kv-store#mcp#mcp-server#unstorage
Key-Value storage MCP server based on unjs/unstorage, support drivers: redis, mongodb, filesystem. http

Overview

What is Unstorage Mcp

unstorage-mcp is a Key-Value storage MCP server based on unjs/unstorage, supporting various drivers including memory, filesystem, redis, and mongodb.

Use cases

Use cases for unstorage-mcp include caching data, storing user sessions, managing application states, and persisting data in a scalable manner.

How to use

To use unstorage-mcp, you can install it via npm with a minimal or maximum configuration. You can interact with the server using various tools like showMounts(), getItem(key), setItem(key, value), etc.

Key features

Key features of unstorage-mcp include support for multiple storage drivers, a variety of tools for data manipulation, and easy configuration for different environments.

Where to use

unstorage-mcp can be used in web applications, microservices, and any system that requires efficient key-value storage solutions.

Content

Unstorage MCP Server

中文 README

A Key-Value storage MCP server based on unjs/unstorage.

Support drivers:

  1. memory
  2. filesystem
  3. redis
  4. unstorage http server
  5. mongodb

Support transports:

  • [x] stdio
  • [x] Streamable HTTP
  • [x] SSE

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)



Running with stdio

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

Running with HTTP (SSE + Streamable)

npx @slow-groovin/unstorage-mcp --http

related arguments

arg default
–http enable http transport instead of stdio false
-p, --port listening port 3000
-h, --host listening host localhost

Example prompt for use

The process has produced a key-value result: "fs_base:recommend_site"="www.api2o.com", store it.

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

Set environment variables in the terminal or in the .env file

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

  1. clone this repo
  2. copy src/storage/redis.ts to a new file and modify it to your desired driver(unjs/unstorage is super easy to learn)
  3. test and verify that it is effective
  4. (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

Tools

No tools

Comments

Recommend MCP Servers

View All MCP Servers