Skip to main content
Glama
slite-mcp

slite-mcp

by fajarmf

⚠️ DEPRECATED — Use the Official Slite MCP Instead

This project is no longer maintained.

Slite now provides an official MCP server with native support for all block types including mermaid diagrams, tables, callouts, and more.

To migrate, update your MCP config:

{
  "mcpServers": {
    "slite-official": {
      "type": "http",
      "url": "https://api.slite.com/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_SLITE_API_KEY"
      }
    }
  }
}

Key improvements in the official MCP over this repo:

  • ✅ Mermaid/diagram blocks work correctly

  • ✅ Block-level editing via modify-block (no more full-document rewrites)

  • ✅ Callouts, tables, collapsibles, and all native Slite blocks

  • ✅ Maintained by Slite directly


Slite MCP Server (Deprecated)

A Model Context Protocol (MCP) server that integrates with Slite's API to search, retrieve, create, and edit notes.

Features

  • 🔍 Search Notes: Search through your Slite workspace

  • 📄 Get Note Content: Retrieve specific notes by ID in markdown or HTML format

  • 🌳 Browse Hierarchy: Get child notes of any parent note

  • 🤖 Ask Questions: Natural language question answering across your workspace

  • ✏️ Edit Notes: Search-and-replace editing with validation and dry-run support

  • 📝 Create Notes: Create new notes with markdown content

  • 🔄 Update Notes: Full content replacement for major rewrites

Related MCP server: mcp-silverbullet

Installation

# Clone the repository
git clone https://github.com/fajarmf/slite-mcp.git
cd slite-mcp

# Install dependencies
npm install

# Build the project
npm run build

Configuration

Getting your Slite API Key

  1. Log in to your Slite workspace

  2. Go to Settings → API

  3. Generate a new API key

Setting up the MCP Server

Add the server to your MCP configuration file (~/.mcp.json):

{
  "mcpServers": {
    "slite": {
      "command": "node",
      "args": ["/path/to/slite-mcp/build/index.js"],
      "env": {
        "SLITE_API_KEY": "your-api-key-here"
      }
    }
  }
}

Usage

Once configured, the following tools are available:

Search for notes in your Slite workspace.

Parameters:

  • query (required): Search query string

  • hitsPerPage (optional): Results per page (default: 10)

Example:

{
  "tool": "slite_search",
  "arguments": {
    "query": "project documentation",
    "hitsPerPage": 5
  }
}

slite_get_note

Retrieve a specific note by its ID.

Parameters:

  • noteId (required): The ID of the note to retrieve

  • format (optional): Format to return - "md" or "html" (default: "md")

Example:

{
  "tool": "slite_get_note",
  "arguments": {
    "noteId": "BoptqNi4pm0lcV",
    "format": "md"
  }
}

slite_get_note_children

Get all child notes of a parent note.

Parameters:

  • noteId (required): The ID of the parent note

  • cursor (optional): Pagination cursor for next page

Example:

{
  "tool": "slite_get_note_children",
  "arguments": {
    "noteId": "5i6k33yrVu7eMy"
  }
}

slite_ask

Ask natural language questions and get AI-powered answers from your Slite workspace.

Parameters:

  • question (required): The question to ask

  • parentNoteId (optional): Limit search to notes under this parent

Example:

{
  "tool": "slite_ask",
  "arguments": {
    "question": "What is our deployment process?"
  }
}

slite_create_note

Create a new note in your Slite workspace.

Parameters:

  • title (required): Note title

  • markdown (optional): Note content in markdown format

  • parentNoteId (optional): Parent note ID (creates in personal channel if not specified)

Example:

{
  "tool": "slite_create_note",
  "arguments": {
    "title": "Meeting Notes",
    "markdown": "# Meeting Notes\n\n- Discussed project timeline\n- Assigned tasks",
    "parentNoteId": "5i6k33yrVu7eMy"
  }
}

slite_edit_note

Edit a note using search-and-replace. Preferred for targeted edits - faster and safer than full rewrite.

Parameters:

  • noteId (required): The ID of the note to edit

  • edits (required): Array of search-and-replace operations

    • oldText: Exact text to find (must be unique in document)

    • newText: Text to replace it with

  • dryRun (optional): If true, validate edits without applying them

Example:

{
  "tool": "slite_edit_note",
  "arguments": {
    "noteId": "BoptqNi4pm0lcV",
    "edits": [
      { "oldText": "Draft", "newText": "Final" },
      { "oldText": "TODO: add details", "newText": "Implementation complete" }
    ],
    "dryRun": false
  }
}

slite_update_note

Replace entire note content. Use slite_edit_note for small changes.

Parameters:

  • noteId (required): The ID of the note to update

  • markdown (required): New markdown content (replaces entire note)

  • title (optional): New title (keeps existing if not provided)

Example:

{
  "tool": "slite_update_note",
  "arguments": {
    "noteId": "BoptqNi4pm0lcV",
    "markdown": "# New Content\n\nThis replaces everything.",
    "title": "Updated Title"
  }
}

Testing

Quick Start

# Copy environment config and add your API key
cp .env.example .env
# Edit .env with your SLITE_API_KEY

# Setup test data (creates test documents in Slite)
npm run test:setup

# Run all tests
npm test

Test Setup

The test:setup command creates test documents in your Slite workspace:

  • A parent note with 55 child notes (for cursor pagination testing)

  • A "Test Data for MCP Server" child with searchable keywords

The script is idempotent - it won't create duplicates if test data already exists.

# Setup with a new parent note
npm run test:setup

# Or use an existing note as parent
npm run test:setup -- --parent=<note-id>

# Force recreation even if data exists
npm run test:setup -- --force

Test Suite

The test suite includes:

  • API Tests: Search, get note, get children, ask endpoint

  • Error Handling: Invalid IDs, unauthorized access

  • Pagination: hitsPerPage for search, cursor for children (requires 55+ children)

  • Content Formats: Markdown and HTML output

  • MCP Server Integration: All tools via stdio transport

  • Write Operations: Create, edit, update - with content verification after each operation

Development

Project Structure

slite-mcp/
├── src/
│   └── index.ts           # Main MCP server (7 tools: 4 read, 3 write)
├── build/                 # Compiled JavaScript files
├── tests/
│   ├── index.test.js      # Consolidated test suite
│   └── setup-test-data.js # Idempotent test data setup
├── examples/              # Example configurations
├── package.json
├── tsconfig.json
└── README.md

Building

npm run build

Requirements

  • Node.js 16+

  • TypeScript 5.0+

  • A valid Slite API key

API Response Formats

The Slite API returns data in specific formats:

Search Results

  • Results are in the hits array

  • Each hit contains: id, title, highlight, updatedAt, type, parentNotes

Note Content

  • Full markdown or HTML content

  • Includes metadata: id, title, url, updatedAt, parentNoteId

Child Notes

  • Results in the notes array

  • Pagination info: total, hasNextPage, nextCursor

Troubleshooting

Authentication Failed

  • Verify your API key is correct

  • Check if the key has the necessary permissions

No Results Found

  • Try different search terms

  • Ensure the notes exist in your workspace

  • Check if you have access to the notes

API Changes

If you encounter errors, the Slite API might have changed. Check:

  • Response format in the test scripts

  • Endpoint URLs

  • Required parameters

Contributing

Contributions are welcome! Please:

  1. Fork the repository

  2. Create a feature branch

  3. Make your changes

  4. Add tests if applicable

  5. Submit a pull request

License

MIT License - see LICENSE file for details

Support

For issues or questions:

  • Create an issue on GitHub

  • Check Slite's API documentation

  • Review the test scripts for examples

Available Tools

7 tools
slite_askA

Ask a question to your Slite notes in natural language. Returns an AI-generated answer with sources.

Inputs: question (required), parentNoteId.

slite_create_noteB

Create a new note in Slite

Inputs: title (required), markdown, parentNoteId.

slite_edit_noteA

Edit a Slite note using search-and-replace. Preferred for targeted edits - faster and safer than full rewrite. Each edit's oldText must be unique in the document.

Inputs: noteId (required), edits (required), dryRun.

slite_get_noteB

Get a specific note by ID

Inputs: noteId (required), format.

slite_get_note_childrenB

Get child notes of a parent note

Inputs: noteId (required), cursor.

slite_update_noteA

Replace entire note content. Use slite_edit_note for small changes. WARNING: This overwrites everything.

Inputs: noteId (required), markdown (required), title.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.5/5.0

    Scored across 7 tools

    Disambiguation5/5

    Each tool has a clearly distinct purpose: ask is for Q&A, create/edit/get/search/get_children/update each target different aspects of note management. Even edit_note and update_note are differentiated by targeted vs. full replacement.

    Naming Consistency4/5

    All tools use the slite_ prefix with snake_case, mostly following a verb_noun pattern (e.g., slite_create_note). Minor inconsistency: slite_ask and slite_search lack a noun in their names, but the pattern is still predictable.

    Tool Count5/5

    With 7 tools, the server is well-scoped for a note-taking service. Each tool serves a core function without superfluous duplicates, and the count feels appropriate for the domain.

    Completeness2/5

    The tool set covers create, read, and update operations, but notably lacks a delete note tool. Additionally, there is no explicit list-all-notes tool (only search), which may force agents to use workarounds. These gaps are significant for a CRUD-like service.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables interaction with Joplin notes through MCP, allowing searching, creating, updating, and deleting notes via the Joplin Web Clipper API.
      14 npm
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables MCP clients to read and search pages in a remote SilverBullet space and create or append to notes under a configurable prefix via SilverBullet's HTTP API.
      Apache 2.0
    • A
      license
      A
      quality
      C
      maintenance
      Enables MCP-compatible clients to access Microsoft OneNote, supporting notebook and section listing, full-text search, page reading, and page creation or deletion via natural language.
      18
      MIT