Skip to main content
Glama
faizullahbalti29

result-analyzer-mcp

MongoDB Read-Only MCP Server (mcp-db-direct)

A secure, enterprise-ready Model Context Protocol (MCP) server built with TypeScript that exposes read-only MongoDB queries and schema introspection to AI assistants and LLM agents.

Supports both Stdio (local execution) and Streamable HTTP / SSE transports with OAuth 2.0 (Auth0) protection and an environment-based authentication bypass for flexible development.


๐Ÿ“‘ Table of Contents


Related MCP server: StudentManagementMCP_Server

โœจ Features

  • ๐Ÿ”’ Read-Only Safety: Strictly enforces non-mutating database operations (find, findOne, aggregate, countDocuments, distinct).

  • ๐Ÿš€ Dual Transport Options:

    • Stdio Transport: Seamless local integration with Claude Desktop, Cursor, and CLI agents.

    • Streamable HTTP / SSE Transport: Scalable Express server supporting streaming JSON-RPC sessions over HTTP.

  • ๐Ÿ›ก๏ธ OAuth 2.0 & RFC Compliance:

    • Auth0 JWT token verification via express-oauth2-jwt-bearer.

    • RFC 9728 Protected Resource Metadata (/.well-known/oauth-protected-resource).

    • RFC 8414 OAuth Authorization Server discovery proxies.

  • ๐ŸŽ›๏ธ Zero-Friction Dev Mode: Easily toggle OAuth enforcement on (ENABLE_OAUTH=1) or off (ENABLE_OAUTH=0) via .env.

  • ๐Ÿ“Š Intelligent Schema Introspection: Provides rich collection models and business domain rules to AI models for accurate query generation.

  • ๐Ÿ”„ Safe BSON Serialization: Automatically handles MongoDB ObjectId, Date, and special BSON types during JSON serialization.


๐Ÿ—๏ธ Architecture

flowchart LR
    subgraph Clients["AI Clients & LLMs"]
        Claude["Claude Desktop"]
        Cursor["Cursor IDE"]
        RemoteApp["Remote MCP Client"]
    end

    subgraph Server["MCP Server (TypeScript)"]
        direction TB
        Auth["Auth & CORS Middleware\n(RFC 9728 / Auth0 JWT)"]
        TransportHTTP["Streamable HTTP Transport\n(/mcp, SSE)"]
        TransportStdio["Stdio Transport"]
        
        Tools["Registered Tools\nโ€ข get_student_schema\nโ€ข mongodb_query"]
    end

    subgraph Database["Database"]
        MongoDB[(MongoDB\nRead-Only)]
    end

    Claude -->|Stdio| TransportStdio
    RemoteApp -->|HTTP + Bearer Token| Auth
    Cursor -->|HTTP / Stdio| Auth

    Auth --> TransportHTTP
    TransportHTTP --> Tools
    TransportStdio --> Tools

    Tools -->|Read-Only Ops| MongoDB

๐Ÿ“ Project Structure

mcp-direct-master/
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ db/
โ”‚   โ”‚   โ”œโ”€โ”€ mongodb.ts             # MongoDB client connection pool
โ”‚   โ”‚   โ””โ”€โ”€ serialize.ts           # BSON / ObjectId JSON serializer
โ”‚   โ”œโ”€โ”€ middleware/
โ”‚   โ”‚   โ””โ”€โ”€ middleware.ts          # Auth0 JWT validation & URL resolver
โ”‚   โ”œโ”€โ”€ models/
โ”‚   โ”‚   โ”œโ”€โ”€ student-schema.ts      # Database schema definitions
โ”‚   โ”‚   โ””โ”€โ”€ student-collections.ts # Collection metadata
โ”‚   โ”œโ”€โ”€ tools/
โ”‚   โ”‚   โ”œโ”€โ”€ query.ts               # Read-only query execution tool
โ”‚   โ”‚   โ”œโ”€โ”€ query-schema.ts        # Zod input validation schemas
โ”‚   โ”‚   โ””โ”€โ”€ schema.ts              # Schema introspection tool
โ”‚   โ”œโ”€โ”€ http.ts                    # Streamable HTTP / SSE Express server
โ”‚   โ”œโ”€โ”€ index.ts                   # Stdio transport entry point
โ”‚   โ””โ”€โ”€ test-auth.ts               # Auth0 token acquisition & endpoint test
โ”œโ”€โ”€ .env                           # Environment configuration
โ”œโ”€โ”€ package.json                   # Project scripts and dependencies
โ”œโ”€โ”€ tsconfig.json                  # TypeScript compiler configuration
โ””โ”€โ”€ README.md                      # Project documentation

๐Ÿ“‹ Prerequisites

  • Node.js: v18.0.0 or higher

  • MongoDB: v5.0 or higher (local instance or MongoDB Atlas)

  • (Optional) Auth0 Account: If enabling OAuth 2.0 authorization


๐Ÿš€ Quick Start

1. Clone & Install Dependencies

git clone <repository-url>
cd mcp-direct-master
npm install

2. Configure Environment Variables

Create or update .env in the project root:

# MongoDB Connection
MONGODB_URI=mongodb://localhost:27017
MONGODB_DATABASE=results-analyzer

# Server Port & Public URL
PORT=3000
MCP_PUBLIC_URL=http://localhost:3000

# Authentication Mode (1 = Enabled, 0 = Disabled)
ENABLE_OAUTH=0

# Auth0 Configuration (Required only if ENABLE_OAUTH=1)
AUTH0_DOMAIN=your-tenant.us.auth0.com
AUTH0_AUDIENCE=http://localhost:3000/mcp

3. Run the Server

npm run dev:http

Option B: Stdio Server (For direct CLI or Claude Desktop)

npm run dev

โš™๏ธ Environment Configuration

Variable

Type

Default

Description

MONGODB_URI

string

mongodb://localhost:27017

MongoDB connection string

MONGODB_DATABASE

string

results-analyzer

Target database name

PORT

number

3000

Port for the HTTP server

MCP_PUBLIC_URL

string

http://localhost:<PORT>

Publicly reachable base URL (useful behind ngrok/proxies)

ENABLE_OAUTH

0 | 1

1

1: Require Auth0 Bearer token.0: Bypass token check (Public/Dev mode).

AUTH0_DOMAIN

string

โ€”

Auth0 custom domain or tenant domain (e.g. tenant.auth0.com)

AUTH0_AUDIENCE

string

โ€”

Auth0 API identifier / audience

CLIENT_ID

string

โ€”

(Testing) OAuth Client ID

CLIENT_SECRET

string

โ€”

(Testing) OAuth Client Secret


๐Ÿ” Authentication & Security

OAuth 2.0 (Auth0)

When ENABLE_OAUTH=1:

  • All requests to /mcp must include a valid Bearer token in the Authorization header:

    Authorization: Bearer <AUTH0_ACCESS_TOKEN>
  • Unauthenticated requests receive HTTP 401 Unauthorized along with RFC 9728 compliant WWW-Authenticate headers pointing clients to discovery endpoints.

Toggling Authentication

Toggle authentication instantly using .env:

# Disable auth for local development / testing:
ENABLE_OAUTH=0

# Enable auth for staging / production:
ENABLE_OAUTH=1

๐Ÿ› ๏ธ MCP Tools Reference

1. get_student_schema

Returns full schema information, collection descriptions, field definitions, and business domain rules. Helps the LLM understand collection structures before issuing queries.

  • Inputs: None

  • Output: JSON payload with collection metadata and schema documentation.


2. mongodb_query

Executes safe, read-only queries against MongoDB collections.

Parameters

Field

Type

Required

Description

collection

string

โœ…

Name of the collection to query.

operation

enum

โœ…

One of: "find", "findOne", "aggregate", "countDocuments", "distinct"

filter

object

โŒ

MongoDB filter query (e.g., { "grade": "A" }).

projection

object

โŒ

Field projection specification (e.g., { "name": 1, "score": 1 }).

sort

object

โŒ

Sorting criteria (e.g., { "createdAt": -1 }).

skip

number

โŒ

Number of documents to skip (pagination).

limit

number

โŒ

Max documents to return (default: 50, max: 100).

pipeline

array

โŒ

Aggregation pipeline stages (required for aggregate).

field

string

โŒ

Target field name (required for distinct).


๐ŸŒ HTTP Endpoints & Discovery

Route

Method

Auth Required

Description

/mcp

POST

Dependent on ENABLE_OAUTH

Initialize MCP session and execute JSON-RPC calls

/mcp

GET

Dependent on ENABLE_OAUTH

Establish Server-Sent Events (SSE) stream for active session

/mcp

DELETE

Dependent on ENABLE_OAUTH

Terminate active MCP session

/health

GET

โŒ (Public)

Server health, status, and auth configuration status

/.well-known/oauth-protected-resource

GET

โŒ (Public)

RFC 9728 Protected Resource Metadata

/.well-known/oauth-authorization-server

GET

โŒ (Public)

RFC 8414 Authorization Server discovery proxy

/.well-known/openid-configuration

GET

โŒ (Public)

OpenID Connect discovery proxy


๐Ÿ”Œ Connecting MCP Clients

Claude Desktop (Stdio)

Add the server to your claude_desktop_config.json:

{
  "mcpServers": {
    "mongodb-readonly": {
      "command": "npx",
      "args": [
        "tsx",
        "/absolute/path/to/mcp-direct-master/src/index.ts"
      ],
      "env": {
        "MONGODB_URI": "mongodb://localhost:27017",
        "MONGODB_DATABASE": "results-analyzer"
      }
    }
  }
}

Remote HTTP / SSE Clients

Configure your MCP client with the server endpoint:

  • Server URL: http://localhost:3000/mcp (or your MCP_PUBLIC_URL)

  • Headers:

    {
      "Authorization": "Bearer <ACCESS_TOKEN>"
    }

    (Omit Authorization header if ENABLE_OAUTH=0)


๐Ÿงช Development & Testing

# Start the HTTP server with hot-reloading
npm run dev:http

# Start the Stdio transport
npm run dev

# Test Auth0 token acquisition and authenticated request flow
npm run test:auth

# Compile TypeScript to dist/
npm run build

๐Ÿ“„ License

This project is licensed under the ISC License.

F
license - not found
Not graded
quality - not tested
B
maintenance

Maintenance

0Releases (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.

Related MCP Connectors

Related MCP Servers

View all related MCP servers

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/faizullahbalti29/result-analyzer-mcp'

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