SurfSense logo

SurfSense

CommunityPopular
MODSetter

Air gapped, privacy focused open source NotebookLM alternative. Join our Discord: https://discord.gg/ejRNvftDp9

PublisherMODSetter
RepositorySurfSense
LanguagePython
Forks
1.5K
Stars
16.2K
Available tools
0
Transport typestdio, streamable-http
Categories
Links
  • Connect tools to AI workflows

    SurfSense exposes MCP capabilities that can be used by compatible AI clients and agents.

  • 0 available tools

    Browse the callable actions below, including names and descriptions when provided by the server.

  • Ready-to-copy setup

    Use the installation snippets to configure this server in your preferred MCP client.

  • Open source signals

    16.2K stars and 1.5K forks from the linked repository.

Stars Forks Latest release License Discord

SurfSense is a free, open-source desktop app for the documents you already have. Drop them in, ask questions and get answers that cite their sources, then turn the same documents into a briefing, a slide deck, a report, a study guide or a podcast. All of it runs on your own machine: the index sits on your disk, you pick the model, and the app uploads nothing. There is no account to create.

Get started. Download the installer for your machine, then bring your own model key or let the app pull a local model for you.

PlatformDownload
Windows x64SurfSense-Setup.exe
macOS Apple SiliconSurfSense-arm64.dmg
Linux x64 (AppImage)SurfSense.AppImage
Linux x64 (deb)SurfSense.deb

Every link is a permalink to the newest release. You can also pick from surfsense.com/downloads or browse all releases. The AppImage auto-updates; the deb does not.

[!NOTE] Used the hosted web app? It is being retired. Open it once to export your workspaces, then import the bundle into the desktop app; documents, folders, titles and chat threads all come across. The export window closes on 18 October 2026. Details on the sunset page.

What SurfSense makes

Pick some documents and a format. The app writes it from the sources you chose, on your machine.

FormatWhat you getNeeds
SummaryA structured brief of the selected sourcesgeneration model
FlashcardsAn interactive deck, one card at a timegeneration model
QuizMultiple-choice questions with answersgeneration model
Mind mapA zoomable, collapsible Markmapgeneration model
SlidesAn editable .pptx, not a picture of a deckgeneration model
DocumentAn editable .docx reportgeneration model
SpreadsheetAn .xlsx of tables pulled from the sourcesgeneration model
Web pageA self-contained HTML pagegeneration model
PDFA typeset PDFgeneration model
PodcastA two-host audio conversation, voiced offline by Kokoro-82Mgeneration model + bundled voice
ImageAn illustration for the materialimage model + generation model
InfographicA single-panel visual summaryimage model + generation model

Some jobs need more than one. A study guide is a summary, a flashcard deck and a quiz over the same source set, and a client briefing is usually the deck you present from plus the summary you send after. Video overviews are not built yet.

Everything stays on your machine

People point this at case papers, client working papers, interview transcripts, internal specs, unpublished research and a term's worth of lecture notes. You can ask questions across all of it and every answer cites the source it came from. The app does not upload any of it.

  • The index is local. Parsing, chunking and embedding happen on your computer, into SQLite under ~/.surfsense. SurfSense keeps no copy of it and no log of what you asked.
  • Every role can run locally. The document parser, the retrieval model and the podcast voice ship inside the installer. Chat and image generation ship as local servers whose weights you download once, so you can produce text, audio and pictures without an account or an API key. We test it by ingesting a PDF with networking disabled.
  • Outbound connections are off by default. An egress panel lists every destination the app can reach and you switch on the ones you want.
  • No telemetry, no crash reporting. Nothing phones home, so there is no opt-out to find.

SurfSense cannot tell you whether that satisfies a particular regulation. That depends on your own controls and your regulator. All the app can tell you is which machine your documents are on.

How SurfSense compares

Three kinds of product get called "the local NotebookLM", and they answer different questions. None of them is a bad tool; they just leave you with different things.

vs Jan, AnythingLLM, Open WebUI, LM Studio. These run a model locally and give you somewhere to chat with it. SurfSense answers the next question: how do you get a finished document out of one? Use them together if you like, by pointing SurfSense at any OpenAI-compatible endpoint, including one of theirs.

vs RemNote, Quizlet, NoteGPT, StudyFetch, Gamma. These do produce artifacts, and some look better than ours. The trade is where your material goes: you upload it, you pay monthly, and your files live in someone else's account.

vs Google NotebookLM. It already ships flashcards, quizzes, mind maps and audio overviews, so both produce much the same things. The difference is whose machine does the work and which model you can point at it.

Google NotebookLMSurfSense
Runs offline / air-gappedNoYes
Your documents leave your machineYesNo
Account requiredGoogle accountNone
Open sourceNoApache-2.0
PriceFree tier; Pro $19.99/mo; Ultra $249.99/moApp is free
ModelsGemini onlyAny OpenAI-compatible API, or a local one
Source limits50 to 600 sources, 500,000 words eachWhatever your disk holds
Audio and video overviewsYes, and betterAudio yes, offline; video not yet

NotebookLM wins on audio quality and it has video. If you are content with your sources sitting on Google's servers, use it. If you are not, this is the same kind of tool without the upload.

Quick start

You do not need Docker, a terminal, a GPU or a compose file.

  1. Download the installer from the table above. It is signed, so your OS will not fight you.
  2. Pick a model. Let the app pull a local one (Qwen3 in six sizes, from 0.5 GB) or paste a base URL and key for any OpenAI-compatible API. The picker checks your machine can run a model before offering it, and any key you give it is stored encrypted, with the secret held in your OS keychain.
  3. Drop in documents. The app parses PDFs, Office files and images on your machine.
  4. Ask questions. Every answer cites the source it came from.
  5. Open Studio, choose a format, collect the file.

The download is the slow part, because the installer carries the parser, the retrieval model, the podcast voice and the local model servers, so the app works with the network off.

Docs, roadmap and community

The app and its updates are free. A licence adds plugins and priority support and gates nothing else, so an expired licence still leaves you the app and every future update. See pricing.

The Docker stack in this repo (surfsense_backend, surfsense_web, compose files) stays open source and installable, and is community-supported: no SLA and no hosted service behind it. The desktop app is the supported path for new users.

Pull requests welcome. Start with CONTRIBUTING.md; the desktop app lives in surfsense_local/ and its README covers the development loop.

Thanks to all our Surfers:

Star history

License

Apache-2.0. See LICENSE.

Installation

TypingMind
{
  "mcpServers": {
    "surfsense": {
      "command": "node",
      "args": [
        "path/to/your/main.js"
      ]
    }
  }
}

Use SurfSense MCP with multiple AI models

TypingMind connects MCP tools at the workspace level, so once SurfSense is connected, you can use it with different AI models in TypingMind instead of setting it up separately for each model. You can run MCP locally on your device or connect to a remote MCP server URL.

Option 1: Use the local connector

Use this when the MCP server needs access to local files, apps, or private resources on your computer.

1

Open the MCP settings

In TypingMind, go to Settings, Advanced Settings, then Model Context Protocol and choose Setup Connector.

  1. Open TypingMind in your browser.
  2. Click the Settings icon.
  3. Go to Advanced Settings.
  4. Open the Model Context Protocol section.
  5. Click Setup Connector and choose This Device.
TypingMind MCP connector setup screen with This Device selected
2

Run the connector command

Choose This Device, copy the command from TypingMind, and run it in Terminal. Keep the process running while you use MCP.

  1. Copy the setup command shown by TypingMind.
  2. Open Terminal on macOS or Windows Terminal on Windows.
  3. Paste and run the command.
  4. Approve the package install if Terminal asks you to proceed.
  5. Keep the Terminal window running while using MCP tools.
3

Add SurfSense as a server

When the connector status is Ready, click Edit Servers and paste the MCP server configuration.

  1. Wait until the connector status shows Ready.
  2. Click Edit Servers.
  3. Paste the SurfSense MCP server configuration.
  4. Save the server list.
  5. Refresh if you want to confirm the connector is still ready.
TypingMind MCP settings showing active server and Edit Servers button
{
  "mcpServers": {
    "surfsense": {
      "command": "npx",
      "args": [
        "-y",
        "surfsense"
      ]
    }
  }
}
4

Use it across models

Save the server list, open Plugins, enable the SurfSense MCP tools, then select any supported AI model in TypingMind and use the tools in chat or assign them to an AI agent.

  1. Open the Plugins page in TypingMind.
  2. Enable the SurfSense MCP tools.
  3. Start a chat and choose the AI model you want to use.
  4. Use the MCP tools in chat or assign them to an AI agent.
  5. Switch to another AI model whenever needed without reconnecting MCP.
TypingMind chat using enabled MCP tools with a selected AI model
Can you use SurfSense to help me with this task?
SurfSense
Sure. I read it.
Here is what I found using SurfSense.

Option 2: Add an MCP server URL

Use this when SurfSense is already hosted remotely or your team wants one shared connector that multiple users can access.

1

Open MCP connectors

In TypingMind, go to Plugins, open MCP connectors, then choose Add URL.

  1. Open TypingMind in your browser.
  2. Go to Plugins.
  3. Open MCP connectors.
  4. Click Add URL.
TypingMind Add Custom MCP Server URL form
2

Paste the server URL

Enter the MCP server URL from the provider in the Server URL field. Add a connection name, description, icon, custom HTTP headers, or OAuth client settings if the server requires them.

  1. Paste the MCP server URL from the provider into the Server URL field.
  2. Enter a connection name for SurfSense.
  3. Add a description and icon if you want it to be easier to identify.
  4. Add custom HTTP headers or OAuth client details if the server requires authentication.
3

Create the connection

Click Create connection, then return to the Plugins list and confirm the new MCP connection is active.

  1. Click Create connection.
  2. Return to the MCP connectors list.
  3. Confirm the SurfSense connection appears as active.
  4. Refresh the plugin list if the connection does not appear immediately.
4

Switch models without reconnecting

Start a chat with your preferred model, enable the SurfSense tools from Plugins, and switch to another model whenever needed. The MCP connection stays available to the TypingMind workspace.

  1. Start a new chat in TypingMind.
  2. Select the AI model you want to use.
  3. Enable the SurfSense tools from Plugins.
  4. Ask the model to use the tool when needed.
  5. Switch to another AI model and reuse the same MCP connection.
TypingMind chat using enabled MCP tools with a selected AI model
Can you use SurfSense to help me with this task?
SurfSense
Sure. I read it.
Here is what I found using SurfSense.

Frequently asked questions

What is the SurfSense MCP server used for?

SurfSense is an MCP server that lets compatible AI clients connect to external tools and context. In TypingMind, you can add this MCP server once and make its tools available in your AI workspace.

Can I use SurfSense MCP with multiple AI models in TypingMind?

Yes. TypingMind connects MCP tools at the workspace level, so you can use SurfSense with different AI models such as Claude, ChatGPT, Gemini, or other models you have configured in TypingMind without setting up the MCP server separately for each model.

Why use SurfSense MCP with TypingMind?

TypingMind is one of the best frontends for LLM chat because it brings multiple AI models, prompts, plugins, AI agents, API keys, and MCP tools into one workspace. With SurfSense connected, you can use its MCP tools across your preferred models while keeping your chat workflow organized in TypingMind.

How do I connect SurfSense MCP to TypingMind?

SurfSense can be connected in TypingMind with the local MCP connector or by adding a remote MCP server URL. Use the local connector when the server needs access to files, apps, or private resources on your device, and use a server URL when the MCP server is hosted remotely.

What tools does SurfSense MCP provide in TypingMind?

SurfSense exposes MCP capabilities that can be enabled from the TypingMind Plugins page and used in chat or assigned to AI agents.

Do I need to share my API keys with TypingMind to use SurfSense MCP?

No. TypingMind is local-first and lets you keep your model providers, API keys, prompts, and MCP configuration under your control. If SurfSense requires authentication, add the required headers, OAuth settings, or local configuration for that MCP server when you create the connection.

Related MCP Servers

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇