mcp-gradio-test / file_explorer.py
ritikjain51's picture
Upload 7 files
2ef9bf7 verified
# File explorer tools
"""
MCP tools for exploring files and directories.
"""
import os
from mcp.server.fastmcp import FastMCP
def register_file_explorer_tools(mcp: FastMCP):
"""Register file explorer tools with the MCP server."""
@mcp.tool()
def list_directory(path: str) -> list:
"""
List contents of a directory.
Args:
path: Directory path to list
Returns:
List of files and directories
"""
if not os.path.exists(path):
return {"error": f"Path {path} does not exist"}
if not os.path.isdir(path):
return {"error": f"Path {path} is not a directory"}
try:
contents = os.listdir(path)
result = []
for item in contents:
item_path = os.path.join(path, item)
item_type = "directory" if os.path.isdir(item_path) else "file"
result.append({
"name": item,
"type": item_type,
"path": item_path
})
return result
except Exception as e:
return {"error": str(e)}
@mcp.tool()
def file_info(path: str) -> dict:
"""
Get information about a file.
Args:
path: Path to the file
Returns:
Information about the file
"""
if not os.path.exists(path):
return {"error": f"Path {path} does not exist"}
try:
stat_info = os.stat(path)
return {
"name": os.path.basename(path),
"path": os.path.abspath(path),
"size": stat_info.st_size,
"last_modified": stat_info.st_mtime,
"is_directory": os.path.isdir(path),
"is_file": os.path.isfile(path)
}
except Exception as e:
return {"error": str(e)}