oh-my-mcp
This server is a general-purpose MCP toolkit that lets an AI assistant control a computer, automate a browser, process data, run commands, and access the web.
Browser automation: open/close sessions, navigate, click, type, select, fill forms, take screenshots, run JavaScript, read console logs, manage cookies/tabs, monitor network requests, and inspect page content.
Computer use: capture screens, control mouse/keyboard, manage windows, and use the clipboard (via the Computer Use category).
File system: read, write, append, search, copy, delete, compare files, and manage directories.
Data processing: parse/convert/format JSON, CSV, XML, YAML, TOML; query and merge JSON; validate schemas.
Text processing: regex, encoding, email/URL extraction, text similarity, and diffing text.
Web & network: web search (with fallback engines and caching), fetch pages, extract titles/links, download files, check URL status, get headers, and make custom HTTP requests.
System monitoring: get system/CPU/memory/disk/process info and manage environment variables.
Utilities: generate UUIDs, hashes, random strings, passwords; date/time conversions; safe math evaluation.
Subagent AI orchestration: call external AI models (OpenAI/Anthropic), run parallel subtasks, and do conditional branching.
Command execution: run allowlisted commands securely with sanitization, timeouts, and audit logging.
Compression: create/extract ZIP/TAR archives with security features.
Provides web search capabilities using DuckDuckGo's search engine.
Enables delegation of subtasks to OpenAI's AI models for parallel execution and conditional branching.
Provides browser automation capabilities including page navigation, element interaction, screenshots, JavaScript execution, and multi-tab management using Selenium WebDriver.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@oh-my-mcp search the web for latest AI breakthroughs"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
oh-my-mcp
English | ไธญๆ
A powerful Model Context Protocol (MCP) server with 154 practical tools across 11 categories, built using FastMCP.
๐ Features
oh-my-mcp provides tools for:
๐ Browser Automation (33 tools): Selenium-based browser automation: navigation, interaction, screenshots, JS execution, console logs, cookies, network monitoring, form filling, multi-tab management
๐ฆ Compression (5 tools): ZIP/TAR compression and extraction with security features
๐ฅ๏ธ Computer Use (26 tools): AI desktop control: screen capture (multi-monitor, base64/file), mouse control (move/click/drag/scroll), keyboard input (typing/keys/hotkeys), clipboard access, window management, safety failsafe configuration
๐ Data Processing (15 tools): JSON, CSV, XML, YAML, TOML parsing and manipulation
โก Command Execution (5 tools): Secure allowlist-based command execution: run whitelisted commands with argument sanitization, timeout protection, output size limits and audit logging; manage the persistent command allowlist
๐ File System (16 tools): Read, write, search files and directories, file comparison
๐ค Subagent AI Orchestration (6 tools): Delegate subtasks to external AI models with parallel execution and cost tracking
๐ป System (11 tools): System info, CPU/memory monitoring, environment variables
๐ Text Processing (9 tools): Regex, encoding, email/URL extraction, text similarity
๐ ๏ธ Utilities (10 tools): UUID, hashing, date/time operations, math, password generation
๐ Web & Network (18 tools): Web search, page fetching, HTML parsing, downloads, HTTP API client, DNS lookup
Related MCP server: mcp-web-calc
๐ Documentation
The full index lives in docs/README.md โ every topic is
available in English (X.md, default) and Chinese (X.zh.md). Highlights:
Document | |
Installation | |
Tool Reference (all 146 tools) | |
Computer Use Guide | |
Setup Guide (Claude Desktop) | |
Command Execution | CONFIGURATION.md ยท see Tool Reference |
Build Guide | |
Architecture | |
Subagent Guide | |
Contributing | |
Changelog |
Tool counts and descriptions in the docs are generated from code โ see Documentation Generation.
๐ฆ Installation
git clone https://github.com/quyansiyuanwang/oh-my-mcp.git
cd oh-my-mcp
pip install -e . # or: uv sync --all-extrasConfigure Claude Desktop:
python -m mcp_server.cli.config --claudeStart the server:
python -m mcp_server.mainDetails: Installation Guide and Setup Guide.
๐ง Configuration
Logging
Logs are configured in mcp_server/utils.py โ level, destinations and format.
Security Features
Path validation: prevents path traversal attacks
Safe evaluation: math expressions only allow whitelisted operations
Masked values: sensitive environment variables are masked
Confirmation required: file deletion requires
confirm=TrueAllowlisted execution: commands only run after explicit trust
Retry logic: network operations retry up to 3 times
๐ก๏ธ Error Handling
All tools return JSON with descriptive messages instead of raising:
ValidationError โ invalid input parameters
NetworkError โ network request failures
FileOperationError โ file system errors
DataProcessingError โ data parsing/conversion errors
๐ Development
Project Structure
oh-my-mcp/
โโโ pyproject.toml # Dependencies & tool config
โโโ configure.py # Interactive setup wizard
โโโ src/
โโโ mcp_server/
โโโ main.py # Server entry point
โโโ utils.py # Infrastructure & utilities
โโโ command_executor.py # Secure command execution
โโโ cli/config.py # Configuration generator
โโโ tools/ # Tool plugins (11 categories, auto-discovered)Full layout: PROJECT_STRUCTURE.md.
Adding New Tools
from mcp_server.tools.registry import tool_handler
@tool_handler
def your_tool(param: str) -> str:
"""Tool description.
Args:
param: Parameter description
Returns:
Return value description
"""
...Documentation Generation
Tool counts and descriptions in the docs are generated from code (AST
analysis of @tool_handler docstrings + each plugin's config.yaml). After
adding, removing, or renaming tools run:
python scripts/docs/generate_docs.py --writeCI verifies docs are fresh with --check and fails if they are out of date.
Generated fragments live between <!-- DOCGEN:...:start/end --> markers; do
not edit inside them.
๐ค Contributing
See CONTRIBUTING.md. Client configuration details: SETUP_GUIDE.md.
๐ License
This project is provided as-is for educational and practical use.
๐ Links
Enjoy oh-my-mcp! ๐
Available Tools
116 toolsappend_fileC
Append content to a file.
Inputs: path (required), content (required), encoding. Returns: result
browser_backB
Navigate back in browser history.
Inputs: session_id (required). Returns: result
browser_clickA
Click an element on the page.
Waits for the element to be clickable before clicking.
Inputs: session_id (required), selector (required), by, timeout. Returns: result
browser_closeA
Close a browser session.
Closes the browser window and cleans up all associated resources.
Inputs: session_id (required). Returns: result
browser_close_tabC
Close a browser tab.
Inputs: session_id (required), tab_index. Returns: result
browser_config_getA
่ทๅๆต่งๅจ้ ็ฝฎ่ฎพ็ฝฎ
Inputs: key. Returns: result
browser_config_resetA
้็ฝฎๆต่งๅจ้ ็ฝฎไธบ้ป่ฎคๅผ
Returns: JSONๆ ผๅผ็ๆไฝ็ปๆ
Inputs: no named parameters. Returns: result
browser_config_setB
่ฎพ็ฝฎๆต่งๅจ้ ็ฝฎ๏ผไฟๅญๅฐ้ ็ฝฎๆไปถ๏ผ
Inputs: key (required), value (required). Returns: result
browser_delete_cookiesC
Delete browser cookies.
Inputs: session_id (required), name. Returns: result
browser_enable_network_logA
Enable network request logging.
After enabling, network requests will be captured and can be retrieved using browser_get_network_logs.
Inputs: session_id (required). Returns: result
browser_execute_jsC
Execute JavaScript code in the page context.
Inputs: session_id (required), script (required), args. Returns: result
browser_fill_formC
Fill multiple form fields at once.
Inputs: session_id (required), form_data (required), by. Returns: result
browser_find_elementsB
Find multiple elements matching a selector.
Inputs: session_id (required), selector (required), by, limit. Returns: result
browser_forwardB
Navigate forward in browser history.
Inputs: session_id (required). Returns: result
browser_get_console_logsA
Get browser console logs.
Captures console.log, console.error, console.warn, etc. from the page.
Inputs: session_id (required), level. Returns: result
browser_get_cookiesC
Get browser cookies.
Inputs: session_id (required), name. Returns: result
browser_get_element_attributeB
Get an attribute value from an element.
Inputs: session_id (required), selector (required), attribute (required), by. Returns: result
browser_get_network_logsA
Get captured network request logs.
Requires browser_enable_network_log to be called first.
Inputs: session_id (required), filter_url, filter_method, limit. Returns: result
browser_get_page_sourceB
Get the HTML source code of the current page.
Inputs: session_id (required), max_length. Returns: result
browser_get_textA
Get the text content of an element.
Inputs: session_id (required), selector, by, max_length. Returns: result
browser_get_urlA
Get the current page URL and title.
Inputs: session_id (required). Returns: result
browser_list_sessionsA
List all active browser sessions.
Returns information about all currently active browser sessions including their URLs, titles, and configuration.
Returns: JSON string with list of active sessions
Inputs: no named parameters. Returns: result
browser_list_tabsA
List all open tabs in the browser session.
Inputs: session_id (required). Returns: result
browser_new_tabC
Open a new browser tab.
Inputs: session_id (required), url. Returns: result
browser_openA
Open a new browser session and navigate to a URL.
Creates a new browser instance (Chrome or Edge) and navigates to the specified URL. Returns a unique session ID for subsequent operations.
Inputs: url (required), browser, headless, window_size, +2 more. Returns: result
browser_refreshC
Refresh the current page.
Inputs: session_id (required). Returns: result
browser_screenshotC
Take a screenshot of the page or a specific element.
Inputs: session_id (required), save_path, selector, by, +2 more. Returns: result
browser_scrollB
Scroll the page or scroll an element into view.
Inputs: session_id (required), direction, amount, selector, +1 more. Returns: result
browser_selectB
Select an option from a dropdown/select element.
Inputs: session_id (required), selector (required), value (required), by, +2 more. Returns: result
browser_set_cookieC
Set a browser cookie.
Inputs: session_id (required), name (required), value (required), domain, +4 more. Returns: result
browser_switch_tabA
Switch to a different browser tab by index.
Inputs: session_id (required), tab_index (required). Returns: result
browser_typeC
Type text into an input element.
Inputs: session_id (required), selector (required), text (required), by, +2 more. Returns: result
browser_wait_forB
Wait for an element to satisfy a condition.
Inputs: session_id (required), selector (required), by, timeout, +1 more. Returns: result
calculate_date_diffC
Calculate difference between two dates.
Inputs: date1 (required), date2 (required), unit. Returns: result
calculate_expressionA
Safely evaluate a mathematical expression.
Inputs: expression (required). Returns: result
calculate_text_similarityB
Calculate similarity between two text strings.
Inputs: text1 (required), text2 (required), method. Returns: result
check_password_strengthB
Check password strength and provide recommendations.
Inputs: password (required). Returns: result
check_url_statusB
Check the HTTP status of a URL.
Inputs: url (required), timeout. Returns: result
clear_search_cacheA
Clear the search cache.
This will remove all cached search results, forcing fresh searches.
Returns: JSON string with operation result
Inputs: no named parameters. Returns: result
compress_tarB
Create a TAR archive from files.
Inputs: files (required), output_path (required), compression. Returns: result
compress_zipB
Create a ZIP archive from files.
Inputs: files (required), output_path (required), compression_level. Returns: result
copy_fileB
Copy a file from source to destination.
Inputs: source (required), destination (required), overwrite. Returns: result
count_wordsC
Count words and provide text statistics.
Inputs: text (required), detailed. Returns: result
create_directoryC
Create a directory.
Inputs: path (required), parents. Returns: result
csv_to_jsonB
Convert CSV data to JSON.
Inputs: csv_string (required), delimiter, has_header. Returns: result
date_to_timestampB
Convert date string to Unix timestamp.
Inputs: date_string (required), timezone. Returns: result
decode_base64A
Decode Base64 to text.
Inputs: encoded (required), encoding. Returns: result
delete_fileA
Delete a file (requires confirmation).
Inputs: path (required), confirm. Returns: result
diff_filesB
Compare two files and show differences.
Inputs: file1 (required), file2 (required), context_lines, format. Returns: result
diff_textB
Compare two text strings and show differences.
Inputs: text1 (required), text2 (required), format. Returns: result
dns_lookupB
Perform DNS lookup.
Inputs: hostname (required), record_type. Returns: result
download_fileB
Download a file from URL and save to disk.
Inputs: url (required), save_path (required), timeout. Returns: result
encode_base64B
Encode text to Base64.
Inputs: text (required), encoding. Returns: result
extract_emailsB
Extract all email addresses from text.
Inputs: text (required). Returns: result
extract_tarC
Extract a TAR archive.
Inputs: tar_path (required), extract_to. Returns: result
extract_urlsB
Extract all URLs from text.
Inputs: text (required). Returns: result
extract_zipC
Extract a ZIP archive.
Inputs: zip_path (required), extract_to, password. Returns: result
fetch_webpageC
Fetch the HTML content of a webpage.
Inputs: url (required), timeout. Returns: result
fetch_webpage_textB
Fetch and extract clean text content from a webpage.
Inputs: url (required), timeout. Returns: result
file_existsB
Check if a file or directory exists.
Inputs: path (required). Returns: result
flatten_jsonA
Flatten nested JSON object into single-level object.
Inputs: json_string (required), separator. Returns: result
format_dateB
Format a date string using custom format.
Inputs: date_string (required), format. Returns: result
format_jsonC
Format JSON with pretty printing.
Inputs: json_string (required), indent, sort_keys. Returns: result
generate_hashA
Generate hash of text using specified algorithm.
Inputs: text (required), algorithm, encoding. Returns: result
generate_passwordC
Generate a strong password.
Inputs: length, include_symbols, include_numbers, exclude_ambiguous. Returns: result
generate_random_stringC
Generate a random string.
Inputs: length, charset. Returns: result
generate_uuidC
Generate a UUID.
Inputs: version, uppercase. Returns: result
get_cpu_infoA
Get CPU information and current usage.
Returns: JSON string containing CPU details and usage
Inputs: no named parameters. Returns: result
get_current_timeC
Get current date and time.
Inputs: timezone, format. Returns: result
get_disk_infoA
Get disk space information for a path.
Inputs: path. Returns: result
get_env_variableB
Get an environment variable value.
Inputs: name (required), default. Returns: result
get_file_infoB
Get detailed information about a file or directory.
Inputs: path (required). Returns: result
get_headersC
Get HTTP headers from a URL.
Inputs: url (required), timeout. Returns: result
get_memory_infoA
Get memory (RAM) usage statistics.
Returns: JSON string containing memory usage details
Inputs: no named parameters. Returns: result
get_network_infoA
Get network interface information.
Returns: JSON string with network interfaces, IP addresses, and MAC addresses
Inputs: no named parameters. Returns: result
get_page_linksC
Extract all links from a webpage.
Inputs: url (required), timeout, absolute. Returns: result
get_page_titleB
Extract the title from a webpage.
Inputs: url (required), timeout. Returns: result
get_process_infoB
Get information about the current process.
Returns: JSON string with process details
Inputs: no named parameters. Returns: result
get_search_statsA
Get search cache and rate limiter statistics.
Returns: JSON string with cache stats, hit rate, and rate limiter info
Inputs: no named parameters. Returns: result
get_system_infoA
Get comprehensive system information.
Returns: JSON string containing system details
Inputs: no named parameters. Returns: result
http_requestC
Make HTTP request with custom headers and body.
Inputs: url (required), method, headers, body, +1 more. Returns: result
json_queryB
Extract value from JSON using dot notation path.
Inputs: json_string (required), path (required). Returns: result
json_to_csvB
Convert JSON array to CSV format.
Inputs: json_string (required). Returns: result
json_to_yamlB
Convert JSON to YAML format.
Inputs: json_string (required). Returns: result
list_archive_contentsA
List contents of an archive file without extracting.
Inputs: archive_path (required). Returns: result
list_directoryC
List contents of a directory.
Inputs: path, pattern, recursive. Returns: result
list_env_variablesB
List all environment variables.
Inputs: filter_pattern. Returns: result
merge_jsonB
Merge two JSON objects.
Inputs: json_string1 (required), json_string2 (required), deep. Returns: result
parse_csvC
Parse CSV data and return as JSON.
Inputs: csv_string (required), delimiter. Returns: result
parse_htmlB
Parse HTML and extract elements using CSS selector.
Inputs: html (required), selector (required). Returns: result
parse_jsonB
Parse and validate a JSON string.
Inputs: json_string (required). Returns: result
parse_tomlB
Parse TOML configuration file to JSON.
Inputs: toml_string (required). Returns: result
parse_url_componentsB
Parse a URL and extract its components.
Inputs: url (required). Returns: result
parse_yamlA
Parse YAML string to JSON.
Inputs: yaml_string (required). Returns: result
read_fileB
Read the contents of a file.
Inputs: path (required), encoding. Returns: result
regex_matchB
Find all matches of a regular expression in text.
Inputs: text (required), pattern (required), flags. Returns: result
regex_replaceB
Replace text matching a regular expression.
Inputs: text (required), pattern (required), replacement (required), flags. Returns: result
search_filesC
Search for files in a directory.
Inputs: directory, pattern, name_contains. Returns: result
subagent_callB
Call an external AI model to handle a subtask.
Supports OpenAI and Anthropic APIs with custom endpoint configuration. Returns response with token usage statistics.
Inputs: provider (required), model (required), messages (required), max_tokens, +1 more. Returns: result
subagent_conditionalA
Execute conditional branching based on AI decision.
First calls AI to evaluate a condition, then executes either true_task or false_task based on the decision. Useful for dynamic workflow control.
Inputs: condition_task (required), true_task (required), false_task (required). Returns: result
subagent_config_getA
่ทๅๆๅฎๆไพๅ็ API ้ ็ฝฎไฟกๆฏ
Inputs: provider (required). Returns: result
subagent_config_listA
ๅๅบๆๆๅทฒ้ ็ฝฎ็ AI ๆไพๅ
่ฟๅๆๆ้ ็ฝฎ็ๆไพๅๅๅ ถ็ถๆ๏ผๅ ๆฌๅฏ้ฅ้ข่งๅ้ ็ฝฎๆฅๆบใ
Returns: JSON ๆ ผๅผ็ๆไพๅๅ่กจ
Example: providers = subagent_config_list()
Inputs: no named parameters. Returns: result
subagent_config_setA
่ฎพ็ฝฎ Subagent ๆไพๅ็ API ้ ็ฝฎ๏ผๆไน ๅไฟๅญ๏ผ
ๆญคๅทฅๅ ทๅฐ API ๅฏ้ฅๅๅบ็ก URL ไฟๅญๅฐ้ ็ฝฎๆไปถไธญ๏ผไธๆฌกๅฏๅจๆถ่ชๅจๅ ่ฝฝใ ้ ็ฝฎๆไปถไฝ็ฝฎ๏ผ~/.subagent_config.json
Inputs: provider (required), api_key (required), api_base. Returns: result
subagent_parallelA
Execute multiple AI subtasks in parallel with result aggregation.
Coordinates concurrent calls to different AI models and aggregates results. Useful for breaking complex problems into independent subtasks.
Inputs: tasks (required), max_workers. Returns: result
text_summaryB
Summarize or truncate text to a maximum length.
Inputs: text (required), max_length, method. Returns: result
timestamp_to_dateB
Convert Unix timestamp to readable date.
Inputs: timestamp (required), format, timezone. Returns: result
toml_to_jsonB
Convert TOML to formatted JSON.
Inputs: toml_string (required), indent. Returns: result
validate_json_schemaC
Validate JSON syntax and structure.
Inputs: json_string (required). Returns: result
validate_url_formatA
Validate if a string is a properly formatted URL.
Inputs: url (required). Returns: result
web_searchA
Search the web using multiple search engines withๆบ่ฝ fallback.
Features:
Automatic fallback between search engines (DuckDuckGo -> Bing)
Intelligent caching to reduce API calls
Rate limiting protection
Result deduplication
Inputs: query (required), max_results. Returns: result
web_search_advancedA
Advanced web search with multi-engine support and parallel searching.
Features:
Support for multiple search engines: DuckDuckGo, Bing, Google, Baidu
Parallel searching across multiple engines
Intelligent result merging and deduplication
Smart caching mechanism
Rate limiting protection
Inputs: query (required), max_results, engines, parallel, +1 more. Returns: result
web_search_newsA
Search for news articles using multiple search engines with fallback.
Features:
Automatic fallback between news search engines
Intelligent caching
Rate limiting protection
Result deduplication
Inputs: query (required), max_results. Returns: result
write_fileC
Write content to a file.
Inputs: path (required), content (required), encoding, overwrite. Returns: result
xml_to_jsonC
Convert XML to JSON format.
Inputs: xml_string (required). Returns: result
yaml_to_jsonB
Convert YAML to formatted JSON.
Inputs: yaml_string (required), indent. Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelogโฆ
TDQS
Scored across 116 tools
Most tools have distinct purposes, especially in the browser and subagent groups. However, there is some overlap between similar tools like fetch_webpage/fetch_webpage_text, parse_csv/csv_to_json, and multiple search tools (web_search, web_search_advanced, web_search_news). Descriptions help but some boundaries are blurry.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., browser_navigate, parse_csv, get_system_info). No mixed conventions or irregular naming, making the set predictable for an agent.
With 116 tools, the server is extremely large for an MCP server. While it aims to be a comprehensive toolkit, the sheer number likely overwhelms agents and increases selection errors. A more focused scope or modularization would improve coherence.
The tool set covers a wide range of domains (browser, file, text, system, web search, subagent) with good depth. Minor gaps exist, such as lack of in-place file editing or image processing, but overall the surface is quite complete for its stated purpose.
Maintenance
Related MCP Connectors
8 MCP servers, 104+ tools: memory, social, PDF, email, images, calendar, scheduler, files.
AI tool directory MCP server, live since July 2026. Tools, agents, models, companies, services.
MCP registry & directory: search, find & install 31k+ MCP servers & tools. Catalog and marketplace.
Nifty's MCP server โ exposes tasks, projects, messages, and files as tools for AI agents.
Related MCP Servers
- AlicenseBqualityDmaintenanceA comprehensive MCP server with 30+ custom tools organized into categories: date/time operations, file management, system information, text processing, and web operations. Enables async communication with robust error handling and flexible CLI integration.311MIT
- AlicenseAqualityDmaintenanceAn MCP server that enables web searching, URL content extraction, and summarization without requiring API keys. It also provides advanced mathematical evaluation and multi-language Wikipedia summary retrieval tools.5532 npm10MIT
- AlicenseNot gradedqualityDmaintenanceA MCP server for Windows/Linux that provides 90+ tools enabling AI assistants to systematically manage local systems, including system probing, command execution, file editing, network diagnostics, and more.13MIT

onion-mcp-serverofficial
AlicenseAqualityDmaintenanceA feature-rich MCP server offering 30 tools across AI, code, text, data, web, and system categories, enabling tasks like chat, translation, code review, web scraping, and text processing.30MIT