notes-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@notes-mcpappend a quick thought to today's daily note"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
notes-mcp
A remote MCP server that captures notes into a Git-backed Markdown vault (Obsidian-friendly). Deploy your own instance to Cloudflare Workers in one click.
What & why
notes-mcp lets any MCP client — Claude, Claude Desktop, Cursor, and others — append and create Markdown notes directly in a GitHub repository. It's designed for an Obsidian vault synced via git (obsidian-git): capture a thought from a chat with Claude, and it shows up in your vault the next time Obsidian pulls.
Each deployment is single-tenant — you run your own instance, pointed at your own notes repo, protected by your own auth token. Nothing is hardcoded; everything is configuration.
Related MCP server: vault-mcp
Features
Five focused tools: append to a note, create/overwrite a note, append to today's daily note, read a note, list a directory.
Single-file edge deploy — one Cloudflare Worker, no servers to manage.
Runs on Cloudflare's free tier.
Works with any Git-backed Markdown vault, not just Obsidian.
Token-guarded — every request to
/mcprequires a bearer token you control.
How it works
MCP client → Worker (/mcp) → GitHub Contents API → your notes repo → Obsidian Git pulls itYour MCP client calls a tool (e.g. append_note). The Worker authenticates the request, then reads/writes the target file through the GitHub Contents API, which creates a commit. The note appears on your other devices the next time Obsidian Git pulls — tune its auto-pull / pull-on-startup settings for how fresh you want that to be.
Prerequisites
A Cloudflare account (free tier is enough).
A GitHub repository to hold your notes (can be the same repo as your Obsidian vault).
A fine-grained GitHub Personal Access Token scoped to that repo.
Create the PAT
Click Fine-grained tokens → Generate new token.
Set Resource owner to yourself (or the org that owns your notes repo).
Under Repository access, choose Only select repositories and pick your notes repo.
Under Repository permissions, set Contents to Read and write. Leave everything else as No access.
Generate the token and copy it — you'll only see it once.
Deploy
A. One-click deploy
Click the Deploy to Cloudflare button above.
Cloudflare will fork/clone this repo and prompt you for the two secrets below (
GITHUB_PAT,MCP_AUTH_TOKEN) during setup.After deploying, open your Worker in the Cloudflare dashboard and set the
vars(GITHUB_OWNER,GITHUB_REPO, etc.) under Settings → Variables.
B. CLI
git clone https://github.com/Vontk/notes-mcp.git
cd notes-mcp
npm install
# Edit the "vars" block in wrangler.jsonc for your repo/timezone/etc.
npx wrangler secret put GITHUB_PAT
npx wrangler secret put MCP_AUTH_TOKEN # e.g. generate with: openssl rand -hex 32
npm run deployConfiguration
Name | Kind | Required | Description | Example |
| var | yes | GitHub username or org that owns the notes repo. |
|
| var | yes | Name of the notes repo. |
|
| var | no | Branch to commit to. Empty string uses the repo's default branch. |
|
| var | no | File used by |
|
| var | no | IANA timezone used to compute daily note dates. Defaults to |
|
| secret | yes | Fine-grained PAT with Contents: Read and write on the notes repo only. | (set via |
| secret | yes | Shared secret required on every request to | (set via |
Connect to Claude
Claude.ai (custom connector):
Click + Add custom connector.
URL:
https://<your-worker>.<your-subdomain>.workers.dev/mcpPass your token either as an
Authorization: Bearer <MCP_AUTH_TOKEN>header, or by appending?token=<MCP_AUTH_TOKEN>to the URL.
Claude Desktop / other clients (via mcp-remote):
{
"mcpServers": {
"notes-mcp": {
"command": "npx",
"args": [
"mcp-remote",
"https://<your-worker>.<your-subdomain>.workers.dev/mcp?token=<MCP_AUTH_TOKEN>"
]
}
}
}Tools
Tool | Params | What it does | Example |
|
| Appends a line to a note, creating it if needed. | Append "buy milk" to |
|
| Creates a note, or overwrites it if it already exists. | Write a new |
|
| Appends a line to today's daily note ( | Append "stand-up notes" to |
|
| Returns the contents of a note. | Read |
|
| Lists files and folders in a directory (repo root if omitted). | List |
Security
Each deployment is single-tenant: one Worker, one notes repo, one token.
Keep
MCP_AUTH_TOKENsecret — anyone with it can read and write to your notes repo through this Worker.Scope
GITHUB_PATto exactly one repository with Contents: Read and write only.Never commit secrets.
.dev.varsand.wranglerare gitignored; use.dev.vars.exampleas a template.To rotate a credential, generate a new value and run
wrangler secret put <NAME>again — it overwrites the existing secret immediately.
Local dev
npm startTest it with the MCP Inspector:
npx @modelcontextprotocol/inspectorPoint it at http://localhost:8787/mcp with your MCP_AUTH_TOKEN from .dev.vars.
Testing / CI
npm run typecheck
npm run lint
npm testci.yml runs all three on every pull request and push. deploy.yml deploys to Cloudflare on every push to main, once those checks pass — it needs two repo secrets under Settings → Secrets and variables → Actions:
CLOUDFLARE_API_TOKENCLOUDFLARE_ACCOUNT_ID
Contributing
Issues and pull requests are welcome. Please run npm run lint, npm run typecheck, and npm test before submitting.
License
This server cannot be deployed
Maintenance
Related MCP Connectors
Notes, files, GitHub, and Drive through one MCP connection.
Notes, files, GitHub, and Drive through one MCP connection.
Notes, files, GitHub, and Drive through one MCP connection.
- TaprootOAuthcom.taproothq
Persistent memory layer for AI tools. Save and recall notes across Claude and other MCP clients.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceRemote MCP server that exposes a personal git repository of markdown notes to Claude, enabling reading, writing, searching, and running scripts with automatic git commits and GitHub OAuth authentication.MIT
- AlicenseNot gradedqualityBmaintenanceAuthenticated remote MCP server that exposes a private GitHub-hosted Obsidian vault to Claude, enabling list, read, write, and search operations on notes.5 npm7MIT
- AlicenseNot gradedqualityCmaintenanceEnables MCP clients to access and manage a personal markdown knowledge base stored in Cloudflare R2. Provides tools for listing, reading, writing, searching (full-text and semantic), and following backlinks between notes.15 npm3MIT
- FlicenseNot gradedqualityBmaintenanceEnables managing local Markdown notes by creating, viewing, listing, and searching notes and their contents through MCP tools.-