Skip to main content
Glama

JSON DB MCP Server

by OSoliman330

JSON DB MCP Server (FastAPI + FastMCP)

A minimal Model Context Protocol (MCP) server that also exposes a small REST API.
Data is stored in a single JSON file (db.json) as collections of items with auto-generated UUIDs.

  • MCP Tools: db.add_item, db.get_item, db.list_items, db.update_item, db.delete_item
  • REST Endpoints: POST/GET/PUT/DELETE /db/{collection}[/{id}]
  • Transports: HTTP (recommended) and SSE (optional)
  • Stack: Python, FastAPI, Uvicorn, FastMCP

Features

  • Simple JSON-file database with atomic writes
  • Thread-safe in a single-process server using a lock
  • Shared core logic for both MCP tools and REST
  • Works with VS Code Copilot (Chat) and Gemini CLI as an MCP server

Requirements

  • Python 3.10+
  • uv (recommended) or pip
  • Git (optional, for version control)

Project Layout

. ├─ main.py ├─ db.json # created on first write └─ README.md

Installation

uv venv uv pip install fastapi uvicorn fastmcp

Using pip

python -m venv .venv source .venv/bin/activate pip install fastapi uvicorn fastmcp

Running

Development (auto-reload)

uv run main.py # or uv run python main.py # Server: http://localhost:8000

Default MCP transport: HTTP at /mcp/ (recommended).
If you prefer SSE, see MCP over SSE (optional) below.


REST API

All endpoints operate on a collection (created on first write) with items of shape:

{ "id": "uuid-string", "...": "fields you provide" }

Create

curl -X POST http://localhost:8000/db/users \ -H "Content-Type: application/json" \ -d '{"name":"Omar","role":"admin"}'

List

curl http://localhost:8000/db/users

Get by ID

curl http://localhost:8000/db/users/<ITEM_ID>

Update

curl -X PUT http://localhost:8000/db/users/<ITEM_ID> \ -H "Content-Type: application/json" \ -d '{"role":"owner"}'

Delete

curl -X DELETE http://localhost:8000/db/users/<ITEM_ID>

This server mounts FastMCP’s HTTP transport at /mcp/.

VS Code — GitHub Copilot (Chat)

  1. Open Copilot ChatTools (or Add MCP).
  2. Transport: HTTP
  3. URL: http://localhost:8000/mcp/ (include the trailing slash)
  4. Enable the server. You should see tools:
    • db.add_item, db.get_item, db.list_items, db.update_item, db.delete_item

Using tools in chat:
Select a tool from the list or ask:

Use db.add_item with collection="users" and payload={"name":"Omar"}.

Gemini CLI

Add the server via CLI (writes settings for you):

# Project-scoped (./.gemini/settings.json) gemini mcp add --transport http jsondb http://localhost:8000/mcp/ # Or user-scoped (~/.gemini/settings.json) gemini mcp add --scope user --transport http jsondb http://localhost:8000/mcp/

List tools:

gemini mcp list

Call a tool:

gemini mcp call jsondb db.add_item \ --args collection=users \ --args payload='{"name":"Omar"}'

MCP over SSE (optional)

If you prefer SSE, change the mount in main.py:

# replace the HTTP mount: # mcp_http_app = mcp.http_app(path="/") # app.mount("/mcp", mcp_http_app) mcp_sse_app = mcp.sse_app() app.mount("/mcp", mcp_sse_app) # SSE lives under /mcp/sse/
  • SSE endpoint: http://localhost:8000/mcp/sse/ (note trailing slash)
  • Copilot: Transport = SSE, URL = http://localhost:8000/mcp/sse/
  • Gemini CLI:
    gemini mcp add --scope user --transport sse jsondb http://localhost:8000/mcp/sse/

Many HTTP clients require a trailing slash for SSE endpoints; use /mcp/sse/.


Health Check (optional)

Add this to main.py (after app = FastAPI(...)) if you want a friendly root:

@app.get("/") def health(): return {"ok": True, "rest": "/db/{collection}", "mcp": "/mcp/"}

Persistence & Backups

  • Data file: db.json (created on first write).
  • Writes are atomic: a db.json.tmp is written then replaced.
  • For safety, consider periodic snapshots (e.g., cp db.json db.json.bak in a cron job).

Authentication (optional)

For local development MCP/REST are open.
If you need auth, simplest is an API key header via FastAPI middleware and headers in your MCP client configuration. Example:

from fastapi import Request from fastapi.responses import JSONResponse import os API_KEY = os.getenv("API_KEY", "") @app.middleware("http") async def api_key_guard(request: Request, call_next): if API_KEY and request.headers.get("x-api-key") != API_KEY: return JSONResponse(status_code=401, content={"detail": "Unauthorized"}) return await call_next(request)
  • Copilot/Gemini: configure an x-api-key header in the MCP server settings.

Troubleshooting

  • 404 on /
    Expected. Use REST under /db/... and MCP at /mcp/ (HTTP) or /mcp/sse/ (SSE).
  • 307 redirect from /mcp/mcp/
    Some SSE clients don’t follow redirects. Use the trailing slash or disable redirect slashes:
    app.router.redirect_slashes = False
  • SSE returns 404
    Make sure you’re hitting /mcp/sse/ (not /mcp/).
  • Concurrency
    Run as a single process for file-backed DB. Multi-process/worker deployments need a real DB or OS-level file locks.
  • Git push errors (VS Code AskPass socket)
    Unset helper vars or use GitHub CLI / SSH keys:
    unset GIT_ASKPASS SSH_ASKPASS VSCODE_GIT_ASKPASS_NODE VSCODE_GIT_ASKPASS_MAIN

License

Copyright© - Omar SOLIMAN

-
security - not tested
F
license - not found
-
quality - not tested

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Enables users to manage data in a simple JSON file database through MCP tools and REST API. Supports creating, reading, updating, and deleting items organized in collections with auto-generated UUIDs.

  1. Features
    1. Requirements
      1. Project Layout
        1. Installation
          1. Using uv (recommended)
          2. Using pip
        2. Running
          1. Development (auto-reload)
        3. REST API
          1. Create
          2. List
          3. Get by ID
          4. Update
          5. Delete
        4. MCP Server (HTTP transport, recommended)
          1. VS Code — GitHub Copilot (Chat)
          2. Gemini CLI
        5. MCP over SSE (optional)
          1. Health Check (optional)
            1. Persistence & Backups
              1. Authentication (optional)
                1. Troubleshooting
                  1. License

                    Related MCP Servers

                    • A
                      security
                      A
                      license
                      A
                      quality
                      Provides a standardized interface for interacting with Quickbase's JSON RESTful API through Claude and other MCP clients, supporting operations like querying records, managing table relationships, and handling file attachments.
                      Last updated -
                      1
                      2
                      2
                      TypeScript
                      MIT License
                      • Apple
                      • Linux
                    • -
                      security
                      F
                      license
                      -
                      quality
                      Allows interaction with MongoDB collections and documents through standardized MCP requests, supporting operations like listing collections, reading documents with filtering, and executing structured queries.
                      Last updated -
                      JavaScript
                    • -
                      security
                      F
                      license
                      -
                      quality
                      A robust server-side application that implements Model Context Protocol (MCP) for file operations, providing authentication and modular REST APIs for managing files, users, and posts.
                      Last updated -
                      TypeScript
                    • -
                      security
                      A
                      license
                      -
                      quality
                      A modular server that enables management of MongoDB databases, collections, documents, indexes, and bulk operations through the Model Context Protocol (MCP) interface.
                      Last updated -
                      TypeScript
                      MIT License

                    View all related MCP servers

                    MCP directory API

                    We provide all the information about MCP servers via our MCP API.

                    curl -X GET 'https://glama.ai/api/mcp/v1/servers/OSoliman330/json-db-mcp'

                    If you have feedback or need assistance with the MCP directory API, please join our Discord server