A collection of production-ready Model Context Protocol (MCP) servers written in TypeScript to extend AI coding assistants with reproducible tooling. Every server communicates over stdio and can be registered with any MCP-compliant client (Claude Desktop, CLI agents, IDE integrations) to add focused capabilities without leaking sensitive workspace data.
- Overview
- Prerequisites
- Quick Start
- Integration With MCP Clients
- Development Workflow
- Troubleshooting
- License
- Each server is self-contained (its own
package.json,src, and compileddistoutput) so you can build, deploy, or version them independently. - Tooling covers HTTP inspection, browser automation, archive management, FFmpeg-powered media editing, ImageMagick-powered image processing, large-scale media downloading via yt-dlp, dice rolling, read-only codebase exploration, controlled file download management, structured data conversions (JSON/YAML/XML), Markdown analysis, Old School RuneScape data lookups, and timezone utilities.
- All servers log operational details to stderr to keep stdout clean for MCP responses.
- Distributed under the MIT license for unrestricted commercial and personal use.
- Node.js 18 LTS or newer (ships with npm 9+). Earlier runtimes may lack modern ECMAScript APIs used by
@modelcontextprotocol/sdk. - npm (installed with Node) or another Node package manager if you prefer (
pnpm,yarn). Commands below use npm. - The
curlcommand-line client accessible in yourPATHfor the HTTP workbench. Most macOS and Linux distributions include it; on Windows install curl or enable it via Windows features. - A terminal that supports the scripts you invoke. On Windows, the provided
npm run cleanuses Unixrm -rf; either run it from Git Bash/WSL or replace withRemove-Item -Recurse -Force dist. - An MCP-compatible client (for example, Claude Desktop >= v1.5, an IDE with MCP support, or a custom automation harness).
-
Clone or open the repository.
git clone https://github.com/Ddemon26/custom-mcp-servers.git cd custom-mcp-servers
-
Install dependencies. Run
npm installinside each server the first time you clone the repo and whenever that server’spackage.jsonchanges. -
Build the TypeScript output. From the server directory, run
npm run buildbefore you register it with an MCP client; this generates thedist/server.jsentry point. -
Run a server locally (manual verification).
npm run start
The process binds stdio and will wait for requests from an MCP client. Stop with
Ctrl+Cafter confirming the build. -
(Optional) Use live reload while iterating.
npm run dev
ts-nodestarts the server directly fromsrc/server.ts, recompiling on each launch. Ideal for debugging before producing a release build.
All servers speak MCP over stdio. You typically register them in your client's configuration so it spawns the process and proxies requests/responses automatically.
-
Build the server (
npm run build) you want to expose. -
Add an entry to your MCP client configuration. Below is a Claude Desktop example for Windows; adapt the paths for macOS (
~/Library/Application Support/Claude/claude_desktop_config.json) or Linux (~/.config/Claude/claude_desktop_config.json).{ "mcpServers": { "archive-mcp": { "command": "node", "args": ["/your/path/to/custom-mcp-servers/archive-mcp/src/server.js"] }, "browser-mcp": { "command": "node", "args": ["/your/path/to/custom-mcp-servers/browser-mcp/src/server.js"] }, "curl-mcp": { "command": "node", "args": ["/your/path/to/custom-mcp-servers/curl/src/server.js"] }, "diceroll-mcp": { "command": "node", "args": ["/your/path/to/custom-mcp-servers/dice-roll/src/server.js"] }, "easyview-mcp": { "command": "node", "args": ["/your/path/to/custom-mcp-servers/easy-view/src/server.js"] }, "filedownload-mcp": { "command": "node", "args": ["/your/path/to/custom-mcp-servers/file-download/src/server.js"] }, "ffmpeg-mcp": { "command": "node", "args": ["/your/path/to/custom-mcp-servers/ffmpeg-mcp/src/server.js"] }, "ytdlp-mcp": { "command": "node", "args": ["/your/path/to/custom-mcp-servers/yt-dlp-mcp/src/server.js"] }, "html-mcp": { "command": "node", "args": ["/your/path/to/custom-mcp-servers/html-mcp/src/server.js"] }, "imagemagick-mcp": { "command": "node", "args": ["/your/path/to/custom-mcp-servers/imagemagick-mcp/src/server.js"] }, "json-mcp": { "command": "node", "args": ["/your/path/to/custom-mcp-servers/json-mcp/src/server.js"] }, "markdown-mcp": { "command": "node", "args": ["/your/path/to/custom-mcp-servers/markdown-mcp/src/server.js"] }, "osrs-lookup": { "command": "node", "args": ["/your/path/to/custom-mcp-servers/osrs-lookup/src/server.js"] }, "time-mcp": { "command": "node", "args": ["/your/path/to/custom-mcp-servers/time/src/server.js"] } } }- Use forward slashes in JSON to avoid escaping backslashes.
- Ensure the working directory matches the project root so relative paths (for example, the easy-view index) resolve correctly.
-
Restart the client so it reloads the MCP configuration.
-
Invoke tools by name inside your client (
navigate,create_zip,convert_video,download_video,parse_html,resize_image,curl_execute,roll_d100,scan_directory,save_text_file,format_json,markdown_to_html,get_current_time, etc.). The server responses appear in the assistant panel.
- Run
npm run devfor quick experiments; it usests-nodeso TypeScript changes take effect immediately (restart the process after edits). - Run
npm run buildbefore shipping or registering the server to guarantee the compiled JavaScript is up to date. - Use
npm run startto execute the compiled build exactly as the client will run it. - If you need to clear build artefacts on Windows, run
powershell -Command "Remove-Item dist -Recurse -Force"instead ofnpm run clean, or install a cross-platform cleaner (e.g., addrimraf). - Type definitions live in
dist/server.d.tsafter building; include them if consuming these servers as libraries elsewhere.
curl_executefails with "curlis not recognized": Install curl or add it to the systemPATH. On Windows, grab the official installer or enable the optional Windows feature.list_filesorsearch_filesreturn nothing: Runscan_directoryfirst or pass{ "refresh": true }if you recently changed the workspace.view_filereports "File too large": The safety cap is 10 MB. Open the file locally or reduce it before requesting the full content.save_binary_filethrows "Base64 content is required": Ensure the content string is valid base64 and not JSON-escaped (remove newline characters or wrap in proper JSON).npm run cleanfails on Windows: Use PowerShell'sRemove-Itemcommand or run the script from Git Bash/WSL wherermexists.
Released under the MIT License. You are free to fork, extend, and bundle these servers with your own MCP tooling.