Skip to main content
Glama

tool-mcp-server

npm version Publish

一个基于 Model Context Protocol (MCP) 的 stdio 服务端,将 tool-website 的在线工具能力以 MCP Tool 的形式暴露出来,供支持 MCP 的客户端调用。

说明:本项目中的工具实现移植自 https://github.com/sisi0318/tool-website。


功能特性

  • 58 个 MCP Tool:包含 54 个具体工具 + 4 个元工具

  • 8 大工具分类:基础、加密、数据、开发、图片、文本、实用、预览

  • Stdio 传输:标准 MCP stdio 协议,兼容 Claude Desktop、Cline、Windsurf 等客户端

  • 工作流支持:通过 run_workflow 将多个工具按有向图拓扑执行

  • 完整测试覆盖:单元测试、工具逻辑测试、MCP 协议调用测试全部通过


Related MCP server: my-mcp-server

一键使用

如果你已经安装了 Node.js,可以直接通过 npx 一键启动,无需克隆仓库:

npx -y tool-mcp-server

安装

方式一:通过 npm / pnpm 安装

pnpm add -g tool-mcp-server
# 或
npm install -g tool-mcp-server

方式二:本地开发

git clone https://github.com/maple-awa/tool-mcp.git
cd tool-mcp
pnpm install
pnpm build

MCP 客户端配置

Claude Desktop

编辑 claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "tool-mcp-server": {
      "command": "npx",
      "args": ["-y", "tool-mcp-server"]
    }
  }
}

Cline / Roo Code

在 Cline 的 MCP Servers 设置中添加:

{
  "mcpServers": {
    "tool-mcp-server": {
      "command": "npx",
      "args": ["-y", "tool-mcp-server"],
      "disabled": false,
      "autoApprove": []
    }
  }
}

本地开发配置

如果你使用本地构建产物:

{
  "mcpServers": {
    "tool-mcp-server": {
      "command": "node",
      "args": ["/path/to/tool-mcp/dist/index.js"]
    }
  }
}

使用

启动 MCP 服务

pnpm start

服务通过 stdio 与 MCP 客户端通信。

开发模式

pnpm dev

测试

# 全部测试
pnpm test:all

# 仅单元测试
pnpm test:unit

# 仅工具逻辑测试
pnpm test:tools

# 仅 MCP 协议测试
pnpm test:mcp

工具清单

分类

数量

示例

basic

5

string、number、json、file、boolean

crypto

8

hash、hmac、crypto、encoding、jwt、classic-cipher 等

data

12

json-format、json-path、protobuf、yaml-to-json、base64-to-file 等

dev

4

http-tester、crontab、docker-converter、whois

image

8

image-to-base64、exif-viewer、image-compress、qrcode、meme-splitter 等

text

4

text-stats、case-converter、regex、diff

utility

7

uuid、totp、color、base-converter、currency、bmi 等

viewer

6

device-info、office-viewer、time、string-preview、image-preview 等

完整的工具列表可通过 MCP 调用 list_tools 获取。


MCP 元工具

工具名

说明

list_tools

列出所有可用工具

get_tool_schema

获取指定工具的输入输出 schema

execute_tool

直接执行某个工具

run_workflow

按节点和边构建工作流并执行

每个具体工具也会以 tool_<type> 的形式注册,例如 tool_hash、tool_qrcode。


测试状态

  • ✅ TypeScript 编译通过

  • ✅ 单元测试:14 / 14 通过

  • ✅ 工具逻辑测试:54 / 54 通过

  • ✅ MCP 协议调用测试:58 / 58 通过


自动发布到 npm

本仓库配置了 GitHub Actions,在创建 Release 时会自动构建、测试并发布到 npm。

配置方法

  1. 在 npm 生成 Access Token(Publish 权限)

  2. 在 GitHub 仓库设置 → Secrets and variables → Actions 中添加 NPM_TOKEN

  3. 在 GitHub 创建 Release,Actions 会自动执行发布

手动发布

pnpm build
pnpm test:unit
pnpm publish --access public

项目结构

├── .github/workflows/        # GitHub Actions 工作流
├── src/
│   ├── index.ts              # MCP 服务入口
│   ├── lib/adapters/         # 各工具适配器实现
│   ├── lib/canvas/           # 节点注册表和工作流引擎
│   ├── mcp/                  # MCP schema、文件工具、工作流运行器
│   ├── test-all-tools.ts     # 工具逻辑集成测试
│   ├── test-mcp-all-tools.ts # MCP 协议集成测试
│   └── tool-test-cases.ts    # 共享测试用例
├── dist/                     # 编译输出
├── package.json
├── tsconfig.json
└── vitest.config.ts

许可证

MIT

Available Tools

58 tools
execute_toolC

Execute a tool by type with inputs and optional config overrides

Inputs: toolType (required), config, inputs.

get_tool_schemaA

Get detailed schema and description for a specific tool

Inputs: toolType (required).

list_toolsA

List all available tools from tool-website, optionally filtered by category

Inputs: category.

run_workflowC

Run a connected workflow of tools (nodes + edges) in topological order

Inputs: edges (required), nodes (required).

tool_base64_to_fileC

[data] Base64 To File

Parameters:

  • base64 (string): Base64

  • filename (string): Filename

  • mimeType (string): MIME Type

Outputs:

  • file (bytes): File

Inputs: file, base64, filename, mimeType.

tool_base_converterC

[utility] Base Converter

Parameters:

  • value (string): Value

  • fromBase (string): Input Base

Outputs:

  • binary (string): Binary

  • octal (string): Octal

  • decimal (string): Decimal

  • hex (string): Hex

Inputs: hex, octal, value, binary, +2 more.

tool_bmiA

[utility] BMI

Parameters:

  • weight (number): Weight (kg)

  • height (number): Height (m)

Outputs:

  • bmi (number): BMI

  • category (string): Category

Inputs: bmi, height, weight, category.

tool_booleanD

[basic] Boolean

Parameters:

  • value (boolean): Value

Inputs: value.

tool_case_converterB

[text] Case Converter

Parameters:

  • text (string): Text

Outputs:

  • upper (string): UPPER

  • lower (string): lower

  • title (string): Title

  • camel (string): camelCase

  • snake (string): snake_case

  • kebab (string): kebab-case

Inputs: text, camel, kebab, lower, +3 more.

tool_classic_cipherC

[crypto] Classic Cipher

Parameters:

  • data (string): Data

  • algorithm (string): Algorithm

  • shift (number): Shift

Outputs:

  • result (string): Result

Inputs: data, shift, result, algorithm.

tool_colorD

[utility] Color

Parameters:

  • color (string): Color

Outputs:

  • hex (string): HEX

  • rgb (json): RGB

  • hsl (json): HSL

Inputs: hex, hsl, rgb, color.

tool_crontabC

[dev] Crontab

Parameters:

  • expression (string): Expression

Outputs:

  • parsed (json): Parsed

  • nextRuns (json): Next Runs

Inputs: parsed, nextRuns, expression.

tool_cryptoD

[crypto] Crypto

Parameters:

  • data (string): Data

  • key (string): Key

  • iv (string): IV

  • algorithm (string): Algorithm

  • mode (string): Mode

  • operation (string): Operation

Outputs:

  • result (string): Result

Inputs: iv, key, data, mode, +3 more.

tool_currencyC

[utility] Currency

Parameters:

  • amount (number): Amount

  • from (string): From

  • to (string): To

Outputs:

  • converted (number): Converted

  • rate (number): Rate

Inputs: to, from, rate, amount, +1 more.

tool_device_infoD

[viewer] Device Info

Outputs:

  • info (json): Info

Inputs: info.

tool_diffC

[text] Diff

Parameters:

  • text1 (string): Text 1

  • text2 (string): Text 2

Outputs:

  • added (number): Added

  • removed (number): Removed

  • unchanged (number): Unchanged

  • diff (json): Diff

  • changes (json): Changes

Inputs: diff, added, text1, text2, +3 more.

tool_docker_converterD

[dev] Docker Converter

Parameters:

  • command (string): Command

  • format (string): Format

Outputs:

  • dockerfile (string): Dockerfile

  • compose (string): Compose

Inputs: format, command, compose, dockerfile.

tool_encodingD

[crypto] Encoding

Parameters:

  • input (string): Input

  • encoding (string): Encoding

  • mode (string): Mode

Outputs:

  • output (string): Output

Inputs: mode, input, output, encoding.

tool_exif_viewerC

[image] EXIF Viewer

Parameters:

  • file (bytes): File

  • category (string): Category

Outputs:

  • exif (json): EXIF Data

Inputs: exif, file, category.

tool_fileD

[basic] File

Parameters:

  • file (bytes): File

Inputs: file.

tool_file_to_base64C

[data] File To Base64

Parameters:

  • file (bytes): File

Outputs:

  • base64 (string): Base64

Inputs: file, base64.

tool_file_to_stringC

[data] File To String

Parameters:

  • file (bytes): File

Outputs:

  • content (string): Content

Inputs: file, content.

tool_hashD

[crypto] Hash

Parameters:

  • data (string): Data

  • category (string): Category

  • algorithm (string): Algorithm

  • outputFormat (string): Output

Outputs:

  • hash (string): Hash

Inputs: data, hash, category, algorithm, +1 more.

tool_hash_verifyC

[crypto] Hash Verify

Parameters:

  • data (string): Data

  • hash (string): Hash

  • category (string): Category

  • algorithm (string): Algorithm

Outputs:

  • valid (boolean): Valid

Inputs: data, hash, valid, category, +1 more.

tool_hmacC

[crypto] HMAC

Parameters:

  • data (string): Data

  • key (string): Key

  • algorithm (string): Algorithm

  • outputFormat (string): Output

Outputs:

  • hmac (string): HMAC

Inputs: key, data, hmac, algorithm, +1 more.

tool_hmac_verifyC

[crypto] HMAC Verify

Parameters:

  • expectedHmac (string): Expected HMAC

  • data (string): Data

  • key (string): Key

  • algorithm (string): Algorithm

Outputs:

  • valid (boolean): Valid

Inputs: key, data, valid, algorithm, +1 more.

tool_http_testerC

[dev] HTTP Tester

Parameters:

  • url (string): URL

  • method (string): Method

  • headers (string): Headers

  • body (string): Body

Outputs:

  • response (json): Response

  • status (number): Status

Inputs: url, body, method, status, +2 more.

tool_image_compressD

[image] Image Compress

Parameters:

  • file (bytes): File

  • quality (number): Quality

  • outputFormat (string): Format

Outputs:

  • file (bytes): File

  • info (json): Info

Inputs: file, info, quality, outputFormat.

tool_image_coordinatesD

[image] Image Coordinates

Parameters:

  • file (bytes): File

  • x (number): X

  • y (number): Y

Outputs:

  • coordinates (json): Coordinates

  • pixel (json): Pixel

Inputs: x, y, file, pixel, +1 more.

tool_image_editorC

[image] Image Editor

Parameters:

  • file (bytes): File

  • brightness (number): Brightness

  • contrast (number): Contrast

  • saturation (number): Saturation

  • grayscale (boolean): Grayscale

Outputs:

  • file (bytes): File

  • info (json): Info

Inputs: file, info, contrast, grayscale, +2 more.

tool_image_previewD

[viewer] Image Preview

Parameters:

  • file (bytes): File

Inputs: file.

tool_image_to_base64C

[image] Image to Base64

Parameters:

  • file (bytes): File

  • outputFormat (string): Output

Outputs:

  • base64 (string): Base64

  • dataUri (string): Data URI

Inputs: file, base64, dataUri, outputFormat.

tool_jceD

[data] JCE

Parameters:

  • data (string): Data

  • mode (string): Mode

Outputs:

  • decoded (json): Decoded

Inputs: data, mode, decoded.

tool_jsonD

[basic] JSON

Parameters:

  • value (string): Value

Outputs:

  • parsed (json): Parsed

Inputs: value, parsed.

tool_json_formatC

[data] JSON Format

Parameters:

  • data (string): Data

  • indent (number): Indent

  • sortKeys (boolean): Sort Keys

Outputs:

  • formatted (string): Formatted

  • minified (string): Minified

Inputs: data, indent, minified, sortKeys, +1 more.

tool_json_parseC

[data] JSON Parse

Parameters:

  • string (string): String

Outputs:

  • json (json): JSON

Inputs: json, string.

tool_json_pathD

[data] JSON Path

Parameters:

  • json (json): JSON

  • path (string): Path

Outputs:

  • string (string): String

  • number (number): Number

  • boolean (boolean): Boolean

  • object (json): Object

  • array (json): Array

  • type (string): Type

Inputs: json, path, type, array, +4 more.

tool_json_previewD

[viewer] JSON Preview

Parameters:

  • json (json): JSON

Inputs: json.

tool_json_stringifyD

[data] JSON Stringify

Parameters:

  • json (json): JSON

Outputs:

  • string (string): String

Inputs: json, string.

tool_json_to_yamlA

[data] JSON to YAML

Parameters:

  • json (json): JSON

Outputs:

  • yaml (string): YAML

Inputs: json, yaml.

tool_jwtD

[crypto] JWT

Parameters:

  • token (string): Token

Outputs:

  • header (json): Header

  • payload (json): Payload

  • signature (string): Signature

Inputs: token, header, payload, signature.

tool_meme_splitterC

[image] Meme Splitter

Parameters:

  • file (bytes): File

  • rows (number): Rows

  • cols (number): Cols

Outputs:

  • parts (json): Parts

Inputs: cols, file, rows, parts.

tool_numberD

[basic] Number

Parameters:

  • value (number): Value

Inputs: value.

tool_office_viewerD

[viewer] Office Viewer

Parameters:

  • file (bytes): File

Outputs:

  • info (json): Info

Inputs: file, info.

tool_protobufD

[data] Protobuf

Parameters:

  • data (string): Data

  • mode (string): Mode

  • indentSize (number): Indent

Outputs:

  • decoded (json): Decoded

Inputs: data, mode, decoded, indentSize.

tool_qrcodeC

[image] QRCode

Parameters:

  • data (string): Data

  • size (number): Size

  • errorCorrection (string): Error Correction

  • fgColor (string): Foreground

  • bgColor (string): Background

Outputs:

  • image (bytes): Image

  • dataUri (string): Data URI

Inputs: data, size, image, bgColor, +3 more.

tool_qrcode_decodeC

[image] QRCode Decode

Parameters:

  • file (bytes): File

Outputs:

  • data (string): Data

Inputs: data, file.

tool_regexD

[text] Regex

Parameters:

  • text (string): Text

  • pattern (string): Pattern

  • flags (string): Flags

  • replacement (string): Replacement

Outputs:

  • matches (json): Matches

  • test (string): Test

Inputs: test, text, flags, matches, +2 more.

tool_stringD

[basic] String

Parameters:

  • value (string): Value

Inputs: value.

tool_string_previewC

[viewer] String Preview

Parameters:

  • content (string): Content

Inputs: content.

tool_string_to_fileC

[data] String To File

Parameters:

  • content (string): Content

  • filename (string): Filename

Outputs:

  • file (bytes): File

Inputs: file, content, filename.

tool_temperature_converterC

[utility] Temperature

Parameters:

  • value (number): Value

  • fromUnit (string): From

  • precision (string): Precision

Outputs:

  • celsius (number): Celsius

  • fahrenheit (number): Fahrenheit

  • kelvin (number): Kelvin

Inputs: value, kelvin, celsius, fromUnit, +2 more.

tool_text_statsB

[text] Text Stats

Parameters:

  • text (string): Text

Outputs:

  • characters (number): Characters

  • words (number): Words

  • lines (number): Lines

  • sentences (number): Sentences

  • paragraphs (number): Paragraphs

  • bytes (number): Bytes

Inputs: text, bytes, lines, words, +3 more.

tool_timeD

[viewer] Time

Parameters:

  • timezone (string): Timezone

Outputs:

  • timestamp (number): Timestamp

  • iso (string): ISO

  • formatted (string): Formatted

  • parts (json): Parts

Inputs: iso, parts, timezone, formatted, +1 more.

tool_totpD

[utility] TOTP

Parameters:

  • secret (string): Secret

  • digits (number): Digits

  • period (number): Period

Outputs:

  • code (string): Code

  • remaining (number): Remaining

  • counter (number): Counter

Inputs: code, digits, period, secret, +2 more.

tool_uuidB

[utility] UUID

Parameters:

  • version (string): Version

  • uppercase (boolean): Uppercase

  • withHyphens (boolean): Hyphens

Outputs:

  • uuid (string): UUID

Inputs: uuid, version, uppercase, withHyphens.

tool_whoisD

[dev] Whois

Parameters:

  • domain (string): Domain

Outputs:

  • result (json): Result

Inputs: domain, result.

tool_yaml_to_jsonA

[data] YAML to JSON

Parameters:

  • yaml (string): YAML

Outputs:

  • json (json): JSON

Inputs: json, yaml.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    C2/5.0

    Scored across 58 tools

    Disambiguation2/5

    Multiple tools have overlapping or unclear boundaries, such as tool_file_to_base64 vs tool_image_to_base64, tool_encoding vs tool_base_converter, and tool_json_format vs tool_json_stringify. The absence of explicit descriptions further hampers an agent's ability to distinguish between them.

    Naming Consistency2/5

    The server mixes verb_noun meta-tools (list_tools, execute_tool) with noun-based utility tools (tool_hash, tool_json), and some tools include their category in the name while others do not. This inconsistency makes it difficult to predict tool names.

    Tool Count2/5

    With 58 tools, the server is overloaded. Although it aims to be a general-purpose toolkit, the sheer number exceeds the 'too many' threshold and includes many trivial variations, making the set feel bloated.

    Completeness3/5

    The server covers a broad range of utility functions, but notable gaps exist such as image resizing, XML/HTML processing, and file system operations. These gaps are moderate and can be worked around for general use.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      A Model Context Protocol server built with mcp-framework that allows users to create and manage custom tools for processing data, integrating with the Claude Desktop via CLI.
      22 npm
      5
      MIT
    • F
      license
      Not graded
      quality
      D
      maintenance
      A Model Context Protocol server that allows integration with Claude Desktop by creating and managing custom tools that can be executed through the MCP framework.
      55 npm
      -
    • F
      license
      Not graded
      quality
      D
      maintenance
      A Model Context Protocol (MCP) server built with the mcp-framework for developing and managing custom tools. It provides a structured foundation for building and integrating modular components like data processors and API clients into Claude Desktop.
      11 npm
      -
    • A
      license
      Not graded
      quality
      D
      maintenance
      A general-purpose MCP server with utility tools including datetime information, safe math calculations, text statistics, JSON extraction, knowledge base search, and HTTP GET requests. It demonstrates server-side MCP implementation and can be connected to Claude Desktop or LangGraph agents.
      MIT