RESTHeart logo RESTHeart

GitHub last commit Build snapshot release Github stars Maven Central Version javadoc Docker Pulls Join the chat on Slack CLA assistant

The Agent-Ready Backend for MongoDB

RESTHeart exposes your data through a native MCP server and full REST and GraphQL APIs, so AI agents and developers can read and write without custom integration code.

RESTHeart logical architecture

RESTHeart gives AI agents and developers instant, secure access to MongoDB. It ships with a native MCP server that any MCP-compatible client (Claude, Claude Code, Cursor, VS Code) can connect to out of the box, plus full REST, GraphQL, and WebSocket APIs for traditional application development. Built-in authentication and authorization, zero backend boilerplate, and a plugin framework for custom business logic when you need it.

Available as a Docker image and GraalVM native binary. Built on Java 25, Undertow, and virtual threads.

Core capabilities:

AI Agents & MCP

RESTHeart ships with Sophia, a native Model Context Protocol (MCP) server. Any MCP-compatible AI client can connect directly.

Public demo endpoints (no authentication required):

https://sophia-api.restheart.com/mcp/restheart/    — RESTHeart docs knowledge base
https://sophia-api.restheart.com/mcp/cloud/        — RESTHeart Cloud docs knowledge base

Connect with Claude Code:

claude mcp add --transport http sophia-restheart https://sophia-api.restheart.com/mcp/restheart
claude mcp add --transport http sophia-cloud https://sophia-api.restheart.com/mcp/cloud

Connect with Claude Desktop: Open Settings → Connectors → Add custom connector and paste one of the context URLs above.

Connect with Streamable HTTP clients (add to MCP settings):

{
  "sophia": {
    "type": "http",
    "url": "https://sophia-api.restheart.com/mcp/restheart/"
  }
}

Connect with stdio clients (VS Code, Zed — requires Node.js 18+):

{
  "sophia": {
    "command": "npx",
    "args": ["mcp-remote", "https://sophia-api.restheart.com/mcp/restheart/"]
  }
}

For private Sophia instances, replace the URL with your own base URL and context ID, and add authentication. See the MCP documentation for details.

Quick Start

To get RESTHeart running in few minutes and make your first API call, there are several options. Choose the one that best fits your needs:

Option 1 — Deploy on RESTHeart Cloud (no install required)

The fully managed service by SoftInstigate. No infrastructure to configure or maintain — just sign up and start building. Includes a dashboard, SLA, and support.

Try RESTHeart Cloud for free

Option 2 — Deploy on Railway (no install required)

Deploy RESTHeart and MongoDB on your own Railway account in one click. You keep full control of the infrastructure. Free to start, pay only for what you use on Railway.

Deploy on Railway

Option 3 — Docker Compose (local):

# Start MongoDB + RESTHeart with Docker Compose
curl https://raw.githubusercontent.com/SoftInstigate/restheart/master/docker-compose.yml \
  --output docker-compose.yml && docker compose up --attach restheart

# Test it
curl http://localhost:8080/ping

Default credentials: admin / secret (change in production)

More options: https://restheart.org/docs/foundations/quick-start

Example: Query MongoDB via HTTP

const url = encodeURI('https://demo.restheart.org/messages?filter={"from":"Bob"}&pagesize=1');

fetch(url)
  .then(response => response.json())
  .then(json => console.log(JSON.stringify(json, null, 2)));

That's it. No Express routes, no Mongoose schemas, no middleware setup.

📄 Full documentation: https://restheart.org/docs/

Use Cases

Metrics & Monitoring

RESTHeart ships with a built-in real-time metrics dashboard and a Prometheus-compatible endpoint. No external tools required.

Metrics UI — Open /metrics-ui in your browser after starting RESTHeart to access the real-time dashboard.

The dashboard displays:

Prometheus endpoint — Scrape /metrics (or /metrics/requests, /metrics/jvm) in Prometheus format for integration with external monitoring stacks.

Configuration — Enabled by default. Key settings in restheart.yml:

metrics:
  enabled: true
  uri: /metrics

requestsMetricsCollector:
  enabled: true
  include: ["/*"]
  exclude: ["/metrics", "/metrics/*"]

jvmMetricsCollector:
  enabled: false   # set to true for JVM memory and GC metrics

📖 Full documentation: docs/metrics.md

Extend with Plugins

Write custom logic only when you need it. RESTHeart handles the rest.

Java Plugin

@RegisterPlugin(name = "greetings")
public class GreeterService implements JsonService {
    @Override
    public void handle(JsonRequest req, JsonResponse res) {
        res.setContent(object()
            .put("message", "Hello World!")
            .put("timestamp", Instant.now()));
    }
}

JavaScript Plugin

export const options = {
    name: "greetings",
    uri: "/greetings"
}

export function handle(request, response) {
    response.setContent(JSON.stringify({
        message: 'Hello World!',
        timestamp: new Date().toISOString()
    }));
    response.setContentTypeAsJson();
}

Plugin types:

📖 Plugin development: https://restheart.org/docs/plugins/overview/

🔧 Use restheart-cli for scaffolding, testing, and hot-reload.

Deployment

Docker

docker pull softinstigate/restheart:latest

docker run -p 8080:8080 \
  -v ./restheart.yml:/opt/restheart/etc/restheart.yml \
  softinstigate/restheart

Kubernetes

Stateless architecture supports horizontal scaling. Configure with ConfigMaps and Secrets.

Native Executables

Prebuilt binaries for macOS, Linux, and Windows with faster startup and lower memory footprint.

See docs/native-executables.md for download links.

RESTHeart Cloud

Fully managed service: cloud.restheart.com

Database Compatibility

Database Support Level Notes
MongoDB Full All versions 3.6+
MongoDB Atlas Full Cloud-native support
Percona Server Full Drop-in MongoDB replacement
⚙️ FerretDB Partial PostgreSQL-backed (tutorial)
⚙️ AWS DocumentDB Partial Most features work
⚙️ Azure Cosmos DB Partial MongoDB API compatibility layer

Community and Support

Contributing

Contributions welcome. RESTHeart is open source (AGPL).

See CONTRIBUTING.md for guidelines.

License

RESTHeart core is licensed under the GNU AGPL v3.

The plugin SDK (restheart-commons, Maven artifact org.restheart:restheart-commons) is licensed under the Apache License 2.0. Plugins and extensions that depend only on restheart-commons are not subject to the AGPL v3 and may be distributed under any license you choose, including proprietary licenses. This follows the same pattern used by MongoDB: the server is AGPL, the drivers and SDKs are Apache 2.0.

See PLUGIN_EXCEPTION for the formal terms of this permission.

Commercial license: If you need to modify RESTHeart core without open-sourcing your changes, commercial licenses are available. See restheart.com/on-premises.

Built with ❤️ by SoftInstigate | GitHub | Website | Cloud

Made in EU