Token导航 LogoToken导航TokenDH.com
Frontmatter MCP logo
数据服务stdio官方级别未说明来源级核验

Frontmatter MCP

MCP Server

一个基于DuckDB SQL的Markdown frontmatter查询和语义搜索服务,适用于文档管理和数据分析场景。

工具数

11

提示词数

0

GitHub Stars

1

资源数

0
数据分析Python搜索文档处理

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

kzmshx

提供方

kzmshx

最后核验

2026/5/17 20:21

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

pip install frontmatter-mcp

详细介绍

frontmatter mcp

用于使用DuckDB SQL查询Markdown frontmatter的MCP服务器。

配置

基本用法

{
  "mcpServers": {
    "frontmatter": {
      "command": "uvx",
      "args": ["frontmatter-mcp"],
      "env": {
        "FRONTMATTER_BASE_DIR": "/path/to/markdown/directory"
      }
    }
  }
}

使用语义搜索

语义搜索需要较大的依赖关系(~1GB)。集 MCP_TIMEOUT 要延长安装超时时间,请执行以下操作:

{
  "mcpServers": {
    "frontmatter": {
      "command": "uvx",
      "args": ["--from", "frontmatter-mcp[semantic]", "frontmatter-mcp"],
      "env": {
        "FRONTMATTER_BASE_DIR": "/path/to/markdown/directory",
        "FRONTMATTER_ENABLE_SEMANTIC": "true",
        "MCP_TIMEOUT": "300000"
      }
    }
  }
}

注: MCP_TIMEOUT 以毫秒为单位(300000=5分钟)。

安装(可选)

如果您希望全局安装:

pip install frontmatter-mcp
# or
uv tool install frontmatter-mcp

工具

query_inspect

跨文件从frontmatter获取模式信息。

参数类型说明
globstring相对于基本目录的全局模式

例子:

// Input
{ "glob": "**/*.md" }

// Output
{
  "file_count": 186,
  "schema": {
    "date": { "type": "string", "count": 180, "nullable": true },
    "tags": { "type": "array", "count": 150, "nullable": true }
  }
}

// Output (with semantic search ready)
{
  "file_count": 186,
  "schema": {
    "date": { "type": "string", "count": 180, "nullable": true },
    "tags": { "type": "array", "count": 150, "nullable": true },
    "embedding": { "type": "FLOAT[256]", "nullable": false }
  }
}

怎么翻译

使用DuckDB SQL查询前台数据。

参数类型说明
globstring相对于基本目录的全局模式
sqlstringDuckDB SQL查询引用 files 桌子

例子:

// Input
{
  "glob": "**/*.md",
  "sql": "SELECT path, date FROM files WHERE date >= '2025-11-01' ORDER BY date DESC"
}

// Output
{
  "columns": ["path", "date"],
  "row_count": 24,
  "results": [
    {"path": "daily/2025-11-28.md", "date": "2025-11-28"},
    {"path": "daily/2025-11-27.md", "date": "2025-11-27"}
  ]
}

更新

在单个文件中更新frontmatter属性。

参数类型说明
pathstring相对于基本目录的文件路径
setobject要添加或覆盖的属性
unsetstring\[\]要删除的属性名称

例子:

// Input
{ "path": "notes/idea.md", "set": {"status": "published"} }

// Output
{ "path": "notes/idea.md", "frontmatter": {"title": "Idea", "status": "published"} }

批量更新

更新多个文件中的frontmatter属性。

参数类型说明
globstring相对于基本目录的全局模式
setobject要添加或覆盖的属性
unsetstring\[\]要删除的属性名称

例子:

// Input
{ "glob": "drafts/*.md", "set": {"status": "review"} }

// Output
{ "updated_count": 5, "updated_files": ["drafts/a.md", "drafts/b.md", ...] }

batch_array_add

为多个文件中的数组属性添加值。

参数类型说明
globstring相对于基本目录的全局模式
propertystring数组属性的名称
valueany要添加的值
allow_duplicatesbool允许重复值(默认值:false)

例子:

// Input
{ "glob": "**/*.md", "property": "tags", "value": "reviewed" }

// Output
{ "updated_count": 42, "updated_files": ["a.md", "b.md", ...] }

batch_array_remove

从多个文件中的数组属性中删除一个值。

参数类型说明
globstring相对于基本目录的全局模式
propertystring数组属性的名称
value任何要删除的值

例子:

// Input
{ "glob": "**/*.md", "property": "tags", "value": "draft" }

// Output
{ "updated_count": 15, "updated_files": ["a.md", "b.md", ...] }

batch_array_replace

替换多个文件中数组属性中的值。

参数类型说明
globstring相对于基本目录的全局模式
propertystring数组属性的名称
old_value任何要替换的值
new_valueany新值

例子:

// Input
{ "glob": "**/*.md", "property": "tags", "old_value": "draft", "new_value": "review" }

// Output
{ "updated_count": 10, "updated_files": ["a.md", "b.md", ...] }

批次排序

对多个文件中的数组属性进行排序。

参数类型说明
globstring相对于基本目录的全局模式
propertystring数组属性的名称
reversebool按降序排序(默认值:false)

例子:

// Input
{ "glob": "**/*.md", "property": "tags" }

// Output
{ "updated_count": 20, "updated_files": ["a.md", "b.md", ...] }

batch_array_unique

从多个文件中的数组属性中删除重复值。

参数类型说明
globstring相对于基本目录的全局模式
propertystring数组属性的名称

例子:

// Input
{ "glob": "**/*.md", "property": "tags" }

// Output
{ "updated_count": 5, "updated_files": ["a.md", "b.md", ...] }

索引状态

获取语义搜索索引的状态。

此工具仅在以下情况下可用 FRONTMATTER_ENABLE_SEMANTIC=true.

例子:

// Output (not started)
{ "state": "idle" }

// Output (indexing in progress)
{ "state": "indexing" }

// Output (ready)
{ "state": "ready" }

索引_刷新

刷新语义搜索索引(差异更新)。

此工具仅在以下情况下可用 FRONTMATTER_ENABLE_SEMANTIC=true.

例子:

// Output
{ "state": "indexing", "message": "Indexing started", "target_count": 665 }

// Output (when already indexing)
{ "state": "indexing", "message": "Indexing already in progress" }

技术说明

所有值都是字符串

所有frontmatter值都以字符串形式传递给DuckDB。使用 TRY_CAST 在SQL中用于在需要时进行类型转换。

SELECT * FROM files
WHERE TRY_CAST(date AS DATE) >= '2025-11-01'

数组是JSON字符串

数组类似 tags: [ai, python] 存储为JSON字符串 '["ai", "python"]'.使用 from_json()UNNEST 扩大它们。

SELECT path, tag
FROM files, UNNEST(from_json(tags, '[""]')) AS t(tag)
WHERE tag = 'ai'

模板表达式支持

包含黑曜石模板表达式的文件(例如。, ``)被优雅地处理。这些表达式被视为字符串,自然会被日期过滤排除在外。

语义搜索

启用语义搜索后,您可以使用 embed() 功能和 embedding SQL查询中的列。运行后 index_refresh,markdown正文内容被索引为向量。

-- Find semantically similar documents
SELECT path, 1 - array_cosine_distance(embedding, embed('feeling better')) as score
FROM files
ORDER BY score DESC
LIMIT 10

-- Combine with frontmatter filters
SELECT path, date, 1 - array_cosine_distance(embedding, embed('motivation')) as score
FROM files
WHERE date >= '2025-11-01'
ORDER BY score DESC
LIMIT 10

环境变量:

变量默认值描述
FRONTMATER_BASE_DIR(必填)文件的基本目录
FRONTMATTER_ENABLE_SEMANTICfalse启用语义搜索
FRONTMATTER_EMBEDDING_MODELcl nagoya/ruri-v3-30m嵌入模型名称
FRONTMATTER_CACHE_DIRFRONTMATER_BASE_DIR/.FRONTMATTER mcp缓存嵌入目录

许可证

麻省理工学院

目录标签

目录标签

数据分析Python搜索文档处理Markdown处理本地部署SQL查询语义搜索文档管理

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

部署方式(deploymentType,部署类型)

local-only

工具数量(toolCount,工具数)

11

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiononelocal-only

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP