Skip to content

Commit 8d393ff

Browse files
committed
fix: improve MCP server communication and logging
1 parent d966485 commit 8d393ff

File tree

1 file changed

+28
-6
lines changed

1 file changed

+28
-6
lines changed

src/claude_mcp.py

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,49 +52,71 @@ def start(self):
5252
try:
5353
# Send hello message
5454
self._send_hello()
55+
logger.info("Sent hello message to MCP client")
5556

5657
# Process incoming messages
58+
logger.info("Waiting for incoming messages from MCP client...")
59+
5760
for line in self.stdin:
58-
if not line.strip():
61+
line = line.strip()
62+
if not line:
63+
logger.debug("Received empty line, continuing")
5964
continue
6065

66+
logger.info(f"Received message: {line[:100]}...")
67+
6168
try:
6269
message = json.loads(line)
6370
message_type = message.get("type")
6471

6572
if message_type == MESSAGE_TYPE_READY:
6673
logger.info("MCP client is ready")
6774
elif message_type == MESSAGE_TYPE_TOOL_CALL:
75+
logger.info(f"Handling tool call: {message.get('tool', {}).get('name')}")
6876
self._handle_tool_call(message)
6977
elif message_type == MESSAGE_TYPE_RESOURCE_REQUEST:
78+
logger.info(f"Handling resource request: {message.get('uri')}")
7079
self._handle_resource_request(message)
7180
elif message_type == MESSAGE_TYPE_PROMPT_REQUEST:
81+
logger.info(f"Handling prompt request: {message.get('prompt', {}).get('name')}")
7282
self._handle_prompt_request(message)
7383
elif message_type == MESSAGE_TYPE_BYE:
7484
logger.info("MCP client is disconnecting")
7585
break
7686
else:
87+
logger.warning(f"Unknown message type: {message_type}")
7788
self._send_error(f"Unknown message type: {message_type}")
7889

79-
except json.JSONDecodeError:
90+
except json.JSONDecodeError as e:
91+
logger.error(f"Invalid JSON in message: {e}")
8092
self._send_error("Invalid JSON in message")
8193
except Exception as e:
94+
logger.error(f"Error processing message: {e}")
8295
self._send_error(f"Error processing message: {e}")
8396

97+
logger.info("Message processing loop exited normally")
98+
8499
except KeyboardInterrupt:
85100
logger.info("MCP server was interrupted")
86101
except Exception as e:
87102
logger.error(f"MCP server error: {e}")
88103
self._send_error(f"Server error: {e}")
89104

90-
# Send goodbye message
105+
# Send goodbye message only if not already sent
106+
logger.info("Sending goodbye message")
91107
self._send_bye()
108+
logger.info("MCP server shutting down")
92109

93110
def _send_message(self, message: Dict[str, Any]):
94111
"""Send a message to the client"""
95-
json_str = json.dumps(message)
96-
self.stdout.write(json_str + "\n")
97-
self.stdout.flush()
112+
try:
113+
json_str = json.dumps(message)
114+
self.stdout.write(json_str + "\n")
115+
self.stdout.flush()
116+
logger.debug(f"Sent message: {json_str[:100]}...")
117+
except Exception as e:
118+
logger.error(f"Error sending message: {e}")
119+
# Don't raise - we want to continue processing if possible
98120

99121
def _send_hello(self):
100122
"""Send hello message with server capabilities"""

0 commit comments

Comments
 (0)