space-sue commited on
Commit
c53b4d4
·
1 Parent(s): 271616f

mcp server

Browse files
Files changed (1) hide show
  1. app.py +71 -2
app.py CHANGED
@@ -1,11 +1,77 @@
1
  import gradio as gr
2
  from huggingface_hub import InferenceClient
 
 
 
 
 
 
3
 
4
  """
5
  For more information on `huggingface_hub` Inference API support, please check the docs: https://huggingface.co/docs/huggingface_hub/v0.22.2/en/guides/inference
6
  """
7
  client = InferenceClient("HuggingFaceH4/zephyr-7b-beta")
 
8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9
 
10
  def respond(
11
  message,
@@ -15,6 +81,10 @@ def respond(
15
  temperature,
16
  top_p,
17
  ):
 
 
 
 
18
  messages = [{"role": "system", "content": system_message}]
19
 
20
  for val in history:
@@ -35,7 +105,6 @@ def respond(
35
  top_p=top_p,
36
  ):
37
  token = message.choices[0].delta.content
38
-
39
  response += token
40
  yield response
41
 
@@ -61,4 +130,4 @@ demo = gr.ChatInterface(
61
 
62
 
63
  if __name__ == "__main__":
64
- demo.launch()
 
1
  import gradio as gr
2
  from huggingface_hub import InferenceClient
3
+ import cv2
4
+ import numpy as np
5
+ from mcp import MCP
6
+ import time
7
+ import os
8
+ from datetime import datetime
9
 
10
  """
11
  For more information on `huggingface_hub` Inference API support, please check the docs: https://huggingface.co/docs/huggingface_hub/v0.22.2/en/guides/inference
12
  """
13
  client = InferenceClient("HuggingFaceH4/zephyr-7b-beta")
14
+ mcp = MCP()
15
 
16
+ def detect_fire(frame):
17
+ # Convert frame to HSV color space
18
+ hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
19
+
20
+ # Define range for fire colors (red and orange)
21
+ lower_fire = np.array([0, 50, 50])
22
+ upper_fire = np.array([30, 255, 255])
23
+
24
+ # Create mask for fire colors
25
+ mask = cv2.inRange(hsv, lower_fire, upper_fire)
26
+
27
+ # Calculate percentage of fire-colored pixels
28
+ fire_percentage = (np.sum(mask > 0) / (frame.shape[0] * frame.shape[1])) * 100
29
+
30
+ return fire_percentage > 5 # Return True if more than 5% of pixels are fire-colored
31
+
32
+ def send_alert(detection_type, location):
33
+ # Get current timestamp
34
+ timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
35
+ message = f"{detection_type} detected at {location} on {timestamp}"
36
+
37
+ # Send SMS using MCP
38
+ mcp.sms.send(
39
+ to="YOUR_PHONE_NUMBER", # Replace with actual phone number
40
+ message=message
41
+ )
42
+
43
+ # Send email using MCP
44
+ mcp.email.send(
45
+ to="YOUR_EMAIL", # Replace with actual email
46
+ subject=f"{detection_type} Alert",
47
+ body=message
48
+ )
49
+
50
+ def check_for_fire():
51
+ # Request webcam access
52
+ cap = cv2.VideoCapture(0)
53
+ if not cap.isOpened():
54
+ return "Error: Could not access webcam"
55
+
56
+ # Read a frame
57
+ ret, frame = cap.read()
58
+ if not ret:
59
+ cap.release()
60
+ return "Error: Could not read from webcam"
61
+
62
+ # Detect fire
63
+ fire_detected = detect_fire(frame)
64
+
65
+ # Release webcam
66
+ cap.release()
67
+
68
+ if fire_detected:
69
+ # Get location (you might want to implement a more sophisticated location detection)
70
+ location = "Webcam Location" # Replace with actual location detection
71
+ send_alert("Fire", location)
72
+ return f"Fire detected at {location}! Alerts have been sent."
73
+ else:
74
+ return "No fire detected"
75
 
76
  def respond(
77
  message,
 
81
  temperature,
82
  top_p,
83
  ):
84
+ # Check if user wants to detect fire
85
+ if "detect fire" in message.lower():
86
+ return check_for_fire()
87
+
88
  messages = [{"role": "system", "content": system_message}]
89
 
90
  for val in history:
 
105
  top_p=top_p,
106
  ):
107
  token = message.choices[0].delta.content
 
108
  response += token
109
  yield response
110
 
 
130
 
131
 
132
  if __name__ == "__main__":
133
+ demo.launch(mcp_server=True)