Skip to main content

Integration

Cursor + Scribelet: A Notes Integration for Your Coding Agent

Scribelet runs a hosted MCP server at `https://api.scribelet.app/mcp`. Add it to Cursor's `mcp.json`, approve the desks you want on Scribelet's consent screen, and Cursor's agent can search, read, create and update your notes. The same notes are on the web and your phone.

Updated 2026-10-27

Setup

  1. Copy the MCP server URL

    In the Scribelet web app, open Account from the sidebar, then AI Agent Connections. The server URL is shown at the top: https://api.scribelet.app/mcp. It is the same for every account and must include the /mcp path.

  2. Add Scribelet to Cursor's mcp.json

    Cursor reads custom MCP servers from .cursor/mcp.json in a project (that project only) or ~/.cursor/mcp.json in your home directory (every project). Add this entry:

    {
      "mcpServers": {
        "scribelet": {
          "url": "https://api.scribelet.app/mcp"
        }
      }
    }
    

    Cursor's current docs manage installed servers from the Customize page, where each server has an on/off toggle. Some Cursor versions show an "Add new MCP server" button under Settings > MCP Servers instead; menus vary by version, and the mcp.json file is the documented route.

  3. Sign in and pick your desks

    Cursor handles the OAuth sign-in for remote servers. The first time Cursor uses the server, Scribelet's consent screen opens in your browser: it names the agent, lists the scopes requested and shows your desks. Select the desks Cursor may access and click Allow. You can revoke the connection from AI Agent Connections at any time; Cursor will need to authorize again on its next request.

  4. Check the server is enabled

    On the Customize page, make sure the Scribelet toggle is on. Disabled servers do not load and their tools do not appear in chat. Once enabled, tools such as search_notes, get_note and create_note are available to the agent.

  5. Run a first prompt and approve the call

    Ask something you know the answer to: "Search my Scribelet notes for 'onboarding' and list the titles." Cursor asks for approval before running the tool; expand it to see the arguments, then allow it. If the titles are right, the connection and desk selection are correct.

  6. Optional: connect with an API token instead

    For setups where OAuth is not an option, open AI Agent Connections, scroll to For Developers and click Generate MCP Token. Copy it immediately; it is shown once. Then send it as a Bearer token:

    {
      "mcpServers": {
        "scribelet": {
          "url": "https://api.scribelet.app/mcp",
          "headers": {
            "Authorization": "Bearer ${env:SCRIBELET_MCP_TOKEN}"
          }
        }
      }
    }
    

    Remote servers in Cursor do not read an envFile, so export SCRIBELET_MCP_TOKEN in your environment. Tokens grant every scope on your account; store and rotate them like a password.

5 examples

What you can ask it to do

Prompts and workflows that work once the connection is live.

1.Implement a feature from its design note

When it fits: Use this when the spec for what you are about to build lives in a note (written in a meeting or on your phone), and you want Cursor to work from that text rather than your paraphrase of it.

Implement a feature from its design noteExample 1

Prompt

Search my Scribelet notes for "search ranking v3" and open the design note from November 2026. Implement the scoring weights it specifies in src/search/rank.ts: recency 0.3, title match 0.5, tag match 0.2, with the 14 day recency half-life. Quote the exact section of the note you followed in a comment above the function, with the note title. If the note and the existing tests disagree, stop and tell me.

What happens

Cursor calls search_notes, then get_note on the design note, and shows you an approval prompt for each call (click the arrow to see the arguments). It writes the weights from the note, cites "Search ranking v3 (design), 2026-11-04" in the comment, and flags that rank.test.ts still expects a 7 day half-life. You decide which one is wrong instead of finding out in review.

Scopes needed: notes:read and search (the defaults).

2.Save a debugging finding as a note

When it fits: Use this right after Cursor helps you find a root cause that was hard to find, so the next person who sees the symptom finds the answer in search instead of repeating the hunt.

Save a debugging finding as a noteExample 2

Prompt

We found it: Safari parses "2026-11-02 09:00" as Invalid Date because of the space, so the booking calendar showed empty days for Safari users only. Create a Scribelet note titled "Fix: Safari Invalid Date in booking calendar" tagged debugging and frontend. Sections: Symptom, Root cause, Fix (the change to parseSlot() in lib/dates.ts), How to spot it next time. Keep it under 200 words.

What happens

Cursor drafts the note from the session and calls create_note with the title, Markdown body and tags after you approve it. The note is in your desk on the web and iOS within seconds. In March, when a support ticket says "calendar is blank on my iPad", searching Scribelet for "Safari calendar" returns it.

Scopes needed: notes:write. With the default read-only grant the call fails with "Insufficient scope"; revoke the connection in AI Agent Connections and authorize again with write access.

3.Turn a Plan Mode plan into a tracked project note

When it fits: Use this when Cursor's Plan Mode has produced a multi-step plan for work that will span several days or people, and the plan should outlive the chat.

Turn a Plan Mode plan into a tracked project noteExample 3

Prompt

Save the plan we just agreed on as a Scribelet note titled "Plan: migrate invoices to the new PDF renderer". One - [ ] task per step. Add @due(2026-11-06) to the renderer swap, @due(2026-11-10) to the template port, and @due(2026-11-13) to removing the old renderer. Link the existing note [[Invoice PDF renderer]] and tag it billing.

What happens

Cursor can use MCP tools in Plan Mode, so it turns the plan into Markdown and calls create_note. In Scribelet, each - [ ] line is a real task: the three dated ones appear in the Tasks view, and the wikilink puts this plan in the backlinks panel of "Invoice PDF renderer". You check items off from your phone as the work lands, and the plan is still there after the Cursor chat is gone.

Scopes needed: notes:read, notes:write.

4.Brief yourself from a tag before picking up a ticket

When it fits: Use this when you are starting a ticket in an area other people have been discussing all week, and the context is spread across meeting notes you did not attend.

Brief yourself from a tag before picking up a ticketExample 4

Prompt

Use list_recent_notes filtered by the tag checkout-redesign and read the five most recent. Give me a briefing for ticket CHK-412 (move the promo code field below the order summary): decisions already made, open questions, and anyone who objected. Name the note and date for each point.

What happens

list_recent_notes returns the recently modified notes with that tag; Cursor reads them with get_note. The briefing says the design review on 2026-10-21 approved the move, that Dana asked for an A/B test first in the 2026-10-23 standup notes, and that nobody has answered her. You ask about the A/B test before writing code, not after the pull request.

Scopes needed: notes:read (default).

Why connect a notes app to Cursor

Cursor sees the repository you have open. It does not see the meeting where the ranking weights were agreed, the post-mortem from August, or the plan you sketched on your phone on the train. When that context matters, the usual move is to paste it into the chat, and then paste it again in the next session.

A notes integration over MCP replaces the paste. Cursor gets tools to search and read your notes when a task needs them, and to write notes back when a session produces something worth keeping: a root cause, a plan, a decision. Because Scribelet's server is hosted, there is no local process to start, and anything Cursor writes is on the web and on iOS a few seconds later.

The tools Cursor gets are the same for every MCP client, as listed in the MCP server guide:

  • Notes: search_notes, search, get_note, list_recent_notes, create_note, update_note, delete_note, get_note_links, find_similar_notes
  • Memories: list_memories, retrieve_memories, create_memory, update_memory, delete_memory
  • Organization: list_desks, get_desk, list_tags, get_user_profile

Project config or global config

Put the Scribelet entry in ~/.cursor/mcp.json if you want your notes available in every project. Put it in .cursor/mcp.json inside a repository if only that project should use it, or if you want teammates to get the server when they open the repo. Each person still signs in with their own Scribelet account and chooses their own desks, so a shared config does not share notes.

A rule that tells Cursor when to use your notes

An agent with access to a notes server does not automatically know when to use it. Cursor's project rules fix that. Save this as .cursor/rules/scribelet.mdc:

---
alwaysApply: true
---
Before proposing changes to architecture, data models or public APIs,
search Scribelet notes (search_notes) for prior decisions on the topic
and cite the note title and date.
 
When we find the root cause of a bug, offer to save it as a Scribelet
note tagged debugging, with Symptom, Root cause and Fix sections.

Cursor only recognizes .mdc files in .cursor/rules; a plain .md file there is ignored. If you prefer a single plain file, the same two paragraphs work as a section in AGENTS.md at the project root.

Permissions in two places

There are two separate controls, and it helps to keep them apart.

Scribelet decides what Cursor may access. OAuth scopes, granted per connection and per desk on the consent screen. The default grant is desks:read notes:read profile:read. Writing notes needs notes:write; reading memories needs memories:read; writing memories needs memories:write and the admin role on the desk. Every connection, its scopes and its last access are listed on the AI Agent Connections page.

Cursor decides whether to ask you first. By default it asks before each MCP tool call. That prompt is your chance to read the note title and body before create_note runs. If the prompts slow you down for reads, allowlist the read tools and keep the write tools behind approval.

An API token skips the scope step entirely: it grants every scope on every desk. Use it for scripts or setups that cannot do OAuth, not for your everyday editor.

Troubleshooting

  • "Not authenticated." The token expired or was revoked. OAuth connections re-authorize; for an API token, generate a new one in AI Agent Connections.
  • Cursor cannot reach the server. Check the URL ends in /mcp and that the Scribelet toggle is on in Customize.
  • "Insufficient scope." The call needs a scope the connection was not granted. Revoke and authorize again; the agent can request broader scopes on the next attempt.
  • Connected but no notes. Desk scoping. Name the desk, or re-authorize with the right desk ticked.

If you want notes checked against the repository itself rather than only read by the agent, the GitHub connector lets Scribelet's verification compare a note's claims with your code.

Tips

  • Start with the default read-only grant

    The default OAuth scope is desks:read notes:read profile:read. Use Cursor with that for a week to see which notes it actually reaches for, then re-authorize with notes:write when you want it saving findings and plans.

  • Add a project rule so Cursor uses your notes

    MCP tools sit unused unless the agent has a reason to call them. A .cursor/rules/scribelet.mdc file with alwaysApply: true, or a line in AGENTS.md, that says "search Scribelet for prior decisions before changing a public API" changes that. The body section below has a sample.

  • Keep approvals on for write tools

    Cursor asks before each MCP tool call by default and lets you expand the call to see its arguments. Leave that on for create_note and update_note, so you read the title and body before anything lands in your desk.

  • Never paste a token into mcp.json

    If you use an API token, reference it with Cursor's ${env:SCRIBELET_MCP_TOKEN} interpolation and set the variable in your shell. A project .cursor/mcp.json that holds only the URL is safe to commit; one with a literal token is not.

  • Give the agent a desk of its own

    Scribelet's consent screen lets you choose which desks a connection can see. Select a work desk and leave personal desks unticked, and Cursor cannot read or write them no matter what the prompt asks.

  • Tag what Cursor writes

    Ask for a cursor tag on every note the agent creates. The Tags view then gives you one list to review each week, and you can tell your own writing from the agent's at a glance.

In the app

How to do this in Scribelet

  1. Open Account then AI Agent Connections to see Cursor's connection, the scopes it holds and when it last accessed your data. Revoke it with one click.

  2. Notes Cursor creates are ordinary notes in your desk: encrypted at rest, with #tags, [[wikilinks]] and a backlinks panel, on the web and on iOS.

  3. Tasks the agent writes as - [ ] lines with @due(2026-11-06) show up in the Tasks view and on today's daily note when they are carried over.

  4. Memories Cursor can read with retrieve_memories (scope memories:read) are the same ones the in-app AI chat uses; review and edit them on the Memories screen.

Start with the quick start if you are new to Scribelet.

Frequently asked questions

What is a note taking MCP server?

It is a server that speaks the Model Context Protocol and exposes your notes as tools an AI agent can call: search, read, create, update. Scribelet's is hosted at https://api.scribelet.app/mcp over streamable HTTP, with OAuth 2.1 scopes per desk, so there is nothing to install or keep running on your machine. See the MCP server guide for the full tool list.

Doesn't Cursor already have a place for notes?

Cursor has project rules in .cursor/rules and AGENTS.md, which live in the repository and tell the agent how to work in that codebase. A notes app connected over MCP covers what does not belong in one repo: meeting notes, decisions across projects, and findings you want on your phone.

Is the setup the same as for Claude Code?

The server, tools and scopes are identical; only the client config differs. Claude Code uses a claude mcp add command, Cursor uses mcp.json. The Claude Code integration page has workflows written for that agent.

Why does Cursor ask for approval every time it uses Scribelet?

Cursor asks before running MCP tools by default, and MCP follows the same run modes as terminal commands. In Auto-review mode, tools on your allowlist run without a prompt. Allowlisting read tools such as search_notes and keeping prompts for create_note and update_note is a sensible split.

Cursor is connected but finds no notes. What is wrong?

The OAuth connection only sees the desks you ticked on the consent screen, and most tools use your default desk when no desk_id is passed. Ask Cursor to call list_desks and name the desk in your prompt. If the desk you need was not selected, revoke the connection in AI Agent Connections and authorize again with it ticked.

Should I commit .cursor/mcp.json to the repository?

If it holds only the Scribelet URL, yes: it is not a secret, and each teammate signs in with their own Scribelet account and picks their own desks. Never commit a file with a literal API token; use the ${env:SCRIBELET_MCP_TOKEN} form instead.

Let Cursor read the notes behind the code

Add one entry to `mcp.json`, tick the desks on Scribelet's consent screen, and Cursor can build from your design notes and save what it learns back to them. Free plan, scopes you control.

Free plan, no credit card. See pricing

Guide

Note Taking App for Developers: Markdown, MCP and Notes Checked Against Your Code

Developer notes fail in a specific way: they are right on the day they are written and quietly wrong six months later. This page says which tool fits which developer, what belongs in the repo instead, and a setup where notes are Markdown, your coding agent can read and write them over MCP, and runbooks get checked against the actual code.

Integration

Claude Code + Scribelet: Give Your Coding Agent a Notes MCP Server

Scribelet exposes a hosted MCP server at `https://api.scribelet.app/mcp`. One `claude mcp add` command, an OAuth consent screen where you pick the desks, and Claude Code can search your notes, follow their links, read your memories and write new notes. Nothing to run locally.

Integration

Notes App With GitHub Integration: Check Your Notes Against Your Code

Scribelet's GitHub integration does not sync your notes into a repository. It connects a repository through a GitHub App with read-only code search, so verification can check what a note claims (an endpoint, a flag, a command) against the actual code and propose a diff you accept or dismiss.

Docs

Mcp server

From the Scribelet docs

Article

Agentic coding

From the Scribelet blog

Engineering

Post Mortem Template for Incidents

A post-mortem is worth writing only if it changes something. This template keeps the timeline factual, pushes the whys to a cause the team can fix, and ends with action items that have owners, dates and a 30-day check. Copy it, or start from the postmortem example closest to your incident.

We use cookies for analytics to improve your experience. Learn more