feat(mcp): reserve AI-driven MCP server support for toolkit
This commit is contained in:
parent
abd3d770e9
commit
00724226e9
76
scripts/mcp_server.py
Executable file
76
scripts/mcp_server.py
Executable file
@ -0,0 +1,76 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
"""
|
||||||
|
MCP Server for Site Migration Toolkit.
|
||||||
|
Exposes toolkit actions (migrate, backup, restore) as AI-driven MCP tools.
|
||||||
|
|
||||||
|
Dependencies:
|
||||||
|
pip install mcp
|
||||||
|
"""
|
||||||
|
|
||||||
|
import subprocess
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
try:
|
||||||
|
from mcp.server.fastmcp import FastMCP
|
||||||
|
except ImportError:
|
||||||
|
print("[ERROR] 'mcp' package not found. Install it with: pip install mcp", file=sys.stderr)
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
# Initialize FastMCP Server
|
||||||
|
mcp = FastMCP(
|
||||||
|
name="Site-Migration-Toolkit-MCP",
|
||||||
|
dependencies=["mcp"]
|
||||||
|
)
|
||||||
|
|
||||||
|
TOOLKIT_ROOT = Path(__file__).resolve().parent.parent
|
||||||
|
RUN_SCRIPT = TOOLKIT_ROOT / "scripts" / "run_toolkit.py"
|
||||||
|
|
||||||
|
def run_toolkit_action(action: str, extra_args: str = "") -> str:
|
||||||
|
"""Helper to execute the run_toolkit.py script"""
|
||||||
|
cmd = [sys.executable, str(RUN_SCRIPT), action]
|
||||||
|
if extra_args:
|
||||||
|
# Split args safely (assuming simple space separation for now)
|
||||||
|
import shlex
|
||||||
|
cmd.extend(shlex.split(extra_args))
|
||||||
|
|
||||||
|
try:
|
||||||
|
result = subprocess.run(cmd, capture_output=True, text=True, check=True)
|
||||||
|
return f"Action '{action}' completed successfully.\n\nOutput:\n{result.stdout}"
|
||||||
|
except subprocess.CalledProcessError as e:
|
||||||
|
return f"Action '{action}' failed with exit code {e.returncode}.\n\nError Output:\n{e.stderr}\n\nStandard Output:\n{e.stdout}"
|
||||||
|
|
||||||
|
|
||||||
|
@mcp.tool()
|
||||||
|
def migrate_site(target_domain: str, source_domain: str) -> str:
|
||||||
|
"""
|
||||||
|
Execute full site migration from source to target.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
target_domain: The base domain of the target environment (e.g. onwalk.net)
|
||||||
|
source_domain: The base domain of the source environment (e.g. svc.plus)
|
||||||
|
"""
|
||||||
|
args = f"-e target_domain={target_domain} -e migration_flow.source.domain_base={source_domain}"
|
||||||
|
return run_toolkit_action("migrate", args)
|
||||||
|
|
||||||
|
|
||||||
|
@mcp.tool()
|
||||||
|
def backup_site() -> str:
|
||||||
|
"""
|
||||||
|
Execute offline cold backup of the AI Workspace site.
|
||||||
|
"""
|
||||||
|
return run_toolkit_action("backup")
|
||||||
|
|
||||||
|
|
||||||
|
@mcp.tool()
|
||||||
|
def restore_site() -> str:
|
||||||
|
"""
|
||||||
|
Execute offline restore of the AI Workspace site from a backup archive.
|
||||||
|
"""
|
||||||
|
return run_toolkit_action("restore")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
# Start the stdio MCP server for agent integration
|
||||||
|
mcp.run()
|
||||||
Loading…
Reference in New Issue
Block a user