Remote MCP server for ChatGPT-driven Obsidian note capture
Remote MCP server for safe ChatGPT-driven note capture into the Aventerica89/Obsidian-Claude vault repo.
## ChatGPT MCP.ChatGPT MCP/.This is intentionally not a general-purpose filesystem MCP.
search_notesget_noteappend_to_note## ChatGPT MCP.create_chatgpt_noteChatGPT MCP/.list_allowed_destinations## ChatGPT MCP does not exist, it is created at the end of the note.source: chatgpt-mcp, actor, and needs_review: true.ChatGPT MCP/ with reviewable frontmatter.Set these Worker secrets before deploy:
wrangler secret put GITHUB_CLIENT_ID
wrangler secret put GITHUB_CLIENT_SECRET
wrangler secret put COOKIE_ENCRYPTION_KEYCreate a KV namespace and update wrangler.jsonc:
wrangler kv namespace create "OAUTH_KV"Then copy the returned namespace id into wrangler.jsonc.
The repo includes deploy.yml, which deploys on pushes to main and on manual dispatch.
Set these GitHub repository secrets before enabling the workflow:
CLOUDFLARE_API_TOKENCLOUDFLARE_ACCOUNT_IDThe workflow uses cloudflare/[email protected] and runs:
npm ci
wrangler deployCreate a GitHub OAuth App with:
https://obsidian-mcp.<your-subdomain>.workers.devhttps://obsidian-mcp.<your-subdomain>.workers.dev/callbackThe app must allow the repo and read:user scopes because the authenticated user's token is used to read and write the private vault repo.
This Worker also checks the authenticated GitHub login against ALLOWED_GITHUB_USERNAME, so even a valid OAuth login is rejected unless it matches the configured account.
Create .dev.vars with:
GITHUB_CLIENT_ID=...
GITHUB_CLIENT_SECRET=...
COOKIE_ENCRYPTION_KEY=...Run:
npm install
npm run cf-typegen
npm run devRun verification locally:
npm run type-check
npm testAfter deploy, register the remote MCP endpoint in ChatGPT using:
https://obsidian-mcp.<your-subdomain>.workers.dev/mcpALLOWED_GITHUB_USERNAME can authorize.## ChatGPT MCP.ChatGPT MCP/..obsidian, .git, path traversal, and non-Markdown targets are rejected.JBMD-Creations/obsidian-mcp
April 13, 2026
April 13, 2026
TypeScript