1. Conduid
  2. Developer Tools
  3. Construe
MCP server · Developer Tools

Construe

A FastMCP server that loads personal context from Obsidian vaults using frontmatter filtering - curate your knowledge for AI conversations.

Unclaimed GPL-3.0 last commit 7 months ago devtools
64Good

Scored yesterday · breakdown

About Construe

Construe is an MCP server published by mattjoyce in the Developer Tools category: a FastMCP server that loads personal context from Obsidian vaults using frontmatter filtering - curate your knowledge for AI conversations.

The repository has 11 stars and 2 forks, with the last commit 7 months ago. Six months or more without a commit doesn't mean the server is broken, but check the open issues before depending on it in production.

Install

From source
git clone https://github.com/mattjoyce/mcp-construe

This server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.

Ask AI

✦

Ask AI about Construe

Powered by Claude · Grounded in docs

I know everything about Construe. Ask me about installation, configuration, usage, or troubleshooting.

Security checks

Static checks derived from the repository 8 hours ago. Heuristics on the source, not an audit.

  • ✓README presentThe repository ships documentation.
  • ✓License declaredUsable under a stated license.
  • !Tests presentNo tests found. Behaviour changes may go unnoticed between versions.
  • !Dependencies pinnedNo lockfile. Installs can pull different code over time.
  • ✓No dynamic code executionSource scan found no eval, dynamic Function, or shell execution.
  • !Scoped permissionsDoesn't declare a permission scope. Assume it can do anything its process can.

README

mcp-construe

A FastMCP server that loads personal context from Obsidian vaults using frontmatter filtering - curate your knowledge for AI conversations.

Features

  • Bidirectional Knowledge Management: Read from and write to your Obsidian vault
  • Smart Chunking: Automatically splits large result sets to stay within context limits (95k characters per chunk)
  • Flexible Filtering: Search by frontmatter properties and tags with AND/OR logic
  • File Protection: Secure controls prevent overwriting files outside designated contexts
  • Frontmatter Integration: Proper YAML frontmatter generation and parsing

Usage

Basic Usage

python3 mcp-construe.py

Custom Configuration

python3 mcp-construe.py --config other-config.yaml
python3 mcp-construe.py --config /path/to/custom-config.yaml

Configuration

Create a config.yaml file in the same directory as the script:

# Path to your Obsidian vault (supports ~ for home directory)
vault_path: "/path/to/obsidian/vault"

# Default context criteria for fetch_context()
default_context:
  properties:
    context: "personal"
  tags: []

# Protection settings: Only allow creating/overwriting files with this property value
# The MCP server can only create files with this property, and can only overwrite
# files that have this property set to one of these values
protection_property: "author"     # which frontmatter property to check
protection_value: ["claude"]      # allowed values (supports single string or list)

Tools

Context Loading Tools

  • fetch_context(context_type, chunk_index=0) - Load files by context type with chunking support
  • fetch_matching_files(properties, tags, match_all_tags, chunk_index=0) - Flexible filtering with chunking
  • fetch_frontmatter_index(properties, tags, match_all_tags, chunk_index=0, max_chars=95000) - Browse file metadata with pagination

Chunking Management Tools

  • list_context_chunks(context_type, max_chars=95000) - List available chunks for a context type
  • list_matching_chunks(properties, tags, match_all_tags, max_chars=95000) - List chunks for custom search
  • fetch_context_chunk(context_type, chunk_index, max_chars=95000) - Fetch specific chunk by context
  • fetch_matching_chunk(chunk_index, properties, tags, match_all_tags, max_chars=95000) - Fetch specific chunk by criteria

File Creation Tools

  • create_file(filename, content, properties, tags, subfolder="", overwrite=False) - Create new files with frontmatter

Security Features

File Protection System

The server includes a robust protection mechanism that prevents unauthorized file modifications:

  1. Dual Validation: Both new files being created AND existing files being overwritten must have the required protection property
  2. Flexible Property Control: Configure any frontmatter property (e.g., author, context, owner) as the protection key
  3. Multiple Allowed Values: Support for multiple valid values (e.g., ["claude", "assistant"])
  4. Complete Coverage: All file write operations are protected

Example Protection Scenarios

Configuration: protection_property: "author", protection_value: ["claude"]

✅ Allowed:

# Create new file with required property
create_file("note.md", "content", properties={"author": "claude"})

# Overwrite existing file that has author: claude
create_file("existing.md", "new content", properties={"author": "claude"}, overwrite=True)

❌ Blocked:

# Missing required property
create_file("note.md", "content", properties={})

# Wrong property value  
create_file("note.md", "content", properties={"author": "unauthorized"})

# Attempting to overwrite file with different author
# (existing file has author: human, config requires author: claude)

Chunking Behavior

When search results exceed the 95k character limit, the system automatically chunks results:

  1. Use listing tools to see available chunks: list_context_chunks() or list_matching_chunks()
  2. Fetch specific chunks using chunk tools or chunk_index parameter
  3. Files are never split - each chunk contains complete files only
  4. Automatic warnings when multiple chunks are available

Example Frontmatter

Files should include proper YAML frontmatter for filtering:

---
author: claude
context: personal
type: note
tags: [ai, productivity, tools]
created: 2024-01-15
---

# Your Content Here

This note will be discoverable by the MCP server.

Installation

  1. Clone the repository
  2. Install dependencies: pip install fastmcp pyyaml pathlib
  3. Configure your config.yaml
  4. Run: python3 mcp-construe.py

Changelog

2025-09-15

  • Added pagination to fetch_frontmatter_index: Added chunk_index and max_chars parameters to prevent LLM message size limit issues
  • Improved large result handling: The frontmatter index function now automatically chunks large result sets for better performance
  • Enhanced API consistency: All browsing functions now follow the same chunking pattern

License

See LICENSE file for details.

README fetched from the repository 8 hours ago. The original is authoritative.

Questions

About Construe

How do I install Construe?

No package has been published for this server, so install it from source: clone the repository and follow its README.

Is Construe safe to use with an AI agent?

Its trust score is 64 out of 100 (good). It passes 3 of the 6 static security checks run so far; the failures are listed above. It has no ConduID identity yet, so agent calls to it are not receipted.

Is Construe still maintained?

The last commit was 7 months ago. That's long enough that you should check whether the maintainer is responding to issues before depending on it.