返回 MCP 目录
public公开dns本地运行

notion-mcp-server-mfy

一个基于Model Context Protocol (MCP)的服务器,用于连接AI模型与Notion API,实现对Notion文档和数据的交互操作。

article

README

🚀 Notion Python 自动化交互工具

借助 Notion API 与 Python 脚本实现自动化工作流,高效管理笔记、任务和知识库

🚀 快速开始

Notion 是一款功能强大的在线协作工具,支持笔记记录、任务管理、知识库构建等多种操作。通过集成 Notion API,我们能够实现自动化工作流,显著提高工作效率。本文将详细介绍如何使用 Python 脚本与 Notion 进行交互,涵盖安装配置、核心功能及其实现方法。

✨ 主要特性

  • 内容创建:自动生成和更新页面、块内容。
  • 数据查询:检索特定数据库中的记录。
  • 属性管理:操作数据库字段及其值。
  • 工作流自动化:监听并响应各类事件(如新页面创建)。

📦 安装指南

安装依赖

首先,安装必要的 Python 库:

pip install notional python-dotenv

配置环境变量

创建一个 .env 文件用于存储 Notion API 令牌:

NOTION_TOKEN=your_token_here
NOTION_SPACE_ID=your_space_id_here

💻 使用示例

基础用法

内容创建

通过以下代码可以创建新的页面内容:

from notional import Notional

# 初始化 Notional 客户端
client = Notional(token='your_token')

# 创建新页面
new_page = {
    'parent': {'database_id': 'your_database_id'},
    'properties': {
        'Name': {
            'title': [
                {
                    'text': {
                        'content': 'New Page'
                    }
                }
            ]
        }
    },
    'children': [
        {
            'object': 'block',
            'type': 'paragraph',
            'paragraph': {
                'rich_text': [
                    {
                        'type': 'text',
                        'text': {'content': 'This is a new page created via Notion API'}
                    }
                ]
            }
        }
    ]
}

response = client.pages.create(
    parent={'database_id': 'your_database_id'},
    properties=new_page['properties'],
    children=new_page['children']
)

数据查询

以下代码展示如何检索数据库记录:

# 获取数据库内容
database = client.databases.retrieve('your_database_id')

# 查询所有记录
results = client.databases.query('your_database_id', {
    'filter': {
        'property': 'Name',
        'contains': True,
        'query': 'Example'
    }
})

# 处理返回结果
for result in results['results']:
    print(result['properties']['Name']['title'][0]['text']['content'])

属性管理

操作数据库字段示例:

# 更新页面属性
client.pages.update(
    page_id='your_page_id',
    properties={
        'Status': {
            'select': {
                'name': 'Complete'
            }
        }
    }
)

# 删除指定属性
client.properties.delete('property_id')

高级用法

工作流自动化

通过设置 Webhook 监听事件:

from notional.webhooks import Webhook

# 创建并订阅 webhook
webhook = Webhook(client, secret='your_secret_key', url='https://your_endpoint.com/webhook')

@webhook.listener('page_created')
def handle_page_create(event):
    print(f"New page created: {event['page']['id']}")

webhook.start()

📚 详细文档

注意事项

  • 权限管理:确保 API 令牌拥有正确的操作权限。
  • 数据安全:避免在代码中明文存储敏感信息,建议使用环境变量或加密存储。
  • 错误处理:针对 Notion API 返回的状态码和错误消息进行适当处理。

通过以上步骤,您可以有效地自动化管理 Notion 工作区内容,提升工作效率。

help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端