Voicenotes MCP

Voicenotes MCP

Enables seamless interaction with Voicenotes through natural language, allowing users to search, create, edit, tag, and organize their notes via an MCP client like Claude.

Category
访问服务器

README

Voicenotes MCP

A custom Model Context Protocol server for Voicenotes. It lets an MCP client (Claude Code, Claude Desktop, or the Claude.ai web connector) search, read, create, edit, tag, and organize your Voicenotes notes through natural language.

Built on a reverse-engineered Voicenotes REST API. It speaks both transports:

  • stdio — for Claude Code / Claude Desktop (browser-based OAuth on first call)
  • Streamable HTTP — for the Claude.ai web connector

Quick start

git clone <this-repo> voicenotes-mcp
cd voicenotes-mcp
npm install
npm run build          # compiles src/ -> dist/

Then register it with your client. Two supported paths:

A. Personal access token (fastest — Claude Code)

bash register.sh

It prompts (hidden input) for your Voicenotes auth_token, verifies it against the API, then registers the server globally with the token passed as the VN_API_TOKEN env var. Get the token from a logged-in voicenotes.com tab: DevTools → Application → Local Storage → auth_token (copy the value inside the quotes).

B. OAuth (Claude Desktop / stdio)

Add to your client config and let it run over stdio — a browser opens for Voicenotes sign-in on the first tool call:

{
  "mcpServers": {
    "voicenotes": { "command": "node", "args": ["/abs/path/to/dist/index.js"] }
  }
}

For the Claude.ai web connector, run the HTTP transport instead:

MCP_HTTP_PORT=3001 node dist/index.js

All config is via environment variables; every one is optional with sane defaults. See .env.example.


Configuration

Variable Default Purpose
VN_API_TOKEN Voicenotes bearer token. When set, the REST path is used directly (path A). Never commit it.
MCP_HTTP_PORT unset Set to run the Streamable HTTP server (Claude.ai web). Unset = stdio.
MCP_PUBLIC_URL http://localhost:<port> Public URL the HTTP server is reachable at (OAuth resource id).
MCP_BIND_HOST 127.0.0.1 Host the HTTP server binds to.
MCP_ALLOWED_ORIGINS Claude surfaces + localhost Comma-separated Origin allowlist for the HTTP transport.
VN_CALLBACK_PORT 9876 Local loopback port for the OAuth callback (stdio flow).

Tokens obtained via OAuth are stored encrypted (AES-256-GCM, 0600) under ~/.voicenotes-mcp/ — never inside the repo.


Tools

14 tools, grouped by maturity:

  • Group A — parity with the official Voicenotes MCP.
  • Group B — extended tools this server adds (bulk tagging, tag management, setup).
  • Group C — stubs for endpoints not yet confirmed; gated or no-op until verified.

Notes

Tool Group What it does
vn_list_notes A List notes, newest first. Filter by tag / ISO date range; paginate or fetch_all.
vn_get_note A Get one note by id, with full transcript and tags.
vn_search_notes A Natural-language search across transcripts and titles.
vn_create_note A Create a text note (transcript = body) with optional tags.
vn_update_note B Update title / tags / transcript. Omitting tags preserves existing ones.
vn_bulk_tag_notes B Add tags to many notes at once (adds, never replaces).
vn_delete_note C Delete a note. Unconfirmed endpoint — requires confirm:true to attempt.

Tags

Tool Group What it does
vn_list_tags A List all tags: id, name, keywords, pin state, usage count.
vn_create_tag B Create a tag with optional auto-tag keywords, pin state, emoji.
vn_update_tag B Update a tag's name, keywords, and/or pin state.
vn_delete_tag B Delete a tag permanently.
vn_setup_tags B One-shot: create a starter set of organizing tags. Idempotent; supports dry_run.

Account (stubs)

Tool Group What it does
vn_get_user_profile C Get the authenticated user's profile. Not yet implemented.
vn_list_webhooks C List configured webhooks. Not yet implemented.

Sample prompts

Phrase requests naturally — the client picks the tool. Examples per tool:

vn_list_notes

"Show me my 10 most recent notes." "List every note tagged work from May 2026."

vn_get_note

"Open the note with id abc-123 and show the full transcript."

vn_search_notes

"Search my notes for anything about the pricing decision." "Find notes that mention the onboarding flow."

vn_create_note

"Create a note: 'Follow up with the design team about the new dashboard.' Tag it todo and work."

vn_update_note

"Fix the title of note abc-123 to 'Q3 Planning'." "Append the cleaned-up transcript to note abc-123 but keep its existing tags."

vn_bulk_tag_notes

"Add the tag archive to notes id1, id2, and id3."

vn_delete_note

"Delete note abc-123." (re-confirm with confirm:true when asked)

vn_list_tags

"What tags do I have, and how many notes use each?"

vn_create_tag

"Create a pinned tag called urgent with keywords 'asap, blocker, deadline'."

vn_update_tag

"Rename tag 12 to personal and unpin it."

vn_delete_tag

"Delete tag 12."

vn_setup_tags

"Run vn_setup_tags as a dry run to preview the starter tags." "Set up my organizing tags."


Development

npm run build                            # tsc -> dist/
node dist/index.js                       # stdio transport
MCP_HTTP_PORT=3001 node dist/index.js    # HTTP transport

Source layout:

src/
  api/        REST client + endpoint wrappers (recordings, tags) + types
  auth/       OAuth (PKCE, DCR), callback server, encrypted token store
  http/       Streamable HTTP transport, middleware, OAuth metadata
  tools/      Tool handlers (notes, tags) + shared helpers
  server.ts   Tool registry (names, schemas, descriptions)
  index.ts    Entry point / transport selection

Notes & caveats

  • Unofficial: built on a reverse-engineered API, so endpoints may change.
  • Group C tools target endpoints not yet confirmed and are stubbed or guarded.
  • vn_update_note / vn_update_tag are destructive on the fields you pass — tags replaces the full list unless omitted.

License

MIT — add a LICENSE file before publishing if you want others to reuse it.

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选