From 88901d4187ca6866c454945ed841bc012ef53613 Mon Sep 17 00:00:00 2001 From: Sidney Marvin Fricke Date: Wed, 24 Jun 2026 12:30:38 +0200 Subject: [PATCH] log executed commands to server stdout exec, pty_send, and job_run each emit an INFO line so docker compose logs shows what the agent is running. --- server/main.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/server/main.py b/server/main.py index 638378d..fe01021 100644 --- a/server/main.py +++ b/server/main.py @@ -5,6 +5,7 @@ Implements MCP Streamable HTTP transport (JSON-RPC 2.0) import asyncio import json +import logging import os import re import signal @@ -14,6 +15,9 @@ import time import uuid from typing import Any +logging.basicConfig(level=logging.INFO, format="%(asctime)s [%(levelname)s] %(message)s") +log = logging.getLogger("mcp") + import pyte import ptyprocess import uvicorn @@ -247,6 +251,7 @@ async def _dispatch(name: str, args: dict) -> dict: if name == "exec": cmd = args.get("cmd", "") timeout = int(args.get("timeout", 30)) + log.info("exec: %s", cmd) try: r = subprocess.run( cmd, shell=True, capture_output=True, text=True, @@ -267,6 +272,7 @@ async def _dispatch(name: str, args: dict) -> dict: elif name == "pty_send": sess = _get_pty(args["session_id"]) text = _decode_escapes(args.get("text", "")) + log.info("pty_send [%s]: %r", sess.id[:8], text) sess.send(text) return {"sent": len(text)} @@ -293,6 +299,7 @@ async def _dispatch(name: str, args: dict) -> dict: elif name == "job_run": job = BackgroundJob(args.get("cmd", "")) + log.info("job_run [%s]: %s", job.id[:8], job.cmd) _jobs[job.id] = job return {"job_id": job.id, "status": job.status}