Command Palette

Search for a command to run...

UnylyUnyly
Весь каталог

Pdmt

БесплатноНе проверен

High-performance, deterministic templating library for Model Context Protocol (MCP) applications with comprehensive todo validation and quality enforcement

GitHubEmbed

Описание

High-performance, deterministic templating library for Model Context Protocol (MCP) applications with comprehensive todo validation and quality enforcement

README

Crates.io Documentation Build Status License: MIT

A high-performance, deterministic templating library for Model Context Protocol (MCP) applications, designed for generating consistent, validated todo lists and structured content with quality enforcement.

🚀 Features

  • 🎯 Deterministic Generation: 0.0 temperature templating ensures reproducible outputs
  • 📋 Todo Validation: Comprehensive validation with actionability checks, complexity scoring, and time estimates
  • 🔄 MCP Integration: Native support for Model Context Protocol via PMCP SDK
  • 🛡️ Quality Gates: PMAT (Paiml MCP Agent Toolkit) integration for quality enforcement
  • 🧪 Extensive Testing: 81%+ test coverage with property testing, fuzz testing, and edge case coverage
  • ⚡ High Performance: Optimized Handlebars engine with caching and validation
  • 📦 Multiple Formats: Support for YAML, JSON, Markdown, and plain text output
  • 🔍 Dependency Analysis: Circular dependency detection and critical path calculation

📚 Quick Start

Add PDMT to your Cargo.toml:

[dependencies]
pdmt = "1.0.0"

# Optional features
pdmt = { version = "1.0.0", features = ["quality-proxy", "mcp-tools", "todo-validation"] }

Basic Usage

use pdmt::{TemplateEngine, models::todo::TodoInput};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    // Create template engine
    let mut engine = TemplateEngine::new();
    engine.load_builtin_templates().await?;
    
    // Create todo input
    let input = TodoInput {
        project_name: "My Project".to_string(),
        requirements: vec![
            "Implement user authentication".to_string(),
            "Create REST API endpoints".to_string(),
            "Add comprehensive tests".to_string(),
        ],
        granularity: pdmt::models::todo::TodoGranularity::High,
        include_estimates: true,
        max_todos: Some(10),
        ..Default::default()
    };
    
    // Generate deterministic todo list
    let result = engine.generate("todo_list", input).await?;
    
    println!("Generated todos:\n{}", result.content);
    println!("Template used: {}", result.template_id);
    
    Ok(())
}

Advanced Features

Todo Validation

use pdmt::{validators::todo::TodoValidator, models::todo::TodoList};

let validator = TodoValidator::new();
let mut todo_list = TodoList::new();

// Add todos...
todo_list.add_todo(Todo::new("Implement authentication system"));

let validation_result = validator.validate_todo_list(&todo_list);

if validation_result.is_valid {
    println!("✅ All todos are valid!");
    println!("Quality score: {:.2}", validation_result.quality_score);
} else {
    println!("❌ Validation issues found:");
    for issue in validation_result.issues {
        println!("  - {}: {}", issue.category, issue.message);
    }
}

🏗️ Architecture

PDMT is built with a modular architecture:

  • Template Engine: Handlebars-based deterministic generation
  • Content Models: Todo lists, generated content, and metadata
  • Quality Proxy: PMAT integration for quality enforcement
  • MCP Integration: Native Model Context Protocol support
  • Validators: Comprehensive validation for todos and content

🎯 Feature Flags

[dependencies]
pdmt = { 
    version = "1.0.0", 
    features = [
        "quality-proxy",     # PMAT quality enforcement
        "mcp-tools",        # MCP/PMCP integration  
        "todo-validation",  # Advanced todo validation
        "property-tests",   # Property testing support
    ]
}

📝 YAML Template System

PDMT uses a powerful YAML-based template system for deterministic content generation:

Template Structure

# Basic template structure
id: todo_list
version: "1.0.0"
extends: base  # Optional inheritance

metadata:
  provider: "deterministic"
  description: "Generate deterministic todo lists"
  parameters:
    temperature: 0.0  # Ensures deterministic output
    
input_schema:
  type: object
  required: ["project_name", "requirements"]
  properties:
    project_name:
      type: string
      description: "Name of the project"
    requirements:
      type: array
      items:
        type: string
      description: "List of requirements to convert to tasks"
    granularity:
      type: string
      enum: ["low", "medium", "high"]
      default: "high"
      
validation:
  deterministic_only: true
  quality_gates:
    max_complexity_per_task: 8
    require_time_estimates: true
    require_specific_actions: true
    min_task_detail_chars: 10
    max_task_detail_chars: 100
    
prompt_template: |
  Generate a deterministic todo list for "{{project_name}}".
  Requirements:
  {{#each requirements}}
  - {{this}}
  {{/each}}

Built-in Templates

PDMT provides several built-in templates:

Template ID Description Use Case
todo_list Deterministic todo generation Project planning, task breakdown
project_scaffold Project structure generation New project setup
base Base template for inheritance Template extension

Custom Templates

Create custom templates by extending the base template:

# custom_template.yml
id: custom_engineering_todos
version: "1.0.0"
extends: todo_list

metadata:
  description: "Engineering-specific todo generation"
  
validation:
  quality_gates:
    require_test_specifications: true
    require_documentation: true
    enforce_dependency_tracking: true
    
output_schema:
  format: yaml
  structure: |
    todos:
      - id: string
        content: string
        estimated_hours: number
        test_requirements: [string]
        documentation_requirements: [string]

Loading Templates

use pdmt::TemplateEngine;

let mut engine = TemplateEngine::new();

// Load built-in templates
engine.load_builtin_templates().await?;

// Load custom template from file
engine.load_template_file("templates/custom_template.yml").await?;

// Load template from string
let yaml_content = std::fs::read_to_string("template.yml")?;
engine.load_template(&yaml_content)?;

📖 Examples

The examples/ directory contains comprehensive examples demonstrating PDMT's deterministic templating capabilities:

📋 Todo Generation

Generate deterministic, quality-enforced todo lists for project planning:

cargo run --example todo_generation --features="full" -- \
  --project "My Project" \
  --requirement "Implement feature X" \
  --requirement "Add tests for Y" \
  --granularity high \
  --max-todos 10 \
  --format yaml

📄 Resume Builder

Create professional resumes with consistent formatting:

cargo run --example resume_builder --features="full" -- \
  --name "Jane Doe" \
  --title "Senior Software Engineer" \
  --email "[email protected]" \
  --format markdown

# Interactive mode for detailed input
cargo run --example resume_builder --features="full" -- --interactive

📚 README Builder

Generate well-structured README files with standardized sections:

cargo run --example readme_builder --features="full" -- \
  --name "my-awesome-project" \
  --description "A powerful Rust library" \
  --language rust \
  --github-user myusername \
  --badges \
  --output README.md

# Interactive mode for guided setup
cargo run --example readme_builder --features="full" -- --interactive

Each example demonstrates:

  • Deterministic output - Same inputs always produce identical results
  • YAML templating - Structured templates for consistent formatting
  • Quality enforcement - Validation and best practices built-in
  • Multiple output formats - Support for various file formats

🛡️ Quality Enforcement

PDMT integrates with PAIML's quality gate system for comprehensive validation:

Quality Gates

Quality Check Description Threshold
Actionability Tasks must start with action verbs 100% required
Complexity Cyclomatic complexity limits Max score: 8
Time Estimates Realistic effort estimation 0.5-40 hours
Length Validation Task description constraints 10-100 chars
Dependency Tracking Circular dependency detection Zero cycles
SATD Detection No TODO/FIXME/HACK comments Zero tolerance

Validation Example

use pdmt::{
    validators::todo::{TodoValidator, TodoQualityConfig},
    models::todo::{TodoList, Todo}
};

// Configure quality requirements
let config = TodoQualityConfig {
    max_complexity_per_task: Some(8),
    require_time_estimates: true,
    require_specific_actions: true,
    min_task_detail_chars: Some(10),
    max_task_detail_chars: Some(100),
    ..Default::default()
};

let validator = TodoValidator::with_config(config);
let todo_list = TodoList::new();

// Validate todos
let result = validator.validate_todo_list(&todo_list);

// Check quality metrics
println!("Actionable tasks: {}/{}", 
    result.metrics.actionable_count, 
    result.metrics.total_count);
println!("Average complexity: {:.2}", 
    result.metrics.avg_complexity);

🧪 Testing & Quality

PDMT maintains high quality standards:

  • 81%+ Test Coverage: Comprehensive test suite
  • Fuzz Testing: Automated robustness testing
  • Property Testing: Invariant verification
  • Strict Linting: clippy::pedantic + clippy::nursery
# Run tests with coverage
make test

# Run all quality checks
make all

# Run linting  
make lint

# Run formatting
make format

# Generate coverage report
make coverage

🤝 Contributing

We welcome contributions! Areas include:

  • 🐛 Bug Fixes
  • New Features
  • 📚 Documentation
  • 🧪 Testing

Development Setup

git clone https://github.com/paiml/pdmt
cd pdmt
cargo build --all-features
make test

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

📞 Support

from github.com/paiml/pdmt

Установка Pdmt

У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.

▸ github.com/paiml/pdmt

FAQ

Pdmt MCP бесплатный?

Да, Pdmt MCP бесплатный — установка в пару кликов через Unyly без оплаты.

Нужен ли API-ключ для Pdmt?

Нет, Pdmt работает без API-ключей и переменных окружения.

Pdmt — hosted или self-hosted?

Self-hosted: сервер запускается локально на твоей машине командой из раздела установки.

Как установить Pdmt в Claude Desktop, Claude Code или Cursor?

Открой Pdmt на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.

Похожие MCP

Notion

Read and write pages in your workspace

Notionавтор: Notion

Linear

Issues, cycles, triage — from Claude

Linearавтор: Linear
Pro

Google Drive

Search and read your Drive files

Googleавтор: Google

mindsdb/mindsdb

Connect and unify data across various platforms and databases with [MindsDB as a single MCP server](https://docs.mindsdb.com/mcp/overview).

mindsdbавтор: mindsdb

fulcradynamics/fulcra-context-mcp

MCP server for accessing personal health and biometric data including sleep stages, heart rate, HRV, glucose, workouts, calendar, and location via the Fulcra Li

fulcradynamicsавтор: fulcradynamics

aymericzip/intlayer

A MCP Server that enhance your IDE with AI-powered assistance for Intlayer i18n / CMS tool: smart CLI access, access to the docs.

aymericzipавтор: aymericzip

rinadelph/Agent-MCP

A framework for creating multi-agent systems using MCP for coordinated AI collaboration, featuring task management, shared context, and RAG capabilities.

rinadelphавтор: rinadelph

WhenLabs-org/when

Developer toolkit: auto-detect stack for AI context files, catch port conflicts, validate .env schemas, spot docs drift, audit dependency licenses, and time cod

WhenLabs-orgавтор: WhenLabs-org

Beltran12138/wecom-docs-mcp-server

WeCom (Enterprise WeChat) document operations via MCP: create, read, and edit Docs and Smartsheets (9 tools). Fills the doc-CRUD gap — existing WeCom MCP server

Beltran12138автор: Beltran12138

madbonez/caldav-mcp

Universal MCP server for CalDAV protocol integration. Works with any CalDAV-compatible calendar server including Yandex Calendar, Google Calendar (via CalDAV),

madbonezавтор: madbonez

Compare Pdmt with

Не уверен что выбрать?

Найди свой стек за 60 секунд

Автор?

Embed-бейдж для README

Похожее

Все в категории productivity