supabase nextjs mcp server

Local 2025-09-01 00:22:05 0

A TypeScript-based MCP server for handling a simple notes system with NextJS that supports creating and summarizing text notes using MCP concepts.


smithery badge

A Model Context Protocol server

This is a TypeScript-based MCP server that implements a simple notes system for NextJS. It demonstrates core MCP concepts by providing:

  • Resources representing text notes with URIs and metadata
  • Tools for creating new notes
  • Prompts for generating summaries of notes

Supabase NextJS Server MCP server

Features

Init

  • Require NEXT_PUBLIC_SUPABASE_URL and NEXT_PUBLIC_SUPABASE_ANON_KEY environment variables

Resources

  • List and access notes via note:// URIs
  • Each note has a title, content and metadata
  • Plain text mime type for simple content access

Tools

  • create_note - Create new text notes
  • Takes title and content as required parameters
  • Stores note in server state

Prompts

  • summarize_notes - Generate a summary of all stored notes
  • Includes all note contents as embedded resources
  • Returns structured prompt for LLM summarization

Development

Install dependencies:

npm install

Build the server:

npm run build

For development with auto-rebuild:

npm run watch

Installation

To use with Claude Desktop, add the server config:

On MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json On Windows: %APPDATA%/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "supabase-nextjs-server": {
      "command": "/path/to/supabase-nextjs-server/build/index.js"
    }
  }
}

Installing via Smithery

To install Supabase Notes for Claude Desktop automatically via Smithery:

npx -y @smithery/cli install @tengfone/supabase-nextjs-mcp-server --client claude

Debugging

Since MCP servers communicate over stdio, debugging can be challenging. We recommend using the MCP Inspector, which is available as a package script:

npm run inspector

The Inspector will provide a URL to access debugging tools in your browser.

[
  {
    "description": "Query data from Supabase",
    "inputSchema": {
      "properties": {
        "filters": {
          "type": "object"
        },
        "select": {
          "type": "string"
        },
        "table": {
          "type": "string"
        }
      },
      "required": [
        "table"
      ],
      "type": "object"
    },
    "name": "query_data"
  },
  {
    "description": "Insert a record into Supabase",
    "inputSchema": {
      "properties": {
        "data": {
          "type": "object"
        },
        "table": {
          "type": "string"
        }
      },
      "required": [
        "table",
        "data"
      ],
      "type": "object"
    },
    "name": "insert_record"
  },
  {
    "description": "Update a record in Supabase",
    "inputSchema": {
      "properties": {
        "data": {
          "type": "object"
        },
        "filters": {
          "type": "object"
        },
        "table": {
          "type": "string"
        }
      },
      "required": [
        "table",
        "filters",
        "data"
      ],
      "type": "object"
    },
    "name": "update_record"
  },
  {
    "description": "Delete a record from Supabase",
    "inputSchema": {
      "properties": {
        "filters": {
          "type": "object"
        },
        "table": {
          "type": "string"
        }
      },
      "required": [
        "table",
        "filters"
      ],
      "type": "object"
    },
    "name": "delete_record"
  }
]