Fluree Server
FreeNot checkedA Node.js gateway that exposes FlureeDB functionality through MCP, enabling LLM clients to query, mutate, and manage Fluree ledgers interactively.
About
A Node.js gateway that exposes FlureeDB functionality through MCP, enabling LLM clients to query, mutate, and manage Fluree ledgers interactively.
README
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 |
🗂️ 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
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 desiredRun
npm start # serves http://localhost:3000Initialize 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.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
- List →
method:"prompts/list" - Get →
method:"prompts/get", pass promptname+argumentsobject - (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_reqthis will make Initialization_Connection to the MCP_Server and you can also change theparamslikedbUrl,network,ledgerThe 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
Installing Fluree Server
This server has no published package — it is built from source. Open the repository and follow its README.
▸ github.com/UDAIBHAT/Fluree_MCP_ServerFAQ
Is Fluree Server MCP free?
Yes, Fluree Server MCP is free — one-click install via Unyly at no cost.
Does Fluree Server need an API key?
No, Fluree Server runs without API keys or environment variables.
Is Fluree Server hosted or self-hosted?
A hosted option is available: Unyly runs the server in the cloud, no local setup required.
How do I install Fluree Server in Claude Desktop, Claude Code or Cursor?
Open Fluree Server on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
Fetch
Web content fetching and conversion for efficient LLM usage.
AWS KB Retrieval
Retrieval from AWS Knowledge Base using Bedrock Agent Runtime.
by modelcontextprotocolSpring AI MCP Server
Provides auto-configuration for setting up an MCP server in Spring Boot applications.
llm-analysis-assistant
A very streamlined mcp client that supports calling and monitoring stdio/sse/streamableHttp, and can also view request responses through the /logs page. It also
by xuzexin-hzCompare Fluree Server with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All ai MCPs
