N.I.L.O. Docs

架构概览

本文档面向开发者,说明当前仓库的架构边界。

当前目标

N.I.L.O. 提供本地运行的 MCP server。当前实现由两个通用实现层和两个薄适配层组成:

使用者安装、Notion connection 配置和命令用法放在 Docs/ZH/User/;本目录只记录开发者需要维护的实现边界。

目标结构

Human / Function Calling -> CLI adapter -> Core / Runtime
Agent / LLM -> MCP adapter -> Core / Runtime

必须保持:

CLI -> Core
CLI -> Runtime
MCP Tool -> Core
MCP Tool -> Runtime

禁止:

CLI -> MCP
MCP -> CLI
Core 或 Runtime -> CLI 或 MCP
CLI -> Notion SDK
MCP Tool -> Notion SDK

Core

Core 是唯一业务逻辑层,负责:

Core 也负责组合全局与项目级配置。有效配置先加载全局凭据,再应用用户根目录以下最近项目中的非敏感覆盖项。项目设置优先于全局设置;token 等凭据只能保存在全局配置中。

Runtime

Runtime 保存通用的非业务执行能力,包括受管 server 进程状态、日志路径、后台 Streamable HTTP 生命周期和前台 stdio 进程启动。CLI 与 MCP 适配层可以导入 Runtime;Runtime 不得反向导入任何适配层。

CLI

CLI 是人类入口,负责:

公开 server 命令包括:

nilo server run
nilo server status
nilo server stop
nilo server logs
nilo server remove
nilo server stdio

CLI resource command 通过 Core service 调用 Notion 能力,通过 Runtime 管理进程生命周期。CLI 不得导入 MCP 适配层。

项目级 .notion_mcp/ 目录保存项目上下文、attach state 和非敏感设置覆盖项,不保存 token。全局配置保存凭据。项目定位只向上查到用户根目录;用户根目录下的 .notion_mcp/ 只视为全局配置。项目初始化会在项目根 .gitignore 中增量加入 .notion_mcp/

MCP Tool

MCP Tool 是 Agent/LLM 入口,负责:

MCP Tool 直接调用 Core service,不拼 CLI 字符串。

支持的 transport 只有两种:本地命令型 client 使用 stdio,URL 型服务/client 连接使用 streamable-http。不支持 legacy SSE。远程部署、认证、TLS 和反向代理配置本轮延期;当前 server 示例仅用于本地。

非功能边界