Files
2025-11-29 18:48:38 +08:00

2.5 KiB

description
description
Execute a saved search by ID or name

Execute Saved Search Command

Execute a previously saved search query.

Usage

Search ID or Name: {{args}}

Instructions

Execute a saved search using its ID or name.

Implementation

import httpx
import json

search_ref = "{{args}}"

if not search_ref or search_ref == "{{args}}":
    print("Usage: /rag-exec <search_id_or_name>")
    print("\nList saved searches with: /rag-searches")
else:
    try:
        # First, try to find by name
        response = httpx.get(
            "http://127.0.0.1:8765/searches",
            timeout=10.0
        )

        search_id = None

        if response.status_code == 200:
            result = response.json()
            searches = result.get("searches", [])

            # Look for exact name match
            for search in searches:
                if search.get("name") == search_ref or search.get("id") == search_ref:
                    search_id = search.get("id")
                    break

        if not search_id:
            search_id = search_ref  # Assume it's an ID

        # Execute the search
        exec_response = httpx.post(
            f"http://127.0.0.1:8765/searches/{search_id}/execute",
            timeout=30.0
        )

        if exec_response.status_code == 200:
            result = exec_response.json()
            search_info = result.get("search", {})
            results = result.get("results", [])

            print(f"[?] Executing: {search_info.get('name', '')}")
            print(f"   Query: {search_info.get('query', '')}")
            print(f"   Results: {len(results)}")
            print()

            for i, item in enumerate(results, 1):
                meta = item.get("metadata", {})
                file_path = meta.get("file_path", "unknown")
                score = item.get("score", 0)

                print(f"{i}. {file_path}")
                print(f"   Relevance: {score:.2%}")

                content = item.get("content", "")
                if len(content) > 150:
                    content = content[:147] + "..."
                print(f"   {content}")
                print()

        elif exec_response.status_code == 404:
            print(f"[X] Search not found: {search_ref}")
            print("List available searches with: /rag-searches")
        else:
            print(f"[X] Server error: {exec_response.status_code}")

    except Exception as e:
        print(f"[X] Error: {e}")
        print("Make sure the MCP server is running on port 8000.")

Execute this code to run a saved search.