返回市场
MCP服务器Notion提示

MCP服务器Notion提示

作者:BaoxingZhang2 星标更新:2025-04-06

项目介绍

Notion 提示词 MCP 服务器

这是一个使用模型上下文协议(MCP)标准的服务器,提供对存储在 Notion 数据库中的提示词的访问。

特性

  • 提示词资源列表 提供所有可用的提示词作为 MCP 资源
  • 读取提示词 根据ID或名称读取单个提示词
  • 组合提示词 将用户输入与提示词模板结合
  • 分类管理 支持按类别分组并查询提示词
  • 搜索功能 支持根据名称、描述和内容搜索提示词
  • 缓存系统 内置缓存机制,优化性能,减少API调用
  • 可配置性 支持通过环境变量或命令行参数进行配置
  • 处理模式 支持多种提示词处理方法以避免LLM超出边界处理

安装

# 克隆仓库
git clone https://github.com/BaoxingZhang/mcp-server-notion-prompt
cd mcp-server-notion-prompt

# 安装依赖
npm install

# 构建项目
npm run build

配置

1. 创建 Notion 集成

  1. 访问 Notion 开发者门户
  2. 点击 '+ 新集成'
  3. 填写基本信息
  4. 在“能力”部分,确保勾选:读取内容
  5. 点击“提交”创建集成
  6. 创建后,复制显示的“内部集成令牌”(以'ntn2'开头),这就是你的 NOTION-API_KEY

2. 创建 Notion 数据库

  1. 在 Notion 中创建一个新的页面
  2. 进入数据库并选择‘表格数据库’
  3. 设置以下属性:
    • 名称(标题属性):提示词的名称
    • 内容:提示词的内容
    • 描述(文本属性):提示词的描述或目的
    • 分类(多选属性):提示词的分类(可选)
  4. 打开你的提示词数据库
  5. 在页面URL中找到数据库ID(https://www.notion.so/workspace/123456abcdef...中的"123456Abcdef..."部分即为数据库ID)
  6. 记录这个ID,它将作为 NOTIONDATABASE-ID
  7. 与集成共享数据库(打开提示词数据库,点击右上角的“...”菜单,选择“添加连接”,在搜索框中查找并选择你刚刚创建的集成)

3. 服务器配置

服务器需要以下配置:

  • NOTION_API_KEY 你的 Notion API 密钥
  • NOTION_DATABASE_ID 存储提示词的 Notion 数据库ID
  • PROMPT_HANDLING_MODE 提示词组合后的处理模式(可选,默认为 processw_call)
    • return_only 只返回组合后的提示文本,不做额外处理
    • process_locally 指示客户端使用当前上下文中的LLM来处理提示词
    • call_external_api 服务器调用外部API来处理提示词(需要额外配置)

你可以通过环境变量或命令行参数提供:

# 使用环境变量
export NOTION_API_KEY="your_api_key_here"
export NOTION_DATABASE_ID="your_database_id_here"
export LOG_LEVEL="INFO"  # 可选,默认为 INFO
export CACHE_EXPIRY_TIME="300000"  # 可选,默认为 5 分钟 (300000ms)
export PROMPT_HANDLING_MODE="process_locally"  # 可选,默认为 process_locally

# 启动服务器
npm start

# 或使用命令行参数
npm start -- --notion_api_key=your_api_key_here --notion_database_id=
your_database_id_here --prompt_handling_mode=return_only

Notion 数据库结构

Notion 数据库应包括以下属性:

  • 名称 (标题):提示词名称
  • 内容 (富文本):提示词内容,可以包含 {{USER_INPUT}} 占位符
  • 描述 (富文本):提示词描述
  • 分类 (选择):提示词分类

提示词变量

在提示内容中,你可以使用以下变量:

  • {{USER_INPUT}}:将被替换为用户输入
  • {{CURRENT_DATE}}:当前日期
  • {{CURRENT_TIME}}:当前时间
  • {{CURRENT_DATETIME}}:当前日期和时间
  • {{PROMPT_NAME}}:提示词名称

MCP 工具

此服务器提供了以下 MCP 工具:

  1. list_prompts 列出所有可用的提示词
  2. get_prompt_by_name 根据名称获取提示词
  3. compose_prompt 将用户输入整合到提示词模板中
  4. process_composed_prompt 处理组合后的提示词
  5. process_category_prompts 处理指定类别的所有提示词
  6. refresh_prompts 刷新提示词缓存
  7. get_prompts_by_category 获取特定类别的提示词
  8. search_prompts 搜索提示词(名称、描述和内容)
  9. list_categories 列出所有可用的提示词类别

开发

# 运行开发版本
npm run dev

# 构建
npm run build

# 运行测试
npm test

使用示例

# 获取特定提示词
请使用 get_prompt_by_name 工具获取名为“翻译助手”的提示词。

# 组合提示词与用户输入
请使用 compose_prompt 工具,提示词名称为“翻译助手”,用户输入为“Hello, I am learning to use Cursor with MCP.”

# 直接使用提示词处理内容
请使用名为“翻译助手”的提示词翻译以下文本:Hello, I am learning to use Cursor with MCP.

# 刷新缓存
请使用 refresh_prompts 工具刷新提示词缓存。

# 使用类别调用多个提示词
调用类别为“七把武器”的提示词,分别输出7个svg卡片,输入内容为:“只看新闻,不讨论~”。

# 组合处理结果
调用类别为“七把武器”的提示词,先分别输出7个svg卡片,然后将7个svg卡片最终整合到一个html中,输入内容为:“只看新闻,不讨论~”。

# AI 自主选择
生命,爱与欢笑(奥修)
选择七把武器中一把合适的武器输出

服务器 JSON 示例

{
  "mcpServers": {
    "notion-prompts": {
      "command": "node",
      "args": [
        "D:\\project\\mcp-project\\mcp-server-notion-prompt\\build\\index.js"
      ],
      "env": {
        "NOTION_API_KEY": "ntn_xxx",
        "NOTION_DATABASE_ID": "1ccxxx"
      }
    }
  }
}

许可证

MIT