返回市场
诺记服务器

诺记服务器

作者:v-3115 星标更新:2025-02-01

项目介绍

Notion MCP 服务器

一个提供与 Notion 无缝集成的模型上下文协议(MCP)服务器。此服务器使语言模型能够通过标准化工具与您的 Notion 工作区进行交互,这些工具用于搜索、阅读、创建和更新页面及数据库。

🌟 主要特性

页面操作

  • 🔍 在您的 Notion 工作区中搜索
  • 📝 使用丰富的 Markdown 内容创建新页面
  • 📖 以整洁的格式读取页面内容
  • 🔄 更新现有页面
  • 💬 添加和检索评论
  • 🧱 块级操作(更新、删除)

增强的 Markdown 支持

  • 多级标题(H1-H3)
  • 具有语言支持的代码块
  • 带复选框状态的互动待办事项
  • 支持多行的引用
  • 水平分隔线
  • 带有图注的图片
  • 嵌套的项目符号

数据库操作

  • 创建和管理数据库
  • 添加和更新数据库项
  • 使用过滤器和排序进行查询
  • 支持各种属性类型:
    • 标题、富文本、数字
    • 单选、多选
    • 日期、复选框
    • 更多!

🚀 快速开始

预备条件

  • Node.js(v16 或更高版本)
  • Notion API 密钥
  • 兼容 MCP 的客户端(例如,Claude Desktop)

安装

  1. 克隆仓库:
git clone https://github.com/v-3/notion-server.git
cd notion-server
  1. 安装依赖:
npm install
  1. 设置环境:
# 创建 .env 文件
echo "NOTION_API_KEY=your_notion_api_key_here" > .env

# 或者直接导出
export NOTION_API_KEY=your_notion_api_key_here
  1. 构建服务器:
npm run build

🔧 配置

Claude Desktop 设置

  1. 更新您的 Claude Desktop 配置(claude_desktop_config.json):
{
    "mcpServers": {
        "notion": {
            "command": "node",
            "args": ["/absolute/path/to/notion-server/build/index.js"],
            "env": {
                "NOTION_API_KEY": "your_notion_api_key_here"
            }
        }
    }
}
  1. 重启 Claude Desktop 应用更改

🛠️ 可用工具

页面操作

// 搜索页面
{
    query: string // 搜索查询
}

// 读取页面
{
    pageId: string // 要读取的页面ID
}

// 创建页面
{
    title?: string,      // 页面标题
    content?: string,    // Markdown 格式的页面内容
    parentPageId: string // 父页面ID
    properties?: object  // 对于数据库项
}

// 更新页面
{
    pageId: string,   // 要更新的页面ID
    content: string,  // 新内容
    type?: string    // 内容类型
}

数据库操作

// 创建数据库
{
    parentPageId: string,
    title: string,
    properties: object
}

// 查询数据库
{
    databaseId: string,
    filter?: object,
    sort?: object
}

🔐 设置 Notion 访问

创建集成

  1. 访问 Notion 集成
  2. 点击“新建集成”
  3. 配置权限:
    • 内容:读取、更新、插入
    • 评论:读取、创建
    • 用户信息:读取

连接页面

  1. 打开您的 Notion 页面
  2. 点击“...”菜单 → “连接”
  3. 添加您的集成
  4. 如需其他页面,请重复上述步骤

📝 使用示例

创建页面

const result = await notion.create_page({
  parentPageId: "page_id",
  title: "我的页面",
  content: "# 欢迎\n这是一个测试页面。"
});

查询数据库

const result = await notion.query_database({
  databaseId: "db_id",
  filter: {
    property: "状态",
    select: {
      equals: "进行中"
    }
  }
});

🤝 贡献

欢迎贡献!请:

  1. 分叉仓库
  2. 创建功能分支
  3. 提交拉取请求

📜 许可证

本项目采用 MIT 许可证 - 查看 LICENSE 文件获取详情。

🙏 致谢

本项目在 sweir1/notion-server 的基础上得到了显著改进,他们进行了以下更新:

  • 增强了 Markdown 支持,增加了更多块类型
  • 完整的数据库操作
  • 改进了错误处理和调试
  • 更好的数据库项属性处理
  • 清晰的页面输出格式

要使用 sweir1 的版本,您可以克隆他们的仓库:

git clone https://github.com/sweir1/notion-server.git