返回市场
笔记发布-MCP

笔记发布-MCP

作者:Go-55541 星标更新:2025-10-10

项目介绍

Note Post MCP

GitHub

通用MCP服务器提供了自动发布和草稿保存到note.com的工具。它读取包含标题、正文和标签的Markdown文件,然后使用Playwright自动化将其发布到您的note.com账户。

安装

预备条件

  • Node.js 18+
  • 一个note.com账户
  • note-state.json认证状态文件(通过npm run login获取)
  • 在您的环境中设置NOTE_POST_MCP_STATE_PATH(可选,默认为~/.note-state.json

从GitHub安装

git clone https://github.com/Go-555/note-post-mcp.git
cd note-post-mcp
npm install
npm run build

安装Playwright浏览器

npm run install-browser

这将安装所需的Chromium浏览器以进行自动化操作。

获取认证状态文件

运行登录脚本以与note.com进行身份验证:

npm run login

将打开一个浏览器窗口。登录到note.com后,在终端中按Enter键。这将创建一个包含您的认证状态的~/.note-state.json文件。安全地存储此文件,并通过NOTE_POST_MCP_STATE_PATH引用它或作为参数传递。

或者从npm安装(如果已发布)

npm install -g note-post-mcp

设置:Claude Code (CLI)

使用以下一行命令(替换为您真实的值):

claude mcp add Note Post MCP -s user -e NOTE_POST_MCP_STATE_PATH="/path/to/note-state.json" -- npx @gonuts555/note-post-mcp@latest

要移除:

claude mcp remove Note Post MCP

设置:Cursor

在客户端创建.cursor/mcp.json(不要在此处提交):

{
  "mcpServers": {
    "note-post-mcp": {
      "command": "npx",
      "args": ["@gonuts555/note-post-mcp@latest"],
      "env": {
        "NOTE_POST_MCP_STATE_PATH": "/path/to/note-state.json"
      },
      "autoStart": true
    }
  }
}

其他客户端和代理

<details> <summary>VS Code</summary>

通过URI或CLI安装:

code --add-mcp '{"name":"note-post-mcp","command":"npx","args":["@gonuts555/note-post-mcp@latest"],"env":{"NOTE_POST_MCP_STATE_PATH":"/path/to/note-state.json"}}'
</details> <details> <summary>Claude Desktop</summary>

添加到您的Claude Desktop配置文件(claude_desktop_config.json):

{
  "mcpServers": {
    "note-post-mcp": {
      "command": "npx",
      "args": ["@gonuts555/note-post-mcp@latest"],
      "env": {
        "NOTE_POST_MCP_STATE_PATH": "/path/to/note-state.json"
      }
    }
  }
}
</details> <details> <summary>LM Studio</summary>
  • 命令:npx
  • 参数:["@gonuts555/note-post-mcp@latest"]
  • 环境变量:NOTE_POST_MCP_STATE_PATH=/path/to/note-state.json
</details> <details> <summary>Goose</summary>
  • 类型:STDIO
  • 命令:npx
  • 参数:@gonuts555/note-post-mcp@latest
  • 启用:true
</details> <details> <summary>opencode</summary>

示例~/.config/opencode/opencode.json

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "note-post-mcp": {
      "type": "local",
      "command": ["npx", "@gonuts555/note-post-mcp@latest"],
      "enabled": true,
      "env": {
        "NOTE_POST_MCP_STATE_PATH": "/path/to/note-state.json"
      }
    }
  }
}
</details> <details> <summary>Qodo Gen</summary>

添加一个新的MCP并粘贴上述标准JSON配置。

</details> <details> <summary>Windsurf</summary>

向您的Windsurf MCP配置添加以下内容:

{
  "note-post-mcp": {
    "command": "npx",
    "args": ["@gonuts555/note-post-mcp@latest"],
    "env": {
      "NOTE_POST_MCP_STATE_PATH": "/path/to/note-state.json"
    }
  }
}
</details>

设置:Codex (TOML)

向您的Codex TOML配置添加以下内容。

示例(Serena):

[mcp_servers.serena]
command = "uvx"
args = ["--from", "git+https://github.com/oraios/serena", "serena", "start-mcp-server", "--context", "codex"]

此服务器(最小):

[mcp_servers.note-post-mcp]
command = "npx"
args = ["@gonuts555/note-post-mcp@latest"]
# 可选环境变量:
# NOTE_POST_MCP_STATE_PATH = "/path/to/note-state.json"
# NOTE_POST_MCP_TIMEOUT = "180000"
# MCP_NAME = "note-post-mcp"

配置(环境变量)

  • NOTE_POST_MCP_STATE_PATH:note.com认证状态文件路径(默认:~/.note-state.json
  • NOTE_POST_MCP_TIMEOUT:浏览器操作超时时间(毫秒,默认:1180000
  • MCP_NAME:服务器名称覆盖(默认:note-post-mcp

可用工具

publish_note

从Markdown文件发布文章到note.com。

  • 输入

    • markdown_path(字符串,必需):包含标题、正文和标签的Markdown文件路径
    • thumbnail_path(字符串,可选):缩略图图像文件路径
    • state_path(字符串,可选):note.com认证状态文件路径
    • screenshot_dir(字符串,可选):保存截图的目录
    • timeout(数字,可选):超时时间(毫秒)
  • 输出:JSON对象,包含:

    • success(布尔值):操作是否成功
    • url(字符串):发布的文章URL
    • screenshot(字符串):截图路径
    • message(字符串):成功消息

save_draft

从Markdown文件保存草稿文章到note.com。

  • 输入

    • markdown_path(字符串,必需):包含标题、正文和标签的Markdown文件路径
    • thumbnail_path(字符串,可选):缩略图图像文件路径
    • state_path(字符串,可选):note.com认证状态文件路径
    • screenshot_dir(字符串,可选):保存截图的目录
    • timeout(数字,可选):超时时间(毫秒)
  • 输出:JSON对象,包含:

    • success(布尔值):操作是否成功
    • url(字符串):草稿编辑页面的URL
    • screenshot(字符串):截图路径
    • message(字符串):成功消息

Markdown文件格式

您的Markdown文件应遵循以下格式:

---
title: 您的文章标题
tags:
  - 标签1
  - 标签2
---

您的文章正文内容放在这里。

您可以包含URL,它们将被note.com自动扩展。

或者,您可以使用数组表示法来表示标签:

---
title: 您的文章标题
tags: [标签1, 标签2]
---

您的文章正文内容放在这里。

或者,如果没有前言部分,可以使用简单的#标题:

# 您的文章标题

您的文章正文内容放在这里。

正文内容细节

正文内容支持以下Markdown元素:

前言格式:

  • 所有前言闭合---之后的行都被视为正文内容
  • 尾部空白行会被自动修剪

标题格式:

  • 第一行以# 开头被视为标题(不包括在正文中)
  • ## ### 开头的标题被视为正文内容的一部分

代码块:

  • 必须有闭合围栏(```)
  • 语言规范被保留
  • 整个代码块作为一个单元粘贴

插入图片:

  • 使用相对路径从Markdown文件开始:![描述](./images/sample.png)
  • 支持PNG、JPEG和GIF格式
  • 本地图像文件会自动上传

列表和引用:

  • 项目列表(-)和编号列表(1.)由note.com自动继续
  • 引用块(>)也会自动继续
  • Markdown符号会在第一行之后自动处理

水平线:

  • 正文中的---会被正确处理为水平线
  • 水平线之后立即出现的空白行会被自动跳过

单行URL:

  • 单独一行的URL会被note.com自动扩展成链接卡片
  • YouTube和其他嵌入内容也会被自动处理

示例调用(MCP工具调用)

{
  "name": "publish_note",
  "arguments": {
    "markdown_path": "/path/to/article.md",
    "thumbnail_path": "/path/to/thumbnail.png",
    "state_path": "/path/to/note-state.json"
  }
}

保存草稿:

{
  "name": "save_draft",
  "arguments": {
    "markdown_path": "/path/to/draft.md"
  }
}

故障排除

  • 认证错误:确保您的note-state.json文件有效且是最新的。如果会话已过期,您可能需要重新生成它。
  • 确保Node 18+:运行node -v以验证您的Node.js版本。
  • 构建错误:运行npm installnpm run build以确保所有依赖项已安装且TypeScript已编译。
  • 本地运行:构建后,使用npx note-post-mcp进行本地测试(它将在标准输入等待MCP消息)。
  • 检查发布工件:运行npm pack --dry-run以查看将包含在发布的包中的文件。
  • 超时问题:如果操作超时,请增加NOTE_POST_MCP_TIMEOUT或传递更大的timeout参数。
  • Playwright浏览器未安装:运行npm run install-browsernpx playwright install chromium以安装所需浏览器。

参考资料

名称一致性及故障排除

  • 始终使用CANONICAL_ID(note-post-mcp)作为标识符和键。
  • 仅在UI标签中使用CANONICAL_DISPLAY(Note Post MCP)。
  • 不要在不同客户端之间混用不同的名称。

一致性矩阵

  • npm包名 → note-post-mcp
  • 二进制名 → note-post-mcp
  • MCP服务器名(SDK元数据)→ note-post-mcp
  • 环境默认MCP_NAME → note-post-mcp
  • 客户端注册键 → note-post-mcp
  • UI标签 → Note Post MCP

冲突清理

  • 删除任何旧条目并使用note-post-mcp重新添加。
  • 确保全局.mcp.json或客户端注册表仅使用note-post-mcp作为键。
  • Cursor:仅在UI中配置。此项目不包括.cursor/mcp.json

示例

  • 正确"mcpServers": { "note-post-mcp": { "command": "npx", "args": ["@gonuts555/note-post-mcp@latest"] } }
  • 错误:使用不同的键如"NotePost""note_post"(将与note-post-mcp冲突)

许可证

MIT