mcptools
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| web_searchA | Search the web and return ranked results (title, URL, snippet). Use this whenever you need current information, facts you are unsure about, or to find pages to read with fetch_url. No API key required. Args:
Returns a list of { title, url, snippet }. Follow up with fetch_url on a result's url to read it. Example: { "query": "rust async runtime comparison", "limit": 5 } |
| fetch_urlA | Download a web page and return its readable content as clean text or Markdown (scripts, styles, nav and ads stripped). Use after web_search to actually read a page, or whenever you have a URL whose content you need. Args:
Returns the page content. Long pages are truncated; fetch a more specific URL if needed. Example: { "url": "https://example.com/article", "format": "markdown" } |
| extract_linksA | Fetch a page and list all outbound hyperlinks (absolute URLs with their anchor text). Useful for crawling, finding a specific subpage, or mapping a site section. Args:
Returns a list of { text, href }. Example: { "url": "https://news.ycombinator.com", "limit": 30 } |
| get_page_metadataA | Fetch a page and return its metadata: title, description, canonical URL and OpenGraph tags. Cheaper than fetching full content when you only need to identify a page. Args:
Returns { title, description, canonical, og }. Example: { "url": "https://example.com" } |
| http_requestA | Make a raw HTTP request to any API and return status, headers and body. Use for REST/JSON APIs that need GET/POST/PUT/DELETE with custom headers or a body. Args:
Returns { status, statusText, headers, body }. Example: { "url": "https://api.github.com/repos/nodejs/node", "headers": { "Accept": "application/vnd.github+json" } } |
| calculatorA | Evaluate a mathematical expression precisely. Use this for ANY arithmetic instead of computing in your head. Supports +, -, *, /, ^, parentheses, functions (sqrt, sin, cos, log, etc.), constants (pi, e), and units (e.g. "5 km in miles", "2 GB in bytes"). Args:
Returns the result as a string. Examples:
|
| current_datetimeA | Return the current date and time. Use this whenever you need to know "now", compute ages/durations, or timestamp something — never guess the date. Args:
Returns the ISO timestamp, a human-readable string, and component parts. Example: { "timezone": "Asia/Tokyo" } |
| read_fileA | Read a file from the local filesystem. Text files are returned as-is (UTF-8); PDF files are detected automatically and their text is extracted page by page. Args:
Returns the file contents. Use list_directory first if unsure of the path. Example: { "path": " |
| write_fileA | Write text to a file, creating parent directories as needed. Overwrites by default; set append=true to append. Args:
Returns a confirmation with bytes written. Example: { "path": "~/notes.txt", "content": "hello", "append": true } |
| list_directoryA | List entries in a directory with type (file/dir) and size. Args:
Returns a list of { name, type, size_bytes }. Example: { "path": "~/project/src" } |
| run_commandA | Run a shell command and return its stdout, stderr and exit code. Runs through the system shell, so pipes, redirects and globs work. Killed after the configured timeout. WARNING: This executes arbitrary commands on the local machine. Only use commands the user would approve. Args:
Returns exit code plus captured stdout/stderr. Example: { "command": "ls -la | head", "cwd": "~/project" } |
| execute_codeA | Run a snippet of code and return its output. Use this to compute, transform data, or test logic instead of doing it in your head. Args:
Returns exit code plus captured stdout/stderr. Killed after the configured timeout. Example: { "language": "python", "code": "print(sum(range(100)))" } |
| notifyA | Show a desktop notification to the user (via notify-send). Use to announce that a long task finished or that you need attention. Args:
Example: { "title": "Done", "message": "Finished indexing 240 files." } |
| server_infoA | Report the mcptools server version and configuration. Call this when asked what version of mcptools is running, or which tool groups are enabled. Args: none. Returns { name, version, node, enabled_groups, disabled_groups, tool_overrides, config_path, data_dir }. |
| search_filesA | Search file contents under a directory with a regular expression (like grep -rn, but no shell quoting to get wrong). Skips binary files, .git and node_modules. Use this to find where something is defined or mentioned. Args:
Returns matches as file:line: text, grouped by file. Example: { "path": "~/project", "pattern": "registerTool", "glob": "*.ts" } |
| find_filesA | Find files by name across a directory tree using a glob pattern. Use this instead of walking directories one list_directory call at a time. Skips .git and node_modules. Args:
Returns matching paths with sizes. Example: { "path": "~/Documents", "pattern": "*.pdf" } |
| edit_fileA | Replace an exact string in a text file. Much safer than rewriting the whole file with write_file — the rest of the file is untouched. The old_string must match exactly (including whitespace) and, unless replace_all is true, must appear exactly once; include surrounding lines to make it unique. If you cannot reproduce the text exactly, use edit_lines instead. Args:
Returns a confirmation plus the edited region with line numbers, so you can verify without re-reading the file. Example: { "path": "~/app/config.py", "old_string": "DEBUG = True", "new_string": "DEBUG = False" } |
| edit_linesA | Edit a file by line numbers: replace a line range, insert text, or delete lines. Use read_file with line_numbers=true first to get the exact numbers. Prefer edit_file when you can copy the exact text; use this when you know the location but not the exact characters. IMPORTANT: line numbers shift after every edit — re-read the file before making another line-based edit. Args:
Returns a confirmation plus the edited region with line numbers. Example: { "path": "~/app.py", "mode": "replace", "start_line": 12, "end_line": 14, "new_text": "def main():\n run()" } |
| pdf_to_jsonA | Convert a local PDF into structured JSON: document metadata (title, author...), page count, and the text of each page. Use read_file for a quick plain-text read; use this when you need page structure, metadata, or a JSON file other tools can consume (e.g. json_query). Args:
Returns { source, total_pages, metadata, pages: [{ page, text }] }. Example: { "path": " |
| download_fileA | Download a URL to a local file, binary-safe (PDFs, images, archives...). Use fetch_url for reading web pages as text; use this when you need the actual file on disk — e.g. download a PDF, then read_file it to extract the text. Args:
Returns the saved path, size and content type. Example: { "url": "https://arxiv.org/pdf/1706.03762", "path": "~/papers/attention.pdf" } |
| sqlite_queryA | Run a SQL statement against a local SQLite database file and return the rows or change count. Use this to query or modify structured data instead of inventing values. To explore an unfamiliar database, first run: SELECT name FROM sqlite_master WHERE type='table'. Args:
Returns rows (for SELECT) or { changes, lastInsertRowid }. Example: { "db_path": "~/data/app.db", "sql": "SELECT * FROM users WHERE age > ?", "params": [18] } |
| json_queryA | Extract a slice of a local JSON or CSV file with a path query, instead of reading the whole file into context. CSV files are parsed using the first row as headers (every row becomes an object). Path syntax: "." is the whole document, ".key.subkey" descends into objects, "[0]" indexes an array, "[]" maps over every element. Examples: ".users[0].name", ".items[].price", ".results[]" . Args:
Returns the matching slice as JSON. Example: { "path": "~/data/users.json", "query": ".users[].email" } |
| wikipedia_lookupA | Look up a topic on Wikipedia and return a concise summary (with the page URL). Prefer this over web_search for encyclopedic facts about people, places, concepts and events. Args:
Returns { title, summary, url }. Example: { "query": "Alan Turing" } |
| weatherA | Get the current weather and a short forecast for a place (via open-meteo, no API key). Use this for any "what's the weather" question — never guess. Args:
Returns current conditions plus a daily min/max forecast. Example: { "location": "Barcelona", "days": 3 } |
| read_rssA | Fetch and parse an RSS or Atom feed, returning the latest items. Use for news sites, blogs, podcasts and release feeds — cheaper and more current than web_search when you know the feed. Args:
Returns items as { title, link, date, summary }. Example: { "url": "https://lwn.net/headlines/rss", "limit": 5 } |
| hackernewsA | Search Hacker News stories (Algolia API, no key). Great for tech news, library/tool opinions and discussions. Args:
Returns stories with points, comment count and discussion link. Example: { "query": "llama.cpp", "sort": "date" } |
| arxiv_searchA | Search arXiv for scientific papers (no API key). To read a paper: take pdf_url from a result, download_file it, then read_file the PDF. Args:
Returns papers with title, authors, date, abstract and pdf_url. Example: { "query": "speculative decoding", "sort": "latest" } |
| youtube_transcriptA | Fetch the transcript (captions) of a YouTube video as plain text. Use to summarize or answer questions about a video without watching it. Fails cleanly if the video has no captions. Args:
Returns the transcript text. Example: { "video": "https://www.youtube.com/watch?v=dQw4w9WgXcQ" } |
| memory_saveA | Persist a fact/note under a key so you can recall it in future turns or sessions. Overwrites an existing key. Args:
Example: { "key": "user_name", "value": "Sergio", "tags": "profile" } |
| memory_recallA | Retrieve saved notes. Give an exact key for a single note, or a search term to match across keys/values/tags. Call this when you might already know something the user told you earlier. Args:
Returns matching { key, value, tags, updated_at } records. Example: { "search": "timezone" } |
| memory_listA | List all saved memory keys (with tags and timestamps) without their full values. Use to see what you have stored. Args: none. Returns a list of { key, tags, updated_at }. |
| memory_deleteA | Delete a saved memory by key. Args:
Example: { "key": "user_name" } |
| todo_addA | Add a task to the persistent todo list. When given a multi-step job, add each step first, then work through them with todo_done — this keeps you from forgetting steps. Args:
Returns the new task id. Example: { "text": "Write tests for the parser" } |
| todo_listA | List tasks on the todo list (pending by default). Check this at the start of a work session to see what is still open. Args:
Returns tasks as a checklist with ids. |
| todo_doneA | Mark a todo as done by id (from todo_list). Set remove=true to delete it entirely instead. Args:
Example: { "id": 3 } |
| rag_indexA | Embed and index a local file or directory into the semantic search store so you can retrieve relevant passages later with rag_search. Re-indexing the same source replaces its old chunks. Requires an embedding server (LM Studio or llama.cpp) running with an embedding model loaded. Args:
Returns the number of files and chunks indexed. Example: { "path": "~/project/docs" } |
| rag_searchA | Search previously indexed documents by meaning and return the most relevant passages with their source files. Use this to ground answers in the user's own files/docs that you indexed with rag_index. Requires an embedding server (LM Studio or llama.cpp) running with an embedding model loaded. Args:
Returns ranked { source, score, text } passages. Example: { "query": "how is authentication handled", "top_k": 5 } |
| rag_listA | List the source files currently indexed in the RAG store, with the chunk count for each. Use this to see what is indexed and to get the exact source paths needed by rag_delete. Returns a list of { source, chunks } and overall store totals. Example: {} |
| rag_deleteA | Remove all indexed chunks for a source from the RAG store. The source must match the path stored at index time (an absolute path) — use rag_list to find exact paths. The original file on disk is not touched. Args:
Returns the number of chunks deleted and the updated store totals. Example: { "source": "/tmp/ragcorpus/cooking.md" } |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/highercomve/mcptools'
If you have feedback or need assistance with the MCP directory API, please join our Discord server