Skip to main content
Glama

oh-my-mcp

English | ไธญๆ–‡

A powerful Model Context Protocol (MCP) server with 154 practical tools across 11 categories, built using FastMCP.

Build and Release Tests Lint Python 3.12+ License: MIT Platform

๐Ÿš€ 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

INSTALLATION.md / ไธญๆ–‡

Tool Reference (all 146 tools)

TOOL_REFERENCE.md / ไธญๆ–‡

Computer Use Guide

COMPUTER_USE_GUIDE.md / ไธญๆ–‡

Setup Guide (Claude Desktop)

SETUP_GUIDE.md / ไธญๆ–‡

Command Execution

CONFIGURATION.md ยท see Tool Reference

Build Guide

BUILD.md / ไธญๆ–‡

Architecture

ARCHITECTURE.md / ไธญๆ–‡

Subagent Guide

SUBAGENT_GUIDE.md / ไธญๆ–‡

Contributing

CONTRIBUTING.md / ไธญๆ–‡

Changelog

CHANGELOG.md / ไธญๆ–‡

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-extras

Configure Claude Desktop:

python -m mcp_server.cli.config --claude

Start the server:

python -m mcp_server.main

Details: 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=True

  • Allowlisted 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 --write

CI 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.


Enjoy oh-my-mcp! ๐Ÿš€

Available Tools

116 tools
append_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_navigateB

Navigate to a URL in an existing browser session.

Inputs: session_id (required), url (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_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_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_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

    B3.2/5.0

    Scored across 116 tools

    Disambiguation4/5

    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.

    Naming Consistency5/5

    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.

    Tool Count2/5

    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.

    Completeness4/5

    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

    ActivityStale
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      B
      quality
      D
      maintenance
      A 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.
      31
      1
      MIT
    • A
      license
      A
      quality
      D
      maintenance
      An 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.
      5
      532 npm
      10
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      A 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.
      13
      MIT