Skip to main content
Glama

xigua-MCP

by xiguaxiaome
web_tools.py5.14 kB
# -*- coding: utf-8 -*- import webbrowser import platform import subprocess import time # 用于演示,实际应用中可能不需要 from mcp.server.fastmcp import FastMCP def register_web_tools(mcp: FastMCP): @mcp.tool() def open_webpage(url: str) -> dict: """ 打开指定的网页 参数: - url: 要打开的网页地址 返回: - 操作结果状态 """ try: # webbrowser.open_new_tab(url) 可以尝试在新标签页打开,但仍然无法控制 webbrowser.open(url) return {"success": True, "result": f"成功打开网页: {url}"} except Exception as e: return {"success": False, "result": str(e)} @mcp.tool() def close_all_browser_process(browser_name: str = None) -> dict: """ 尝试关闭所有指定浏览器的进程。 注意:这是一个非常粗暴的操作,会关闭所有该浏览器的窗口, 可能导致用户数据丢失,且不保证能关闭通过 open_webpage 打开的特定标签页。 参数: - browser_name: 要关闭的浏览器名称,例如 "chrome", "firefox", "safari", "edge"。 如果为 None,则尝试关闭常见的浏览器。 返回: - 操作结果状态 """ system = platform.system() if browser_name: browsers_to_kill = [browser_name.lower()] else: # 默认尝试关闭一些常见的浏览器 browsers_to_kill = ["chrome", "firefox", "safari", "msedge", "iexplore"] results = {} for b_name in browsers_to_kill: try: if system == "Windows": # 对于 Windows,根据浏览器名称尝试不同的进程名 if b_name == "chrome": process_name = "chrome.exe" elif b_name == "firefox": process_name = "firefox.exe" elif b_name == "msedge": process_name = "msedge.exe" elif b_name == "iexplore": process_name = "iexplore.exe" else: process_name = b_name + ".exe" # 尝试通用模式 subprocess.run(["taskkill", "/IM", process_name, "/F"], check=True, capture_output=True) results[b_name] = {"success": True, "message": f"尝试关闭 {b_name} 进程成功。"} elif system == "Darwin": # macOS if b_name == "chrome": process_name = "Google Chrome" elif b_name == "firefox": process_name = "Firefox" elif b_name == "safari": process_name = "Safari" else: process_name = b_name # 尝试通用模式 subprocess.run(["killall", process_name], check=True, capture_output=True) results[b_name] = {"success": True, "message": f"尝试关闭 {b_name} 进程成功。"} elif system == "Linux": # Linux 类似 macOS,但进程名可能有所不同 if b_name == "chrome": process_name = "chrome" elif b_name == "firefox": process_name = "firefox" else: process_name = b_name subprocess.run(["killall", process_name], check=True, capture_output=True) results[b_name] = {"success": True, "message": f"尝试关闭 {b_name} 进程成功。"} else: results[b_name] = {"success": False, "message": f"不支持的操作系统: {system}"} except subprocess.CalledProcessError as e: results[b_name] = {"success": False, "message": f"关闭 {b_name} 进程失败: {e.stderr.decode().strip()}"} except Exception as e: results[b_name] = {"success": False, "message": f"关闭 {b_name} 进程时发生未知错误: {str(e)}"} return {"success": any(res["success"] for res in results.values()), "results": results} # 示例用法 (假设 FastMCP 实例 mcp 已经创建) # if __name__ == "__main__": # # 这是一个简化的 FastMCP 模拟,实际使用时需要 FastMCP 框架 # class MockFastMCP: # def tool(self): # def decorator(func): # print(f"Registered tool: {func.__name__}") # return func # return decorator # # mock_mcp = MockFastMCP() # register_web_tools(mock_mcp) # # # 演示打开和关闭 # print(mock_mcp.open_webpage("https://www.google.com")) # time.sleep(5) # 等待网页打开 # print(mock_mcp.close_browser_process(browser_name="chrome")) # 尝试关闭 Chrome # # 或者尝试关闭所有常见的浏览器 # # print(mock_mcp.close_browser_process())

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/xiguaxiaome/xigua-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server