Skip to main content
Glama
UDAIBHAT

Fluree MCP Server

by UDAIBHAT

Fluree MCP Server

A modern Node.js gateway that exposes FlureeDB functionality through the Model Context Protocol (MCP). It combines a rich set of MCP tools, structured prompts, and session-aware routing so any LLM-powered client (IDE, chat, or custom app) can query, mutate, and manage a Fluree ledger safely and interactively.


✨ Key Features

Category

Highlights

MCP Tools

15+ tools: query, transact, block/block-range, history, network status, key generation, schema management (create / update / validate / export / import), database diagnostics, echo

Structured Prompts

Every tool ships with a matching prompt template; clients discover via prompts/list, retrieve with prompts/get, and enjoy argument completion support

Session Management

First initialize call establishes a session & stores connection info (dbUrl, network, ledger) so subsequent requests are stateless for the client

Validation & Safety

All tool inputs validated with Zod; errors surfaced as JSON-RPC -32602 or -32603

Hot-Reload Friendly

Tools & prompts registered dynamically; add new modules under src/tools or src/prompts and restart

Extensible

Written in ES Modules, small surface areaβ€”drop in new handlers, middlewares, or MCP capabilities


Related MCP server: memex

πŸ—‚οΈ Project Structure

src/
 β”œβ”€ config/            # Constant defaults & env helpers
 β”œβ”€ controllers/       # MCP server controller (session init, tool/prompt registration)
 β”œβ”€ routes/            # Express routes (`/api/v1/mcp`)
 β”œβ”€ tools/             # Individual MCP tools (each default export = { name, config, handler })
 β”œβ”€ prompts/           # Prompt templates mirrored one-to-one with tools
 └─ index.js           # Express bootstrap
.env.example           # Sample environment variables
README.md              # ← you are here

πŸš€ Quick Start

  1. Clone & Install

    git clone https://github.com/UDAIBHAT/Fluree_MCP_Server.git
    cd fluree-mcp-server
    npm install
    cp .env.example .env   # adjust DB connection defaults if desired
  2. Run

    npm start   # serves http://localhost:3000
  3. Initialize a Session

    POST http://localhost:3000/api/v1/mcp
    Headers: { "Content-Type":"application/json" }
    Body:
    {
      "jsonrpc":"2.0",
      "id":1,
      "method":"initialize",
      "params":{
        "dbUrl":"Your_DBurl",
        "network":"Your_Network",
        "ledger":"Your_Ledger"
      }
    }

    The response includes mcp-session-idβ€”add it to all subsequent requests.

  4. Discover Tools & Prompts

    { "jsonrpc":"2.0", "id":2, "method":"prompts/list", "params":{} }

πŸ–₯️ IDE & Non-IDE Client Setup

IDE clients

Cursor, Windsurf,Google Gemini . RooCode can add the server definition to their settings. Two examples are shown below – one for Cursor and one for Windsurf:

CURSOR IDE

  • Just insert this Patch of Json-code under the MCP-Section in the Cursor settings and you are good to go.....

{
  "mcpServers": {
    "Fluree_MCP_Server": {
      "url": "http://localhost:3000/api/v1/mcp",  
      "headers": {
        "dburl": "Your_DBurl",
        "network": "Your_Network",
        "ledger": "Your_Ledger"
      }
    }
  }
}

WINDSURF IDE

  • Just insert this Patch of Json-code under the MCP-Section in the Windsurf Cascade settings and you are good to go.....

{
  "mcpServers": {
    "Fluree_MCP_Server": {
      "serverUrl": "http://localhost:3000/api/v1/mcp", 
      "headers": {
        "dbUrl": "Your_DBurl",
        "network": "Your_Network",
        "ledger": "Your_Ledger"
      }
    }
  }
}

GOOGLE GEMINI

  • Use the following JSON patch in your Gemini .settings [ Currently Gemini doesnt support Streamable HTTP transport]

{
  "mcpServers": {
    "Fluree_MCP_Server": {
      "httpUrl": "http://localhost:3000/api/v1/mcp?dburl=<Your_DBurl>&network=<Your_Network>&ledger=<Your_Ledger>",
      "timeout": 30000,
      "trust": true
    }
  }
}

Non-IDE clients

Can simply POST to /api/v1/mcp (or /mcp) with a JSON body containing dbUrl, network, and ledger as shown in the Quick-Start initialization request.


πŸ”§ Tools Overview

Name

Purpose

Input Parameters

flureeQueryTool

Select data via FlureeQL

selectFields (array|"*"), fromCollection

flureeTransact

Create random collections

count (1-50)

flureeSchemaCreate

Create collection + predicates

collectionName, predicates[], doc?

flureeSchemaUpdate

Update collection/predicates

collectionName, updateType, etc.

…

See src/tools for the rest

Each tool handler returns { content:[ {type:"text"|"json", text:string|object} ] }, ready for LLM streaming.


πŸ’¬ Prompt Workflow

  1. List β†’ method:"prompts/list"

  2. Get β†’ method:"prompts/get", pass prompt name + arguments object

  3. (Optional) Suggest β†’ method:"completion/suggest" for auto-complete while filling arguments

Prompts use Mustache-style placeholders ({{argument}}) inside user messages to instruct the assistant to call the correct tool.


βš™οΈ Environment Variables

Variable

Default

Description

PORT

3000

Server port

FLUREE_DB_URL

http://localhost:8090

Base Fluree URL

FLUREE_NETWORK

test

Default network

FLUREE_LEDGER

demo

Default ledger


πŸ“‘ API Collection

A ready-to-import Postman collection lives at docs/postman/Fluree_MCP.postman_collection.json (or generate it from the sample snippet in this README).

  • You can also make a new collection with specified MCP endpoint ,postman supports the mcp endpoints so just inseret the server url then it will give you the whole list of tools.

  • Just Import the collection and call the Initialize_req this will make Initialization_Connection to the MCP_Server and you can also change the params like dbUrl,network,ledger

  • The mcp-session-id is dynamically stored in every request through Postman Post-Req Scripts


πŸ›£οΈ Roadmap / Nice-to-Haves

  • JWT authentication & role-based prompt permissions

  • Rate limiting & CORS controls

  • WebSocket support for real-time block watch

  • Production observability: Prometheus exporter & Grafana dashboard

  • Docker Compose bundle (Fluree + MCP + Grafana)


πŸ“œ License

MIT Β© UDAI BHAT

F
license - not found
-
quality - not tested
D
maintenance

Maintenance

–Maintainers
–Response time
–Release cycle
–Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

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/UDAIBHAT/Fluree_MCP_Server'

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