simplenote-mcp

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Simplenote MCP

Simplenote MCP

Prerequisites

前提条件

  1. Package installed:
    @automattic/simplenote-mcp
    (npm)
  2. MCP config exists:
    ~/mcp.json
    with a
    simplenote
    server entry
  3. Logged in:
    ~/.config/simplenote-mcp/auth.json
    has valid credentials
If any prerequisite is missing, run setup first:
bash
npx -y @automattic/simplenote-mcp setup
Then add to
~/mcp.json
:
json
{
  "mcpServers": {
    "simplenote": {
      "command": "npx",
      "args": ["-y", "@automattic/simplenote-mcp"]
    }
  }
}
  1. 已安装包
    @automattic/simplenote-mcp
    (npm)
  2. 存在MCP配置
    ~/mcp.json
    包含
    simplenote
    服务器条目
  3. 已登录
    ~/.config/simplenote-mcp/auth.json
    中有有效凭据
如果缺少任何前提条件,请先运行设置:
bash
npx -y @automattic/simplenote-mcp setup
然后添加到
~/mcp.json
json
{
  "mcpServers": {
    "simplenote": {
      "command": "npx",
      "args": ["-y", "@automattic/simplenote-mcp"]
    }
  }
}

How to Call

调用方式

The MCP server uses stdio JSON-RPC. Send all messages in a single pipeline:
bash
(
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"agent","version":"1.0"}}}'
sleep 1
echo '{"jsonrpc":"2.0","method":"notifications/initialized"}'
sleep 0.5
echo '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"TOOL_NAME","arguments":{...}}}'
sleep 4
) | timeout 12 npx -y @automattic/simplenote-mcp 2>/dev/null
Critical: The
sleep
delays are required. Skip them and messages get lost.
MCP服务器使用stdio JSON-RPC。在单个管道中发送所有消息:
bash
(
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"agent","version":"1.0"}}}'
sleep 1
echo '{"jsonrpc":"2.0","method":"notifications/initialized"}'
sleep 0.5
echo '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"TOOL_NAME","arguments":{...}}}'
sleep 4
) | timeout 12 npx -y @automattic/simplenote-mcp 2>/dev/null
关键提示
sleep
延迟是必需的。跳过它们会导致消息丢失。

Available Tools

可用工具

ToolTypeArguments
list_notes
Read
{tag?, limit?, include_deleted?}
search_notes
Read
{query, limit?, include_deleted?}
get_note
Read
{id, include_deleted?}
list_tags
Read
{}
get_note_history
Read
{id, limit?}
get_note_version
Read
{id, version}
create_note
Write
{content, tags?, markdown?, pinned?}
update_note
Write
{id, content?, tags?, markdown?, pinned?}
trash_note
Write
{id}
restore_note
Write
{id}
revert_note
Write
{id, version}
工具类型参数
list_notes
读取
{tag?, limit?, include_deleted?}
search_notes
读取
{query, limit?, include_deleted?}
get_note
读取
{id, include_deleted?}
list_tags
读取
{}
get_note_history
读取
{id, limit?}
get_note_version
读取
{id, version}
create_note
写入
{content, tags?, markdown?, pinned?}
update_note
写入
{id, content?, tags?, markdown?, pinned?}
trash_note
写入
{id}
restore_note
写入
{id}
revert_note
写入
{id, version}

Common Operations

常见操作

List notes

列出笔记

bash
undefined
bash
undefined

Replace TOOL_NAME with list_notes

将TOOL_NAME替换为list_notes

echo '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"list_notes","arguments":{"limit":20}}}'
undefined
echo '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"list_notes","arguments":{"limit":20}}}'
undefined

Search notes

搜索笔记

bash
echo '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"search_notes","arguments":{"query":"search term","limit":10}}}'
bash
echo '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"search_notes","arguments":{"query":"search term","limit":10}}}'

Create a note

创建笔记

bash
undefined
bash
undefined

First line becomes the title

第一行将成为标题

echo '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"create_note","arguments":{"content":"Note Title\n\nBody content here...","tags":["tag1","tag2"],"markdown":true}}}'
undefined
echo '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"create_note","arguments":{"content":"Note Title\n\nBody content here...","tags":["tag1","tag2"],"markdown":true}}}'
undefined

Update a note (FULL replacement!)

更新笔记(完全替换!)

bash
undefined
bash
undefined

IMPORTANT: get_note first, modify content, then update

重要提示:先调用get_note,修改内容,然后再更新

The content field REPLACES the entire note

content字段会替换整个笔记内容

echo '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"update_note","arguments":{"id":"NOTE_ID","content":"Full new content"}}}'
undefined
echo '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"update_note","arguments":{"id":"NOTE_ID","content":"Full new content"}}}'
undefined

Trash / Restore

移入回收站 / 恢复笔记

bash
echo '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"trash_note","arguments":{"id":"NOTE_ID"}}}'
echo '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"restore_note","arguments":{"id":"NOTE_ID"}}}'
bash
echo '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"trash_note","arguments":{"id":"NOTE_ID"}}}'
echo '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"restore_note","arguments":{"id":"NOTE_ID"}}}'

Parsing Responses

解析响应

The response is JSON-RPC. Extract the result with:
bash
| python3 -c "
import sys, json
for line in sys.stdin:
    line = line.strip()
    if not line: continue
    try:
        d = json.loads(line)
        if d.get('id') == 2:
            content = d.get('result',{}).get('content',[])
            for c in content:
                if c.get('type') == 'text':
                    print(c['text'])
    except: pass
"
响应格式为JSON-RPC。使用以下命令提取结果:
bash
| python3 -c "
import sys, json
for line in sys.stdin:
    line = line.strip()
    if not line: continue
    try:
        d = json.loads(line)
        if d.get('id') == 2:
            content = d.get('result',{}).get('content',[])
            for c in content:
                if c.get('type') == 'text':
                    print(c['text'])
    except: pass
"

Gotchas

注意事项

  1. content
    replaces entire note
    — always
    get_note
    first, then modify, then
    update_note
  2. Tags replace entire list — provide full tag list on update, not just the new one
  3. sleep
    delays are mandatory
    sleep 1
    after init,
    sleep 0.5
    after initialized,
    sleep 3-5
    after tool call
  4. Write mode — requires
    writeMode: true
    in
    ~/.config/simplenote-mcp/config.json
  5. Token expiry — if
    list_notes
    returns empty but account has notes, re-run
    npx @automattic/simplenote-mcp setup
  6. No project-specific info — this skill is generic. Do not hardcode credentials, usernames, or note IDs.
  1. content
    会替换整个笔记
    —— 务必先调用
    get_note
    ,修改内容后再调用
    update_note
  2. 标签会替换整个列表 —— 更新时需提供完整的标签列表,而不仅仅是新增的标签
  3. sleep
    延迟是必须的
    —— 初始化后
    sleep 1
    ,发送initialized通知后
    sleep 0.5
    ,工具调用后
    sleep 3-5
  4. 写入模式 —— 需要在
    ~/.config/simplenote-mcp/config.json
    中设置
    writeMode: true
  5. 令牌过期 —— 如果
    list_notes
    返回空但账户中有笔记,请重新运行
    npx @automattic/simplenote-mcp setup
  6. 无项目特定信息 —— 此技能是通用的。请勿硬编码凭据、用户名或笔记ID。

When to Use

使用场景

  • User says "save this to Simplenote" / "create a note" / "search my notes"
  • User wants to manage a knowledge base, reminders, or task list in Simplenote
  • User asks to read or update existing Simplenote notes
  • Any interaction with Simplenote as a note-taking backend
  • 用户说"把这个保存到Simplenote" / "创建一条笔记" / "搜索我的笔记"
  • 用户想要在Simplenote中管理知识库、提醒事项或任务列表
  • 用户要求读取或更新现有的Simplenote笔记
  • 将Simplenote作为笔记后端的任何交互