Skip to main content
Glama
cwente25

Knowledge Base MCP Server

by cwente25

Knowledge Base MCP Server

A Model Context Protocol (MCP) server for managing a personal markdown-based knowledge base. Enable AI assistants like Claude to read, search, and update your notes naturally.

Overview

This MCP server provides AI-native access to a personal knowledge base stored as markdown files with YAML frontmatter. It allows you to:

  • Create and organize notes across multiple categories

  • Search through your knowledge base using natural language

  • Update and maintain notes with AI assistance

  • Keep all data in human-readable, portable markdown format

  • Access your notes from Claude Desktop, Claude Code, or any MCP-compatible client

  • NEW: Browse and edit notes via the included web UI

Related MCP server: mcp-vault-reader

Features

Core Capabilities

  • 7 MCP Tools for complete knowledge base management

    • add_note - Create new notes

    • search_notes - Search by content, tags, or category

    • get_note - Retrieve full note content

    • update_note - Modify existing notes (replace or append)

    • list_notes - List notes with optional filters

    • delete_note - Remove notes (with backup)

    • list_categories - View all categories and counts

  • Smart Search with relevance scoring

    • Search across titles, content, tags, and metadata

    • Case-insensitive matching

    • Filter by category or tags

    • Ranked results by relevance

  • Flexible Organization

    • Default categories: people, recipes, meetings, procedures, tasks

    • Configurable category system

    • Tag-based organization

    • Rich metadata support

  • Data Safety

    • Automatic backups before updates

    • Atomic file writes

    • Human-readable markdown format

    • No vendor lock-in

  • Web UI (Phase 2)

    • Clean, dark-themed interface

    • Category navigation and search

    • Note creation and editing

    • Authentication with JWT tokens

    • Works on desktop and mobile browsers

Installation

Prerequisites

  • Python 3.11 or higher

  • uv package manager (recommended) or pip

# Clone the repository
git clone <repository-url>
cd knowledge-base-mcp

# Install dependencies
uv sync

# The server is now ready to use

Install with pip

# Clone the repository
git clone <repository-url>
cd knowledge-base-mcp

# Create virtual environment
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Install in development mode
pip install -e .

Running the Server

This project provides two ways to run the knowledge base:

Option 1: MCP Server (for Claude Desktop/Code)

The MCP server runs via stdio and is designed to be used with Claude Desktop or Claude Code.

Start the MCP server:

# Using uv
uv run knowledge-base-server

# Using pip/venv
knowledge-base-server

The MCP server will:

  • Listen on stdin/stdout for MCP protocol messages

  • Wait for commands from an MCP client (like Claude Desktop)

  • Not show a web interface or HTTP endpoint

Note: The MCP server is typically not run standalone. Instead, configure it in Claude Desktop (see Configuration section below) and let Claude Desktop manage the server lifecycle.

Option 2: HTTP API Server (for Web/API Access)

The HTTP API server provides a web interface and REST API.

Quick Start (No Authentication):

By default, authentication is disabled for easy local development. Just run:

# Using uv
uv run knowledge-base-api

# Using pip/venv
knowledge-base-api

# Or run directly with uvicorn
uvicorn api.main:app --host 0.0.0.0 --port 8000 --reload

The API server will start on http://localhost:8000 with:

  • Web UI: http://localhost:8000 (if web files exist)

  • API Docs: http://localhost:8000/docs (Swagger UI)

  • Alternative Docs: http://localhost:8000/redoc (ReDoc)

  • Health Check: http://localhost:8000/health

Using the API (No Auth):

# Create a note
curl -X POST http://localhost:8000/notes \
  -H "Content-Type: application/json" \
  -d '{"title": "My Note", "content": "Hello World", "category": "people", "tags": ["test"]}'

# List all notes
curl http://localhost:8000/notes

# Search notes
curl "http://localhost:8000/search?q=hello"

Optional: Enable Authentication

To enable authentication (recommended for production), create a .env.local file:

# Enable authentication
REQUIRE_AUTH=true

# Required when auth is enabled
JWT_SECRET_KEY=your-secret-key-here-change-this-in-production

# Optional - AI features
ANTHROPIC_API_KEY=sk-ant-xxxxx

# Optional - custom paths
KNOWLEDGE_BASE_PATH=~/knowledge-base
CATEGORIES=people,recipes,meetings,procedures,tasks

# Optional - server settings
API_HOST=0.0.0.0
API_PORT=8000
DEBUG=false

Generate a secure JWT secret:

# On Linux/macOS
openssl rand -hex 32

# Or use Python
python -c "import secrets; print(secrets.token_hex(32))"

Using the API with Authentication:

When REQUIRE_AUTH=true, you need to authenticate:

  1. Create an account:

curl -X POST http://localhost:8000/auth/signup \
  -H "Content-Type: application/json" \
  -d '{"email": "user@example.com", "password": "your-password", "full_name": "Your Name"}'
  1. Login to get a token:

curl -X POST http://localhost:8000/auth/login \
  -H "Content-Type: application/json" \
  -d '{"email": "user@example.com", "password": "your-password"}'
  1. Use the token for authenticated requests:

curl http://localhost:8000/notes \
  -H "Authorization: Bearer YOUR_TOKEN_HERE"

Configuration

Environment Variables

Create a .env file in the project root (optional):

# Knowledge base location (default: ~/knowledge-base)
KNOWLEDGE_BASE_PATH=~/knowledge-base

# Categories (comma-separated)
CATEGORIES=people,recipes,meetings,procedures,tasks

# Server settings
SERVER_NAME=Knowledge Base
LOG_LEVEL=INFO

Claude Desktop Setup

Add the server to your Claude Desktop configuration:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

Windows: %APPDATA%\Claude\claude_desktop_config.json

Linux: ~/.config/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "knowledge-base": {
      "command": "uv",
      "args": [
        "--directory",
        "/absolute/path/to/knowledge-base-mcp",
        "run",
        "knowledge-base-server"
      ]
    }
  }
}

Alternative (using pip/venv):

{
  "mcpServers": {
    "knowledge-base": {
      "command": "/absolute/path/to/venv/bin/python",
      "args": [
        "-m",
        "knowledge_base_mcp.server"
      ],
      "env": {
        "KNOWLEDGE_BASE_PATH": "/path/to/your/knowledge-base"
      }
    }
  }
}

After configuration, restart Claude Desktop.

Web UI Access

The knowledge base includes a web interface for browsing and editing notes from any browser.

Starting the Web Server

# Make sure you're in the project directory
cd knowledge-base-mcp

# Start the FastAPI server (default port 8000)
uvicorn api.main:app --host 0.0.0.0 --port 8000

# Or use the configuration from .env
python -m api.main

First Time Setup

  1. Open your browser to http://localhost:8000

  2. Click "Create Account" to sign up

  3. Enter your email and password (minimum 8 characters)

  4. Login with your credentials

  5. Start creating and organizing notes!

Features

  • Category Navigation: Browse notes by category with note counts

  • Full-Text Search: Search across all notes and tags in real-time

  • Note Editor: Clean markdown editor with auto-save warnings

  • Create/Edit/Delete: Full CRUD operations on notes

  • Tag Management: Organize notes with comma-separated tags

  • Responsive Design: Works on desktop and mobile browsers

Mobile Access

To access from your phone on the same network:

# Start server listening on all interfaces
uvicorn api.main:app --host 0.0.0.0 --port 8000

# Then access from phone using your computer's IP
# Example: http://192.168.1.100:8000

For remote access, consider using Tailscale or deploying to a cloud service.

Usage

MCP Tool Usage

Example Interactions

Adding Notes

You: "I just met Sarah Chen at a conference. She works at Tesla on battery
     tech and is interested in our AI product. Tag this as important."

Claude: [Calls add_note tool]
✓ Note 'Sarah Chen' created in people/
  File: sarah-chen.md
  Tags: conference, tesla, important

Searching

You: "Who did I meet that works on batteries?"

Claude: [Calls search_notes with query="batteries"]
Found 1 result(s):

[people] Sarah Chen [conference, tesla, batteries, important]
   Battery engineer at Tesla. Met at tech conference. Interested in AI...

Retrieving Notes

You: "Show me my note about Sarah Chen"

Claude: [Calls get_note tool]
# Sarah Chen

**Category:** people
**Tags:** conference, tesla, batteries, important
**Date:** 2025-10-21

---

Battery engineer at Tesla...

Updating Notes

You: "Add to Sarah Chen's note that we scheduled a call for next Tuesday"

Claude: [Calls update_note with append=True]
✓ Note 'Sarah Chen' updated successfully
  Category: people
  Last updated: 2025-10-22

Quick Reference

You: "How long do I cook brussels sprouts in the air fryer?"

Claude: [Calls search_notes with query="brussels sprouts"]
Found 1 result(s):

[recipes] Brussels Sprouts [quick, vegetables, air-fryer]
   Cook at 400°F for 15-18 minutes, shake halfway through...

Knowledge Base Structure

Your knowledge base is stored as markdown files in a simple folder structure:

~/knowledge-base/
├── people/
│   ├── sarah-chen.md
│   ├── john-doe.md
│   └── ...
├── recipes/
│   ├── brussels-sprouts.md
│   ├── chocolate-cake.md
│   └── ...
├── meetings/
│   └── q4-planning.md
├── procedures/
│   └── onboarding-checklist.md
└── tasks/
    └── launch-preparation.md

Markdown Format

Each note is a markdown file with YAML frontmatter:

---
tags: [conference, tesla, batteries, important]
date: 2025-10-21
category: people
company: Tesla
role: Battery Engineer
email: sarah.chen@tesla.com
---

# Sarah Chen

**Met:** Tech Conference 2025, Silicon Valley
**Contact:** sarah.chen@tesla.com

## Notes

Interested in our AI product for battery optimization.
Has budget approval for Q1 2026.

## Follow-up

- [ ] Send demo link by end of week
- [ ] Schedule call for next Tuesday

Metadata Fields

Required:

  • tags: List of tags for categorization

  • date: Creation date (YYYY-MM-DD)

  • category: Category folder name

Optional (category-specific):

  • People: company, role, email, phone

  • Recipes: prep_time, cook_time, servings

  • Meetings: attendees, meeting_date, location

  • Tasks: priority, due_date, status

You can add any custom metadata fields as needed.

Development

Running Tests

# With uv
uv run pytest

# With pip
pytest

# Run specific test file
pytest tests/test_storage.py

# Run with coverage
pytest --cov=knowledge_base_mcp tests/

Project Structure

knowledge-base-mcp/
├── src/
│   └── knowledge_base_mcp/
│       ├── __init__.py
│       ├── server.py       # MCP server and tools
│       ├── storage.py      # File operations
│       ├── search.py       # Search functionality
│       └── models.py       # Data models
├── tests/
│   ├── test_server.py      # Integration tests
│   ├── test_storage.py     # Storage layer tests
│   └── test_search.py      # Search tests
├── examples/
│   └── sample-notes/       # Example notes
├── pyproject.toml          # Project configuration
└── README.md

Adding Custom Categories

Edit your .env file or environment configuration:

CATEGORIES=people,recipes,meetings,procedures,tasks,books,articles,ideas

The server will automatically create folders for new categories.

Troubleshooting

Common Issues

Server not appearing in Claude Desktop:

  • Verify the path in claude_desktop_config.json is absolute

  • Check that the command path is correct (uv or python path)

  • Restart Claude Desktop completely

  • Check Claude Desktop logs for errors

Notes not being created:

  • Verify KNOWLEDGE_BASE_PATH exists and is writable

  • Check file permissions

  • Ensure category is valid (use list_categories tool)

Search not finding notes:

  • Verify notes have proper YAML frontmatter

  • Check that tags are formatted as lists

  • Try searching with simpler queries

  • Use list_notes to see what notes exist

Permission errors:

  • Ensure the knowledge base directory has write permissions

  • On macOS, you may need to grant Claude Desktop disk access in System Preferences

Viewing Logs

Claude Desktop logs can help diagnose issues:

  • macOS: ~/Library/Logs/Claude/

  • Windows: %APPDATA%\Claude\logs\

  • Linux: ~/.config/Claude/logs/

Use Cases

Conference CRM

Track people you meet at conferences with contact info, notes, and follow-up tasks.

Recipe Collection

Store recipes with tags, cook times, and personal notes about modifications.

Meeting Notes

Keep meeting agendas, discussion points, and action items organized by topic.

Procedure Documentation

Maintain step-by-step procedures and checklists for recurring tasks.

Task Management

Track projects, deadlines, and task lists with priorities and status.

Integration with Other Tools

Obsidian

The markdown format is fully compatible with Obsidian. You can:

  • Open the knowledge base in Obsidian

  • Edit notes in either Obsidian or via Claude

  • Use Obsidian mobile for on-the-go access

  • Sync via Obsidian Sync or iCloud

Git Version Control

Consider adding git version control to your knowledge base:

cd ~/knowledge-base
git init
git add .
git commit -m "Initial knowledge base"

This provides:

  • Version history of all changes

  • Ability to revert changes

  • Backup to remote repository

  • Collaboration capabilities

File Sync

Use any file sync service:

  • iCloud Drive

  • Dropbox

  • Google Drive

  • Syncthing

Roadmap

Phase 2 Features (Planned)

  • HTTP API for web and mobile access

  • Web UI for browsing and editing

  • AI pendant integration via webhooks

  • Automatic summarization and insights

  • Calendar integration

  • Email integration

Future Considerations

  • Multi-user support

  • Real-time collaboration

  • Advanced search with embeddings

  • Automatic tagging suggestions

  • Template system for note types

Contributing

Contributions are welcome! Please:

  1. Fork the repository

  2. Create a feature branch

  3. Add tests for new functionality

  4. Ensure all tests pass

  5. Submit a pull request

License

MIT License - see LICENSE file for details

Support

  • Report issues: [GitHub Issues]

  • Documentation: MCP Documentation

  • Community: [MCP Discord]

Acknowledgments

Built with:


Made with Claude Code

Available Tools

11 tools
add_noteB

Create a new note in the knowledge base (supports hierarchical categories)

ParametersJSON Schema
NameRequiredDescriptionDefault
category_pathYesCategory path (e.g., 'work', 'work/clients/acme', 'personal/spiritual'). Category will be created if it doesn't exist.
titleYesNote title (becomes filename)
contentYesMarkdown content of the note
tagsNoComma-separated tags (optional)

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool creates a note and supports hierarchical categories, but doesn't mention permissions required, whether the operation is idempotent, error handling, or what happens on success/failure. For a mutation tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose ('Create a new note in the knowledge base') and adds a useful detail ('supports hierarchical categories') without unnecessary elaboration. Every word earns its place, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (a mutation with 4 parameters) and no annotations or output schema, the description is minimally adequate. It covers the basic purpose and hints at category behavior, but lacks details on behavioral traits, error cases, or output format. For a creation tool in a knowledge base context, more completeness would be helpful, but it meets the minimum viable threshold.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema fully documents all parameters. The description adds no additional parameter semantics beyond what's in the schema—it doesn't explain parameter interactions, constraints, or examples. With high schema coverage, the baseline score of 3 is appropriate, as the description doesn't compensate but also doesn't detract.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Create a new note') and resource ('in the knowledge base'), which is specific and unambiguous. It also mentions support for hierarchical categories, which adds useful context. However, it doesn't explicitly differentiate from sibling tools like 'create_category' or 'update_note', which would be needed for a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'create_category' (for categories only) or 'update_note' (for modifying existing notes). It mentions hierarchical categories but doesn't clarify if this is the only way to add notes or if there are prerequisites. Without explicit when/when-not instructions, the agent must infer usage from context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_categoryC

Create a new category or subcategory in the knowledge base

ParametersJSON Schema
NameRequiredDescriptionDefault
category_pathYesCategory path (e.g., 'work', 'work/clients', 'personal/spiritual/devotionals'). Use forward slashes for nested categories.
descriptionNoOptional description for the category

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool creates categories but doesn't mention potential side effects (e.g., if creating duplicates is allowed, what permissions are required, or how errors are handled). This is insufficient for a mutation tool, as it leaves critical behavioral traits unspecified.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence that directly states the tool's purpose without any unnecessary words. It is front-loaded and efficiently conveys the core functionality, making it easy for an agent to parse and understand quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of a mutation tool with no annotations and no output schema, the description is incomplete. It doesn't cover behavioral aspects like error conditions, return values, or interaction with sibling tools. For a tool that modifies data, more context is needed to ensure safe and correct usage by an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds no parameter-specific information beyond what the input schema already provides. Since schema description coverage is 100%, the baseline score is 3. The description doesn't elaborate on parameter usage, such as examples for 'category_path' beyond what's in the schema, so it doesn't add extra value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Create') and resource ('new category or subcategory in the knowledge base'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'move_category' or 'rename_category', which also involve category modifications, so it doesn't reach the highest score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. For example, it doesn't mention whether to use 'create_category' for new categories versus 'move_category' for reorganizing existing ones, or if there are prerequisites like parent categories needing to exist first. This lack of context leaves the agent without usage direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_categoryC

Delete a category and optionally all its contents

ParametersJSON Schema
NameRequiredDescriptionDefault
category_pathYesCategory path to delete (e.g., 'work/clients/acme')
confirmNoMust be true to delete non-empty category (safety check)
recursiveNoIf true, delete all subcategories and notes (default: true)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It hints at destructive behavior ('delete') and optional recursion, but lacks details on permissions, irreversibility, error conditions, or response format. This is inadequate for a mutation tool with significant impact.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero waste. It front-loads the core action and includes a key optional behavior, making it appropriately sized and structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive mutation tool with no annotations and no output schema, the description is incomplete. It fails to address critical aspects like safety warnings, confirmation requirements beyond the 'confirm' parameter, or what happens upon success/failure, leaving significant gaps for agent usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all parameters. The description adds no additional meaning beyond implying recursion affects 'contents', but this is already covered in the schema's 'recursive' description. Baseline 3 is appropriate as the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Delete') and resource ('a category'), making the purpose unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'move_category' or 'rename_category' in terms of destructive nature, though the action is distinct.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives (e.g., 'move_category' or 'rename_category' for reorganization instead of deletion). The description mentions optional content deletion but doesn't specify scenarios or prerequisites for use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_noteC

Delete a note from the knowledge base

ParametersJSON Schema
NameRequiredDescriptionDefault
category_pathYesCategory path (e.g., 'work/clients/acme')
titleYesNote title

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action ('Delete') but doesn't describe consequences (e.g., irreversible deletion, no confirmation prompt), permissions required, error conditions (e.g., if note doesn't exist), or response format. For a destructive tool with zero annotation coverage, this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero wasted words. It is appropriately sized and front-loaded, directly stating the tool's purpose without unnecessary elaboration. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (a destructive deletion tool), lack of annotations, and no output schema, the description is incomplete. It doesn't address behavioral aspects like irreversibility, permissions, or error handling, which are critical for safe tool invocation. The description should do more to compensate for missing structured data.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both parameters ('category_path' and 'title') clearly documented in the schema. The description adds no parameter-specific information beyond what the schema provides. According to rules, when coverage is high (>80%), the baseline is 3 even with no param info in the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Delete') and resource ('a note from the knowledge base'), making the purpose unambiguous. It distinguishes this from siblings like 'add_note', 'update_note', or 'get_note' by specifying deletion. However, it doesn't explicitly differentiate from 'delete_category', which targets a different resource type.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., the note must exist), exclusions (e.g., cannot delete notes in read-only categories), or comparisons to siblings like 'delete_category' or 'update_note'. Usage is implied but not explicitly stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_noteC

Retrieve the full content of a specific note

ParametersJSON Schema
NameRequiredDescriptionDefault
category_pathYesCategory path (e.g., 'work/clients/acme')
titleYesNote title (can use full filename or friendly title)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool retrieves content but does not mention potential errors (e.g., if the note doesn't exist), permissions required, rate limits, or the format of the returned content. This leaves significant gaps in understanding how the tool behaves beyond its basic function.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, direct sentence that efficiently conveys the core purpose without any unnecessary words. It is front-loaded with the key action and resource, making it highly concise and well-structured for quick understanding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations and output schema, the description is incomplete for a tool that retrieves data. It does not explain what is returned (e.g., note content, metadata, error handling), which is critical for an agent to use the tool effectively. The high schema coverage helps with inputs, but the overall context is insufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, clearly documenting both required parameters ('category_path' and 'title') with examples. The description does not add any additional meaning beyond what the schema provides, such as explaining how these parameters uniquely identify a note or detailing edge cases, so it meets the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('retrieve') and resource ('full content of a specific note'), making the purpose unambiguous. However, it does not explicitly differentiate from sibling tools like 'list_notes' or 'search_notes', which might retrieve multiple notes or partial content, so it falls short of a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives such as 'list_notes' for browsing or 'search_notes' for filtering. It lacks context on prerequisites or exclusions, leaving the agent to infer usage from the purpose alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_categoriesB

List all categories in a hierarchical tree structure

ParametersJSON Schema
NameRequiredDescriptionDefault
parent_pathNoOptional: list only subcategories of this path

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It states the output format ('hierarchical tree structure'), which adds value beyond the input schema, but doesn't disclose critical behavioral traits like whether it's read-only, paginated, rate-limited, or requires authentication. For a tool with zero annotation coverage, this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose ('List all categories') and adds essential context ('in a hierarchical tree structure'). There is zero waste or redundancy, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (one optional parameter, no output schema, no annotations), the description is minimally adequate. It covers the purpose and output format but lacks behavioral details and usage guidelines. For a simple read operation, this is borderline viable but leaves gaps an agent might need to infer.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents the 'parent_path' parameter fully. The description doesn't add any parameter-specific information beyond what's in the schema, such as examples of path formats or hierarchical implications. Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('List') and resource ('all categories'), specifying they are returned in a 'hierarchical tree structure'. It distinguishes from siblings like 'create_category' or 'move_category' by focusing on retrieval, but doesn't explicitly differentiate from other list operations like 'list_notes' beyond resource type.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. It doesn't mention prerequisites, when to use 'parent_path' filtering, or how it compares to other category-related tools like 'create_category' or 'move_category'. The agent must infer usage from the tool name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_notesB

List all notes, optionally filtered by category path or tag

ParametersJSON Schema
NameRequiredDescriptionDefault
category_pathNoOptional category path filter (e.g., 'work/clients')
tagNoOptional tag filter
recursiveNoIf true, list notes in subcategories too (default: true)

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden for behavioral disclosure. It mentions filtering and recursive behavior, but lacks details on permissions, rate limits, pagination, return format, or whether it's read-only. For a list operation with zero annotation coverage, this leaves significant gaps in understanding how the tool behaves beyond basic functionality.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core action ('List all notes') and includes key optional features. There is zero waste, and every word earns its place by conveying essential information without redundancy or unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (3 parameters, no output schema, no annotations), the description is adequate but incomplete. It covers the basic purpose and filtering options, but lacks details on behavioral aspects like permissions, output format, or error handling. Without annotations or output schema, more context would be helpful for safe and effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already documents all three parameters thoroughly. The description adds minimal value by mentioning 'optionally filtered by category path or tag,' which aligns with schema details but doesn't provide additional semantics beyond what's in the schema. With high schema coverage, the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('List') and resource ('notes') with optional filtering capabilities. It distinguishes from 'get_note' (singular retrieval) and 'search_notes' (likely broader search), but doesn't explicitly differentiate from 'list_categories' which handles different resources. The purpose is specific but sibling differentiation could be more explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context through 'optionally filtered by category path or tag,' suggesting when to use filtering parameters. However, it doesn't provide explicit guidance on when to choose this tool versus alternatives like 'search_notes' or 'list_categories,' nor does it mention prerequisites or exclusions. Usage is implied rather than clearly defined.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

move_categoryC

Move a category to a different parent location

ParametersJSON Schema
NameRequiredDescriptionDefault
source_pathYesCurrent category path (e.g., 'personal/work-notes')
destination_pathYesNew parent path (e.g., 'work/archived')

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden but only states the basic operation. It doesn't disclose behavioral traits such as whether the move is atomic, what happens to child categories/notes, permission requirements, error conditions (e.g., invalid paths), or if it's destructive (though 'move' implies mutation). This leaves significant gaps for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's purpose with zero wasted words. It is appropriately sized and front-loaded, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given this is a mutation tool with no annotations and no output schema, the description is incomplete. It lacks details on behavior (e.g., effects on hierarchy), error handling, or return values, which are critical for safe and effective use in a context with sibling tools like list_categories and delete_category.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with clear parameter descriptions in the schema (e.g., 'Current category path'). The tool description adds no additional parameter semantics beyond implying relocation context, so it meets the baseline of 3 where the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Move') and resource ('a category') with the specific operation 'to a different parent location'. It distinguishes from siblings like rename_category (which changes name but not location) and delete_category (which removes rather than relocates), though it doesn't explicitly name these alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like rename_category or create_category. The description implies usage for relocation but doesn't mention prerequisites (e.g., existing categories), exclusions (e.g., moving to non-existent paths), or sibling tool relationships.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rename_categoryB

Rename a category while keeping it in the same parent location

ParametersJSON Schema
NameRequiredDescriptionDefault
old_pathYesCurrent category path (e.g., 'work/clients')
new_nameYesNew name for the category (just the name, not full path)

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It mentions the tool renames a category but doesn't disclose behavioral traits like whether it requires specific permissions, if the rename is reversible, what happens to child elements, or error handling for invalid paths. This is a significant gap for a mutation tool with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core action ('Rename a category') and adds a clarifying constraint ('while keeping it in the same parent location'). There is zero wasted text, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool is a mutation operation with no annotations and no output schema, the description is incomplete. It lacks details on behavioral aspects like permissions, reversibility, effects on related data, and error scenarios. For a tool that modifies data, this leaves significant gaps in understanding how to use it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters ('old_path' and 'new_name') with clear descriptions. The description adds no additional meaning beyond what the schema provides, such as format examples or constraints, resulting in the baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Rename a category') and specifies the scope ('while keeping it in the same parent location'), which distinguishes it from 'move_category' that likely changes parent location. However, it doesn't explicitly differentiate from 'update_note' or other update operations, keeping it at 4 rather than 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by specifying 'keeping it in the same parent location,' which suggests when to use this vs. 'move_category.' However, it doesn't provide explicit guidance on when to use this tool vs. alternatives like 'create_category' or 'delete_category,' or mention prerequisites such as existing category paths.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_notesB

Search through all notes by query, category path, or tags

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoSearch term (searches title, content, tags) - case insensitive
category_pathNoOptional category path filter (e.g., 'work/clients'). Searches in this path and all subcategories by default.
tagsNoOptional comma-separated tags to filter by (matches any)
recursiveNoIf true, search in subcategories too (default: true)

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions search functionality but lacks details on permissions, rate limits, pagination, or error handling. For a search tool with zero annotation coverage, this leaves significant gaps in understanding how the tool behaves in practice.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's function without unnecessary words. It's front-loaded with the core action and resource, making it easy to parse quickly, with no wasted information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (search with multiple filters) and lack of annotations or output schema, the description is adequate but incomplete. It covers what the tool does but misses behavioral aspects like result format or limitations. For a search tool, this leaves room for improvement in guiding the agent effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all four parameters. The description adds minimal value by listing the search criteria ('query, category path, or tags') but doesn't provide additional syntax, examples, or constraints beyond what's in the schema, meeting the baseline for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Search through') and resource ('all notes') with specific search criteria ('by query, category path, or tags'), making the purpose unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'list_notes' or 'get_note', which could also retrieve notes, so it doesn't reach the highest score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'list_notes' or 'get_note'. It mentions search capabilities but doesn't specify scenarios where searching is preferable to listing or retrieving specific notes, leaving the agent to infer usage from context alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_noteC

Update an existing note's content or tags

ParametersJSON Schema
NameRequiredDescriptionDefault
category_pathYesCategory path (e.g., 'work/clients/acme')
titleYesNote title
contentNoNew content (optional)
tagsNoNew comma-separated tags (optional)
appendNoIf true, append content instead of replacing (default: false)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden but offers minimal behavioral insight. It indicates a mutation ('Update') but doesn't disclose permissions needed, whether changes are reversible, error handling, or rate limits. This is inadequate for a mutation tool with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero waste, front-loading the core action ('Update an existing note') and key modifiable attributes. Every word earns its place, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity as a mutation with 5 parameters and no output schema or annotations, the description is incomplete. It lacks details on behavioral traits (e.g., side effects, error cases), usage context, and return values, which are crucial for safe and effective agent invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all 5 parameters. The description adds no additional meaning beyond implying that 'content' and 'tags' are updatable fields, which is already clear from the schema. Baseline 3 is appropriate as the schema handles parameter semantics effectively.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Update') and resource ('an existing note'), specifying what fields can be modified ('content or tags'). It distinguishes from siblings like 'add_note' (create new) and 'delete_note' (remove), though it doesn't explicitly contrast with 'get_note' (read) or 'search_otes' (query).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives is provided. It doesn't mention prerequisites (e.g., note must exist), exclusions (e.g., cannot update non-existent notes), or comparisons to siblings like 'add_note' for creation or 'delete_note' for removal, leaving usage context implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A3.6/5.0
Disambiguation5/5

Every tool has a clearly distinct purpose with no ambiguity. Tools are clearly separated by resource (note vs. category) and action (create, delete, get, list, update, etc.), making it easy for an agent to select the correct one without confusion.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern (e.g., add_note, create_category, list_notes). The naming is uniform throughout, using snake_case and clear action verbs that align with the tool's function.

Tool Count5/5

With 11 tools, the count is well-scoped for a knowledge base server. Each tool serves a distinct and necessary function, covering core operations for managing notes and categories without being excessive or insufficient.

Completeness5/5

The tool set provides complete CRUD/lifecycle coverage for both notes and categories. It includes creation, retrieval, updating, deletion, listing, and search operations, with no obvious gaps that would hinder agent workflows in this domain.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables AI assistants to search, read, and traverse Markdown note vaults (Obsidian-compatible) with full-text search, backlinks, knowledge graphs, and a persistent memory system for cross-session context.
    16
    17
    2
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI assistants to search, read, create, update, and remove personal markdown notes stored locally, providing persistent memory across sessions.
    95
    2
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI assistants to capture, search, update, and delete notes in a local Markdown vault with automatic categorization and tagging, making knowledge management seamless.
    6
    1
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/cwente25/KnowledgeBaseMCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server