Command Palette

Search for a command to run...

UnylyUnyly
Browse all

Ptp

FreeNot checked

PTP MCP Server for OpenShift PTP monitoring and analysis

GitHubEmbed

About

PTP MCP Server for OpenShift PTP monitoring and analysis

README

A Model Context Protocol (MCP) server for monitoring and analyzing Precision Time Protocol (PTP) systems in OpenShift clusters.

🚀 Features

  • PTP Configuration Analysis: Parse and validate PTP configurations from OpenShift
  • Real-time Log Monitoring: Access linuxptp daemon logs with intelligent parsing
  • Natural Language Queries: Ask questions about PTP status in plain English
  • Health Monitoring: Comprehensive PTP system health checks
  • Synchronization Analysis: Monitor sync status, offsets, and BMCA state
  • Clock Hierarchy: Track grandmaster and clock hierarchy information
  • ITU-T Compliance: Validate configurations against ITU-T G.8275.1 standards

📋 Prerequisites

  • Python 3.8 or higher
  • OpenShift CLI (oc) installed and configured
  • Access to OpenShift cluster with PTP operator installed
  • PTP namespace (openshift-ptp) exists

🛠️ Installation

  1. Clone the repository:

    git clone https://github.com/aneeshkp/ptp-mcp-server.git
    cd ptp-mcp-server
    
  2. Install dependencies:

    pip install -r requirements.txt
    
  3. Verify OpenShift access:

    oc whoami
    oc get namespace openshift-ptp
    

🧪 Quick Testing

Run the comprehensive test suite:

python quick_test.py

Expected output:

🔍 PTP MCP Server API Quick Test
==================================================
Tests Passed: 8/8
Success Rate: 100.0%
🎉 ALL TESTS PASSED! Your API is ready for agent integration.

📚 API Endpoints

1. Configuration API

from ptp_tools import PTPTools
tools = PTPTools()
result = await tools.get_ptp_config({"namespace": "openshift-ptp"})

2. Logs API

result = await tools.get_ptp_logs({"lines": 1000})

3. Search API

result = await tools.search_logs({"query": "dpll", "time_range": "last_hour"})

4. Health API

result = await tools.check_ptp_health({"check_config": True, "check_sync": True})

5. Natural Language API

result = await tools.query_ptp({"question": "What is the current grandmaster?"})

6. Grandmaster Status API

result = await tools.get_grandmaster_status({"detailed": True})

7. Sync Status API

result = await tools.analyze_sync_status({"include_offsets": True})

8. Clock Hierarchy API

result = await tools.get_clock_hierarchy({"include_ports": True})

🚀 Usage Examples

Basic Health Check

import asyncio
from ptp_tools import PTPTools

async def check_health():
    tools = PTPTools()
    health = await tools.check_ptp_health({})
    
    if health["success"]:
        print(f"Status: {health['overall_status']}")
        for check_name, result in health["checks"].items():
            print(f"{check_name}: {result}")
    else:
        print(f"Error: {health.get('error')}")

asyncio.run(check_health())

Natural Language Query

async def ask_question():
    tools = PTPTools()
    response = await tools.query_ptp({
        "question": "What is the current grandmaster?"
    })
    
    if response["success"]:
        print(f"Answer: {response['response']}")
    else:
        print(f"Error: {response.get('error')}")

asyncio.run(ask_question())

Log Analysis

async def analyze_logs():
    tools = PTPTools()
    
    # Get recent logs
    logs = await tools.get_ptp_logs({"lines": 500})
    
    # Search for specific events
    sync_loss = await tools.search_logs({"query": "sync loss"})
    clock_changes = await tools.search_logs({"query": "clockClass change"})
    
    print(f"Total logs: {logs['logs_count']}")
    print(f"Sync loss events: {sync_loss['matching_logs']}")
    print(f"Clock changes: {clock_changes['matching_logs']}")

asyncio.run(analyze_logs())

🔧 MCP Server

Start the MCP server for integration with MCP-compatible clients:

python ptp_mcp_server.py

The server provides the following MCP tools:

  • get_ptp_config - Get PTP configuration
  • get_ptp_logs - Get linuxptp daemon logs
  • search_logs - Search logs for patterns
  • get_grandmaster_status - Get grandmaster info
  • analyze_sync_status - Analyze sync status
  • get_clock_hierarchy - Get clock hierarchy
  • check_ptp_health - Comprehensive health check
  • query_ptp - Natural language interface

📊 Performance

  • Average Response Time: 0.78s
  • Fastest API: Configuration API (0.22s)
  • Concurrent Operations: 4/4 successful in 2.45s
  • Success Rate: 100% (8/8 endpoints)

🏗️ Architecture

ptp-mcp-server/
├── ptp_mcp_server.py      # Main MCP server
├── ptp_config_parser.py   # PTP configuration parser
├── ptp_log_parser.py      # Linuxptp log parser
├── ptp_model.py           # PTP data models
├── ptp_query_engine.py    # Natural language query engine
├── ptp_tools.py           # API endpoint implementations
├── quick_test.py          # Quick test suite
├── performance_test.py    # Performance benchmarking
└── requirements.txt       # Python dependencies

🔍 PTP Concepts Supported

  • BMCA (Best Master Clock Algorithm): Clock selection and hierarchy
  • Clock Types: OC (Ordinary Clock), BC (Boundary Clock), TC (Transparent Clock)
  • ITU-T G.8275.1: Profile compliance and validation
  • Synchronization: Offset tracking, frequency adjustment, sync status
  • Grandmaster: Primary time source identification and status
  • Clock Class: Quality and traceability indicators
  • Domain Numbers: PTP domain configuration (24-43 for ITU-T)

🧪 Testing

Run All Tests

python quick_test.py

Performance Testing

python performance_test.py

Individual Component Testing

# Test configuration parser
python -c "from ptp_config_parser import PTPConfigParser; import asyncio; asyncio.run(PTPConfigParser().get_ptp_configs())"

# Test log parser
python -c "from ptp_log_parser import PTPLogParser; import asyncio; asyncio.run(PTPLogParser().get_ptp_logs())"

📖 Documentation

🤝 Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

📄 License

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

🙏 Acknowledgments

  • OpenShift PTP Operator team
  • Linuxptp project
  • Model Context Protocol (MCP) community

📞 Support

For issues and questions:


Status: ✅ Production Ready
Last Updated: January 2025
Version: 1.0.0

from github.com/aneeshkp/ptp-mcp-server

Installing Ptp

This server has no published package — it is built from source. Open the repository and follow its README.

▸ github.com/aneeshkp/ptp-mcp-server

FAQ

Is Ptp MCP free?

Yes, Ptp MCP is free — one-click install via Unyly at no cost.

Does Ptp need an API key?

No, Ptp runs without API keys or environment variables.

Is Ptp hosted or self-hosted?

Self-hosted: the server runs locally on your machine via the install command above.

How do I install Ptp in Claude Desktop, Claude Code or Cursor?

Open Ptp on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.

Related MCPs

Compare Ptp with

Not sure what to pick?

Find your stack in 60 seconds

Author?

Embed badge for your README

Browse similar

All development MCPs