一个FastMCP服务器,从Obsidian保险库中加载个人上下文信息,使用frontmatter过滤器——整理你的知识以供AI对话使用。
python3 mcp-construe.py
python3 mcp-construe.py --config other-config.yaml
python3 mcp-construe.py --config /path/to/custom-config.yaml
在同一目录下创建一个config.yaml文件:
# 你的Obsidian保险库路径(支持~表示主目录)
vault_path: "/path/to/obsidian/vault"
# fetch_context()的默认上下文标准
default_context:
properties:
context: "personal"
tags: []
# 保护设置:仅允许创建或覆盖具有此属性值的文件
# MCP服务器只能创建具有此属性的文件,并且只能覆盖
# 具有此属性设置为这些值之一的文件
protection_property: "author" # 要检查的frontmatter属性
protection_value: ["claude"] # 允许的值(支持单个字符串或列表)
服务器包含强大的保护机制,防止未经授权的文件修改:
author、context、owner)作为保护键["claude", "assistant"])配置:protection_property: "author",protection_value: ["claude"]
✅ 允许:
# 创建具有所需属性的新文件
create_file("note.md", "content", properties={"author": "claude"})
# 覆盖具有作者:claude的现有文件
create_file("existing.md", "new content", properties={"author": "claude"}, overwrite=True)
❌ 阻止:
# 缺少所需属性
create_file("note.md", "content", properties={})
# 错误的属性值
create_file("note.md", "content", properties={"author": "unauthorized"})
# 尝试覆盖具有不同作者的文件
# (现有文件的作者是human,配置要求作者是claude)
当搜索结果超过95k字符限制时,系统会自动对结果进行分块:
list_context_chunks() 或 list_matching_chunks()chunk_index参数获取特定分块文件应包含适当的YAML frontmatter以便于过滤:
---
author: claude
context: personal
type: note
tags: [ai, productivity, tools]
created: 2024-01-15
---
# 这里是你的内容
此笔记将由MCP服务器发现。
pip install fastmcp pyyaml pathlibconfig.yamlpython3 mcp-construe.pychunk_index和max_chars参数,以防止LLM消息大小限制问题详情见LICENSE文件。