it-tools-mcp 3.2.12 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/README.dockerhub.md +1 -1
  2. package/README.md +105 -104
  3. package/build/index.js +464 -70
  4. package/build/tools/ansible/{ansible-vault-decrypt → decrypt_ansible_vault}/index.js +13 -4
  5. package/build/tools/ansible/{ansible-vault-encrypt → encrypt_ansible_vault}/index.js +14 -5
  6. package/build/tools/ansible/generate_ansible_inventory/index.js +221 -0
  7. package/build/tools/ansible/{ansible-inventory-generator → parse_ansible_inventory}/index.js +11 -2
  8. package/build/tools/ansible/{ansible-reference → show_ansible_reference}/index.js +11 -2
  9. package/build/tools/ansible/{ansible-playbook-validator → validate_ansible_playbook}/index.js +12 -3
  10. package/build/tools/color/{color-hex-to-rgb → convert_hex_to_rgb}/index.js +12 -3
  11. package/build/tools/color/{color-rgb-to-hex → convert_rgb_to_hex}/index.js +14 -5
  12. package/build/tools/crypto/{jwt-decode → decode_jwt}/index.js +12 -3
  13. package/build/tools/crypto/{basic-auth-generator → generate_basic_auth}/index.js +13 -4
  14. package/build/tools/crypto/{bip39-generate → generate_bip39}/index.js +12 -3
  15. package/build/tools/crypto/{hmac-generator → generate_hmac}/index.js +14 -5
  16. package/build/tools/crypto/{otp-code-generator → generate_otp}/index.js +14 -5
  17. package/build/tools/crypto/{password-generate → generate_password}/index.js +16 -7
  18. package/build/tools/crypto/{token-generator → generate_token}/index.js +14 -5
  19. package/build/tools/crypto/{bcrypt-hash → hash_bcrypt}/index.js +14 -5
  20. package/build/tools/crypto/{hash-md5 → hash_md5}/index.js +11 -2
  21. package/build/tools/crypto/{hash-sha1 → hash_sha1}/index.js +11 -2
  22. package/build/tools/crypto/{hash-sha256 → hash_sha256}/index.js +11 -2
  23. package/build/tools/crypto/{hash-sha512 → hash_sha512}/index.js +11 -2
  24. package/build/tools/{dataFormat/json-diff → data_format/compare_json}/index.js +13 -4
  25. package/build/tools/{dataFormat/html-to-markdown → data_format/convert_html_to_markdown}/index.js +12 -3
  26. package/build/tools/{dataFormat/json-to-csv → data_format/convert_json_to_csv}/index.js +13 -4
  27. package/build/tools/{dataFormat/json-to-toml → data_format/convert_json_to_toml}/index.js +12 -3
  28. package/build/tools/{dataFormat/markdown-to-html → data_format/convert_markdown_to_html}/index.js +12 -3
  29. package/build/tools/{dataFormat/toml-to-json → data_format/convert_toml_to_json}/index.js +12 -3
  30. package/build/tools/{dataFormat/json-format → data_format/format_json}/index.js +14 -4
  31. package/build/tools/{dataFormat/phone-format → data_format/format_phone}/index.js +13 -4
  32. package/build/tools/{dataFormat/sql-format → data_format/format_sql}/index.js +13 -4
  33. package/build/tools/{dataFormat/xml-format → data_format/format_xml}/index.js +13 -4
  34. package/build/tools/{dataFormat/yaml-format → data_format/format_yaml}/index.js +12 -3
  35. package/build/tools/{dataFormat/json-minify → data_format/minify_json}/index.js +12 -3
  36. package/build/tools/development/{list-converter → convert_list}/index.js +15 -6
  37. package/build/tools/development/{html-prettifier → format_html}/index.js +13 -4
  38. package/build/tools/development/{javascript-prettifier → format_javascript}/index.js +14 -5
  39. package/build/tools/development/{crontab-generate → generate_crontab}/index.js +16 -7
  40. package/build/tools/development/{markdown-toc-generator → generate_markdown_toc}/index.js +14 -5
  41. package/build/tools/development/{regex-tester → test_regex}/index.js +14 -5
  42. package/build/tools/docker/{docker-compose-to-docker-run → convert_docker_compose_to_run}/index.js +11 -2
  43. package/build/tools/docker/{docker-run-to-docker-compose → convert_docker_run_to_compose}/index.js +11 -2
  44. package/build/tools/docker/{traefik-compose-generator → generate_traefik_compose}/index.js +16 -7
  45. package/build/tools/docker/{docker-reference → show_docker_reference}/index.js +11 -2
  46. package/build/tools/docker/{docker-compose-validator → validate_docker_compose}/index.js +12 -3
  47. package/build/tools/encoding/{text-to-binary → convert_text_to_binary}/index.js +13 -4
  48. package/build/tools/encoding/{base64-decode → decode_base64}/index.js +13 -3
  49. package/build/tools/encoding/{html-decode → decode_html}/index.js +12 -3
  50. package/build/tools/encoding/{url-decode → decode_url}/index.js +12 -3
  51. package/build/tools/encoding/encode_base64/index.js +38 -0
  52. package/build/tools/encoding/{html-encode → encode_html}/index.js +12 -3
  53. package/build/tools/encoding/{html-entities-extended → encode_html_entities}/index.js +13 -4
  54. package/build/tools/encoding/encode_url/index.js +25 -0
  55. package/build/tools/forensic/{safelink-decoder → decode_safelink}/index.js +12 -3
  56. package/build/tools/forensic/{url-fanger → fang_url}/index.js +13 -4
  57. package/build/tools/forensic/{file-type-identifier → identify_file_type}/index.js +13 -4
  58. package/build/tools/{idGenerators/qr-generate → id_generators/generate_qr_code}/index.js +13 -4
  59. package/build/tools/{idGenerators/svg-placeholder-generator → id_generators/generate_svg_placeholder}/index.js +16 -7
  60. package/build/tools/{idGenerators/ulid-generate → id_generators/generate_ulid}/index.js +11 -2
  61. package/build/tools/id_generators/generate_uuid/index.js +23 -0
  62. package/build/tools/math/{percentage-calculator → calculate_percentage}/index.js +14 -5
  63. package/build/tools/math/{number-base-converter → convert_number_base}/index.js +14 -5
  64. package/build/tools/math/{roman-numeral-converter → convert_roman_numerals}/index.js +12 -3
  65. package/build/tools/math/{temperature-converter → convert_temperature}/index.js +14 -5
  66. package/build/tools/math/{unix-timestamp-converter → convert_unix_timestamp}/index.js +11 -2
  67. package/build/tools/math/{math-evaluate → evaluate_math}/index.js +12 -3
  68. package/build/tools/network/{ip-subnet-calculator → calculate_ip_subnet}/index.js +12 -3
  69. package/build/tools/network/{ipv4-subnet-calc → calculate_ipv4_subnet}/index.js +11 -2
  70. package/build/tools/network/{ipv6-subnet-calculator → calculate_ipv6_subnet}/index.js +12 -3
  71. package/build/tools/network/cat/index.js +11 -2
  72. package/build/tools/network/{cidr-to-ip-range → convert_cidr_to_ip_range}/index.js +11 -2
  73. package/build/tools/network/{ip-range-to-cidr → convert_ip_range_to_cidr}/index.js +12 -3
  74. package/build/tools/network/curl/index.js +17 -6
  75. package/build/tools/network/dig/index.js +12 -3
  76. package/build/tools/network/{ipv6-ula-generator → generate_ipv6_ula}/index.js +11 -2
  77. package/build/tools/network/{mac-address-generate → generate_mac_address}/index.js +12 -3
  78. package/build/tools/network/{random-port → generate_random_port}/index.js +14 -5
  79. package/build/tools/network/grep/index.js +12 -3
  80. package/build/tools/network/head/index.js +12 -3
  81. package/build/tools/network/nslookup/index.js +11 -2
  82. package/build/tools/network/{url-parse → parse_url}/index.js +11 -2
  83. package/build/tools/network/ping/index.js +15 -4
  84. package/build/tools/network/ps/index.js +10 -1
  85. package/build/tools/network/scp/index.js +16 -7
  86. package/build/tools/network/ssh/index.js +14 -5
  87. package/build/tools/network/tail/index.js +12 -3
  88. package/build/tools/network/telnet/index.js +12 -3
  89. package/build/tools/network/top/index.js +10 -1
  90. package/build/tools/network/{iban-validate → validate_iban}/index.js +11 -2
  91. package/build/tools/physics/{angle-converter → convert_angle}/index.js +17 -8
  92. package/build/tools/physics/{energy-converter → convert_energy}/index.js +19 -10
  93. package/build/tools/physics/{power-converter → convert_power}/index.js +19 -10
  94. package/build/tools/text/{distinct-words → analyze_distinct_words}/index.js +11 -2
  95. package/build/tools/text/{text-stats → analyze_text_stats}/index.js +11 -2
  96. package/build/tools/text/capitalize_text/index.js +25 -0
  97. package/build/tools/text/{text-diff → compare_text}/index.js +12 -3
  98. package/build/tools/text/convert_text_to_camelcase/index.js +29 -0
  99. package/build/tools/text/{text-kebabcase → convert_text_to_kebabcase}/index.js +11 -2
  100. package/build/tools/text/convert_text_to_lowercase/index.js +24 -0
  101. package/build/tools/text/{text-to-nato-alphabet → convert_text_to_nato}/index.js +12 -3
  102. package/build/tools/text/{text-pascalcase → convert_text_to_pascalcase}/index.js +11 -2
  103. package/build/tools/text/{text-to-unicode → convert_text_to_unicode}/index.js +12 -3
  104. package/build/tools/text/convert_text_to_uppercase/index.js +24 -0
  105. package/build/tools/text/{ascii-art-text → generate_ascii_art}/index.js +12 -3
  106. package/build/tools/text/{lorem-ipsum-generator → generate_lorem_ipsum}/index.js +12 -3
  107. package/build/tools/text/{numeronym-generator → generate_numeronym}/index.js +11 -2
  108. package/build/tools/text/{string-obfuscator → obfuscate_string}/index.js +12 -3
  109. package/build/tools/text/{emoji-search → search_emoji}/index.js +11 -2
  110. package/build/tools/text/{text-to-unicode-names → show_unicode_names}/index.js +11 -2
  111. package/build/tools/text/{slugify-string → slugify_text}/index.js +13 -4
  112. package/build/tools/text/text_snakecase/index.js +1 -0
  113. package/build/tools/utility/{rem-px-converter → convert_rem_px}/index.js +14 -4
  114. package/build/tools/utility/{css-prettifier → format_css}/index.js +12 -3
  115. package/build/tools/utility/{http-status-codes → lookup_http_status}/index.js +11 -2
  116. package/build/tools/utility/{mime-types → lookup_mime_types}/index.js +12 -3
  117. package/build/tools/utility/{port-numbers → lookup_port_numbers}/index.js +11 -2
  118. package/build/tools/utility/{email-normalizer → normalize_email}/index.js +11 -2
  119. package/build/tools/utility/{device-info → show_device_info}/index.js +10 -1
  120. package/package.json +50 -6
  121. package/build/tools/encoding/base64-encode/index.js +0 -16
  122. package/build/tools/encoding/url-encode/index.js +0 -16
  123. package/build/tools/idGenerators/uuid-generate/index.js +0 -14
  124. package/build/tools/text/text-camelcase/index.js +0 -20
  125. package/build/tools/text/text-capitalize/index.js +0 -16
  126. package/build/tools/text/text-lowercase/index.js +0 -15
  127. package/build/tools/text/text-snakecase/index.js +0 -20
  128. package/build/tools/text/text-uppercase/index.js +0 -15
@@ -1,8 +1,17 @@
1
1
  import { z } from "zod";
2
- export function registerJsonToCsv(server) {
3
- server.tool("json-to-csv", "Convert JSON to CSV format", {
4
- json: z.string().describe("JSON string to convert to CSV"),
5
- delimiter: z.string().describe("CSV delimiter").optional(),
2
+ export function registerConvertJsonCsv(server) {
3
+ server.registerTool("convert_json_to_csv", {
4
+ description: "Convert JSON to CSV format",
5
+ inputSchema: {
6
+ json: z.string().describe("JSON string to convert to CSV"),
7
+ delimiter: z.string().describe("CSV delimiter").optional(),
8
+ },
9
+ // VS Code compliance annotations
10
+ annotations: {
11
+ title: "Convert Json To Csv",
12
+ description: "Convert JSON to CSV format",
13
+ readOnlyHint: false
14
+ }
6
15
  }, async ({ json, delimiter = "," }) => {
7
16
  try {
8
17
  const Papa = (await import("papaparse")).default;
@@ -1,7 +1,16 @@
1
1
  import { z } from "zod";
2
- export function registerJsonToToml(server) {
3
- server.tool("json-to-toml", "Convert JSON to TOML format", {
4
- json: z.string().describe("JSON string to convert"),
2
+ export function registerConvertJsonToml(server) {
3
+ server.registerTool("convert_json_to_toml", {
4
+ description: "Convert JSON to TOML format",
5
+ inputSchema: {
6
+ json: z.string().describe("JSON string to convert"),
7
+ },
8
+ // VS Code compliance annotations
9
+ annotations: {
10
+ title: "Convert Json To Toml",
11
+ description: "Convert JSON to TOML format",
12
+ readOnlyHint: false
13
+ }
5
14
  }, async ({ json }) => {
6
15
  try {
7
16
  const toml = await import("@iarna/toml");
@@ -1,7 +1,16 @@
1
1
  import { z } from "zod";
2
- export function registerMarkdownToHtml(server) {
3
- server.tool("markdown-to-html", "Convert Markdown to HTML", {
4
- markdown: z.string().describe("Markdown content to convert to HTML"),
2
+ export function registerConvertMarkdownHtml(server) {
3
+ server.registerTool("convert_markdown_to_html", {
4
+ description: "Convert Markdown to HTML",
5
+ inputSchema: {
6
+ markdown: z.string().describe("Markdown content to convert to HTML"),
7
+ },
8
+ // VS Code compliance annotations
9
+ annotations: {
10
+ title: "Convert Markdown To Html",
11
+ description: "Convert Markdown to HTML",
12
+ readOnlyHint: false
13
+ }
5
14
  }, async ({ markdown }) => {
6
15
  try {
7
16
  const { marked } = await import("marked");
@@ -1,7 +1,16 @@
1
1
  import { z } from "zod";
2
- export function registerTomlToJson(server) {
3
- server.tool("toml-to-json", "Convert TOML to JSON format", {
4
- toml: z.string().describe("TOML string to convert"),
2
+ export function registerConvertTomlJson(server) {
3
+ server.registerTool("convert_toml_to_json", {
4
+ description: "Convert TOML to JSON format",
5
+ inputSchema: {
6
+ toml: z.string().describe("TOML string to convert"),
7
+ },
8
+ // VS Code compliance annotations
9
+ annotations: {
10
+ title: "Convert Toml To Json",
11
+ description: "Convert TOML to JSON format",
12
+ readOnlyHint: false
13
+ }
5
14
  }, async ({ toml: tomlString }) => {
6
15
  try {
7
16
  const toml = await import("@iarna/toml");
@@ -1,8 +1,17 @@
1
1
  import { z } from "zod";
2
- export function registerJsonFormat(server) {
3
- server.tool("json-format", "Format and validate JSON", {
4
- json: z.string().describe("JSON string to format"),
5
- indent: z.number().describe("Number of spaces for indentation").optional(),
2
+ export function registerFormatJson(server) {
3
+ server.registerTool("format_json", {
4
+ description: 'Format and prettify JSON with proper indentation. Example: {"a":1,"b":2} → formatted JSON with customizable spacing',
5
+ inputSchema: {
6
+ json: z.string().describe("JSON string to format"),
7
+ indent: z.number().describe("Number of spaces for indentation").optional(),
8
+ },
9
+ // VS Code compliance annotations
10
+ annotations: {
11
+ title: "Format JSON",
12
+ description: "Format and prettify JSON with proper indentation and customizable spacing",
13
+ readOnlyHint: false
14
+ }
6
15
  }, async ({ json, indent = 2 }) => {
7
16
  try {
8
17
  if (indent < 0 || indent > 10) {
@@ -88,6 +97,7 @@ Examples of supported formats:
88
97
  }
89
98
  catch (error) {
90
99
  return {
100
+ isError: true,
91
101
  content: [
92
102
  {
93
103
  type: "text",
@@ -1,8 +1,17 @@
1
1
  import { z } from "zod";
2
- export function registerPhoneFormat(server) {
3
- server.tool("phone-format", "Parse and format phone numbers", {
4
- phoneNumber: z.string().describe("Phone number to parse and format"),
5
- countryCode: z.string().optional().describe("Country code (e.g., 'US', 'GB', 'FR')"),
2
+ export function registerFormatPhone(server) {
3
+ server.registerTool("format_phone", {
4
+ description: "Parse and format phone numbers",
5
+ inputSchema: {
6
+ phoneNumber: z.string().describe("Phone number to parse and format"),
7
+ countryCode: z.string().optional().describe("Country code (e.g., 'US', 'GB', 'FR')"),
8
+ },
9
+ // VS Code compliance annotations
10
+ annotations: {
11
+ title: "Format Phone",
12
+ description: "Parse and format phone numbers",
13
+ readOnlyHint: false
14
+ }
6
15
  }, async ({ phoneNumber, countryCode }) => {
7
16
  try {
8
17
  const { isValidPhoneNumber, parsePhoneNumber } = await import("libphonenumber-js");
@@ -1,8 +1,17 @@
1
1
  import { z } from "zod";
2
- export function registerSqlFormat(server) {
3
- server.tool("sql-format", "Format and prettify SQL queries", {
4
- sql: z.string().describe("SQL query to format"),
5
- dialect: z.string().optional().describe("SQL dialect to use for formatting (e.g., 'sql', 'mysql', 'postgresql', 'sqlite', 'mariadb', 'db2', 'plsql', 'n1ql', 'redshift', 'spark', 'tsql', 'trino', 'bigquery'). Default is 'sql'."),
2
+ export function registerFormatSql(server) {
3
+ server.registerTool("format_sql", {
4
+ description: "Format and prettify SQL queries",
5
+ inputSchema: {
6
+ sql: z.string().describe("SQL query to format"),
7
+ dialect: z.string().optional().describe("SQL dialect to use for formatting (e.g., 'sql', 'mysql', 'postgresql', 'sqlite', 'mariadb', 'db2', 'plsql', 'n1ql', 'redshift', 'spark', 'tsql', 'trino', 'bigquery'). Default is 'sql'."),
8
+ },
9
+ // VS Code compliance annotations
10
+ annotations: {
11
+ title: "Format Sql",
12
+ description: "Format and prettify SQL queries",
13
+ readOnlyHint: false
14
+ }
6
15
  }, async ({ sql, dialect = "sql" }) => {
7
16
  try {
8
17
  const { format: formatSQL } = await import("sql-formatter");
@@ -1,8 +1,17 @@
1
1
  import { z } from "zod";
2
- export function registerXmlFormat(server) {
3
- server.tool("xml-format", "Format and prettify XML", {
4
- xml: z.string().describe("XML string to format"),
5
- indent: z.number().describe("Number of spaces for indentation").optional(),
2
+ export function registerFormatXml(server) {
3
+ server.registerTool("format_xml", {
4
+ description: "Format and prettify XML",
5
+ inputSchema: {
6
+ xml: z.string().describe("XML string to format"),
7
+ indent: z.number().describe("Number of spaces for indentation").optional(),
8
+ },
9
+ // VS Code compliance annotations
10
+ annotations: {
11
+ title: "Format Xml",
12
+ description: "Format and prettify XML",
13
+ readOnlyHint: false
14
+ }
6
15
  }, async ({ xml, indent = 2 }) => {
7
16
  try {
8
17
  const formatXML = (await import("xml-formatter")).default;
@@ -1,7 +1,16 @@
1
1
  import { z } from "zod";
2
- export function registerYamlFormat(server) {
3
- server.tool("yaml-format", "Format and prettify YAML", {
4
- yaml: z.string().describe("YAML string to format"),
2
+ export function registerFormatYaml(server) {
3
+ server.registerTool("format_yaml", {
4
+ description: "Format and prettify YAML",
5
+ inputSchema: {
6
+ yaml: z.string().describe("YAML string to format"),
7
+ },
8
+ // VS Code compliance annotations
9
+ annotations: {
10
+ title: "Format Yaml",
11
+ description: "Format and prettify YAML",
12
+ readOnlyHint: false
13
+ }
5
14
  }, async ({ yaml }) => {
6
15
  try {
7
16
  const YAML = await import("js-yaml");
@@ -1,7 +1,16 @@
1
1
  import { z } from "zod";
2
- export function registerJsonMinify(server) {
3
- server.tool("json-minify", "Minify JSON by removing whitespace", {
4
- json: z.string().describe("JSON string to minify"),
2
+ export function registerMinifyJson(server) {
3
+ server.registerTool("minify_json", {
4
+ description: "Minify JSON by removing whitespace and unnecessary characters. Example: formatted JSON → compact single-line JSON",
5
+ inputSchema: {
6
+ json: z.string().describe("JSON string to minify"),
7
+ },
8
+ // VS Code compliance annotations
9
+ annotations: {
10
+ title: "Minify JSON",
11
+ description: "Remove whitespace and minify JSON to compact format",
12
+ readOnlyHint: false
13
+ }
5
14
  }, async ({ json }) => {
6
15
  try {
7
16
  const parsed = JSON.parse(json);
@@ -1,10 +1,19 @@
1
1
  import { z } from "zod";
2
- export function registerListConverter(server) {
3
- server.tool("list-converter", "Convert between different list formats (comma-separated, line-separated, etc.)", {
4
- list: z.string().describe("Input list to convert"),
5
- inputFormat: z.enum(["comma", "semicolon", "newline", "space", "pipe"]).describe("Input format"),
6
- outputFormat: z.enum(["comma", "semicolon", "newline", "space", "pipe", "json", "quoted"]).describe("Output format"),
7
- trim: z.boolean().describe("Trim whitespace from items").optional(),
2
+ export function registerConvertList(server) {
3
+ server.registerTool("convert_list", {
4
+ description: "Convert between different list formats (comma-separated, line-separated, etc.)",
5
+ inputSchema: {
6
+ list: z.string().describe("Input list to convert"),
7
+ inputFormat: z.enum(["comma", "semicolon", "newline", "space", "pipe"]).describe("Input format"),
8
+ outputFormat: z.enum(["comma", "semicolon", "newline", "space", "pipe", "json", "quoted"]).describe("Output format"),
9
+ trim: z.boolean().describe("Trim whitespace from items").optional(),
10
+ },
11
+ // VS Code compliance annotations
12
+ annotations: {
13
+ title: "Convert List",
14
+ description: "Convert between different list formats (comma-separated, line-separated, etc",
15
+ readOnlyHint: false
16
+ }
8
17
  }, async ({ list, inputFormat, outputFormat, trim = true }) => {
9
18
  try {
10
19
  const separators = {
@@ -1,8 +1,17 @@
1
1
  import { z } from "zod";
2
- export function registerHtmlPrettifier(server) {
3
- server.tool("html-prettifier", "Format and beautify HTML code", {
4
- html: z.string().describe("HTML code to prettify"),
5
- indentSize: z.number().optional().default(2).describe("Number of spaces for indentation")
2
+ export function registerPrettifyHtml(server) {
3
+ server.registerTool("format_html", {
4
+ description: "Format and beautify HTML code",
5
+ inputSchema: {
6
+ html: z.string().describe("HTML code to prettify"),
7
+ indentSize: z.number().optional().default(2).describe("Number of spaces for indentation")
8
+ },
9
+ // VS Code compliance annotations
10
+ annotations: {
11
+ title: "Format Html",
12
+ description: "Format and beautify HTML code",
13
+ readOnlyHint: false
14
+ }
6
15
  }, async ({ html, indentSize }) => {
7
16
  try {
8
17
  // Simple HTML prettifier
@@ -1,9 +1,18 @@
1
1
  import { z } from "zod";
2
- export function registerJavascriptPrettifier(server) {
3
- server.tool("javascript-prettifier", "Format and beautify JavaScript/CSS code", {
4
- code: z.string().describe("JavaScript or CSS code to prettify"),
5
- type: z.enum(["javascript", "css"]).describe("Type of code to format"),
6
- indentSize: z.number().optional().default(2).describe("Number of spaces for indentation")
2
+ export function registerPrettifyJavascript(server) {
3
+ server.registerTool("format_javascript", {
4
+ description: "Format and beautify JavaScript/CSS code",
5
+ inputSchema: {
6
+ code: z.string().describe("JavaScript or CSS code to prettify"),
7
+ type: z.enum(["javascript", "css"]).describe("Type of code to format"),
8
+ indentSize: z.number().optional().default(2).describe("Number of spaces for indentation")
9
+ },
10
+ // VS Code compliance annotations
11
+ annotations: {
12
+ title: "Format Javascript",
13
+ description: "Format and beautify JavaScript/CSS code",
14
+ readOnlyHint: false
15
+ }
7
16
  }, async ({ code, type, indentSize }) => {
8
17
  try {
9
18
  let formatted = code;
@@ -1,12 +1,21 @@
1
1
  import { z } from "zod";
2
2
  import { CronExpressionParser } from 'cron-parser';
3
- export function registerCrontabGenerate(server) {
4
- server.tool("crontab-generate", "Generate crontab expressions", {
5
- minute: z.string().describe("Minute (0-59, *, */n, n-m)").optional(),
6
- hour: z.string().describe("Hour (0-23, *, */n, n-m)").optional(),
7
- dayOfMonth: z.string().describe("Day of month (1-31, *, */n, n-m)").optional(),
8
- month: z.string().describe("Month (1-12, *, */n, n-m)").optional(),
9
- dayOfWeek: z.string().describe("Day of week (0-7, *, */n, n-m)").optional(),
3
+ export function registerGenerateCrontab(server) {
4
+ server.registerTool("generate_crontab", {
5
+ description: "Generate crontab expressions",
6
+ inputSchema: {
7
+ minute: z.string().describe("Minute (0-59, *, */n, n-m)").optional(),
8
+ hour: z.string().describe("Hour (0-23, *, */n, n-m)").optional(),
9
+ dayOfMonth: z.string().describe("Day of month (1-31, *, */n, n-m)").optional(),
10
+ month: z.string().describe("Month (1-12, *, */n, n-m)").optional(),
11
+ dayOfWeek: z.string().describe("Day of week (0-7, *, */n, n-m)").optional(),
12
+ },
13
+ // VS Code compliance annotations
14
+ annotations: {
15
+ title: "Generate Crontab",
16
+ description: "Generate crontab expressions",
17
+ readOnlyHint: false
18
+ }
10
19
  }, async ({ minute = "*", hour = "*", dayOfMonth = "*", month = "*", dayOfWeek = "*" }) => {
11
20
  try {
12
21
  const cronExpression = `${minute} ${hour} ${dayOfMonth} ${month} ${dayOfWeek}`;
@@ -1,9 +1,18 @@
1
1
  import { z } from "zod";
2
- export function registerMarkdownTocGenerator(server) {
3
- server.tool("markdown-toc-generator", "Generate a table of contents from Markdown headers", {
4
- markdown: z.string().describe("Markdown content to generate TOC from"),
5
- maxLevel: z.number().optional().default(6).describe("Maximum header level to include (1-6)"),
6
- generateAnchors: z.boolean().optional().default(true).describe("Whether to generate anchor links")
2
+ export function registerGenerateMarkdownToc(server) {
3
+ server.registerTool("generate_markdown_toc", {
4
+ description: "Generate a table of contents from Markdown headers",
5
+ inputSchema: {
6
+ markdown: z.string().describe("Markdown content to generate TOC from"),
7
+ maxLevel: z.number().optional().default(6).describe("Maximum header level to include (1-6)"),
8
+ generateAnchors: z.boolean().optional().default(true).describe("Whether to generate anchor links")
9
+ },
10
+ // VS Code compliance annotations
11
+ annotations: {
12
+ title: "Generate Markdown Toc",
13
+ description: "Generate a table of contents from Markdown headers",
14
+ readOnlyHint: false
15
+ }
7
16
  }, async ({ markdown, maxLevel, generateAnchors }) => {
8
17
  // Extract headers from markdown
9
18
  const headerRegex = /^(#{1,6})\s+(.+)$/gm;
@@ -1,9 +1,18 @@
1
1
  import { z } from "zod";
2
- export function registerRegexTester(server) {
3
- server.tool("regex-tester", "Test regular expressions against text", {
4
- pattern: z.string().describe("Regular expression pattern"),
5
- text: z.string().describe("Text to test against the regex"),
6
- flags: z.string().optional().describe("Regex flags (g, i, m, s, u, y)"),
2
+ export function registerTestRegex(server) {
3
+ server.registerTool("test_regex", {
4
+ description: "Test regular expressions against text",
5
+ inputSchema: {
6
+ pattern: z.string().describe("Regular expression pattern"),
7
+ text: z.string().describe("Text to test against the regex"),
8
+ flags: z.string().optional().describe("Regex flags (g, i, m, s, u, y)"),
9
+ },
10
+ // VS Code compliance annotations
11
+ annotations: {
12
+ title: "Test Regex",
13
+ description: "Test regular expressions against text",
14
+ readOnlyHint: false
15
+ }
7
16
  }, async ({ pattern, text, flags }) => {
8
17
  try {
9
18
  const regex = new RegExp(pattern, flags);
@@ -1,8 +1,17 @@
1
1
  import { z } from "zod";
2
2
  import yaml from "js-yaml";
3
3
  export function registerDockerComposeToRun(server) {
4
- server.tool("docker-compose-to-docker-run", "Convert Docker Compose files to docker run commands", {
5
- content: z.string().describe("Docker Compose file content to convert"),
4
+ server.registerTool("convert_docker_compose_to_run", {
5
+ description: "Convert Docker Compose files to docker run commands",
6
+ inputSchema: {
7
+ content: z.string().describe("Docker Compose file content to convert"),
8
+ },
9
+ // VS Code compliance annotations
10
+ annotations: {
11
+ title: "Convert Docker Compose To Run",
12
+ description: "Convert Docker Compose files to docker run commands",
13
+ readOnlyHint: false
14
+ }
6
15
  }, async ({ content }) => {
7
16
  if (!content?.trim()) {
8
17
  return {
@@ -1,8 +1,17 @@
1
1
  import { z } from "zod";
2
2
  import yaml from "js-yaml";
3
3
  export function registerDockerRunToCompose(server) {
4
- server.tool("docker-run-to-docker-compose", "Convert docker run commands to Docker Compose format", {
5
- commands: z.string().describe("Docker run commands to convert (one per line)"),
4
+ server.registerTool("convert_docker_run_to_compose", {
5
+ description: "Convert docker run commands to Docker Compose format",
6
+ inputSchema: {
7
+ commands: z.string().describe("Docker run commands to convert (one per line)"),
8
+ },
9
+ // VS Code compliance annotations
10
+ annotations: {
11
+ title: "Convert Docker Run To Compose",
12
+ description: "Convert docker run commands to Docker Compose format",
13
+ readOnlyHint: false
14
+ }
6
15
  }, async ({ commands }) => {
7
16
  if (!commands?.trim()) {
8
17
  return {
@@ -1,12 +1,21 @@
1
1
  import { z } from "zod";
2
2
  import yaml from "js-yaml";
3
- export function registerTraefikComposeGenerator(server) {
4
- server.tool("traefik-compose-generator", "Generate Traefik Docker Compose configuration", {
5
- domain: z.string().optional().describe("Domain for Traefik services (default: example.com)"),
6
- email: z.string().optional().describe("Email for Let's Encrypt (default: admin@example.com)"),
7
- network: z.string().optional().describe("Docker network name (default: traefik)"),
8
- serviceName: z.string().optional().describe("Example service name (default: webapp)"),
9
- serviceImage: z.string().optional().describe("Example service image (default: nginx:latest)"),
3
+ export function registerGenerateTraefik(server) {
4
+ server.registerTool("generate_traefik_compose", {
5
+ description: "Generate Traefik Docker Compose configuration",
6
+ inputSchema: {
7
+ domain: z.string().optional().describe("Domain for Traefik services (default: example.com)"),
8
+ email: z.string().optional().describe("Email for Let's Encrypt (default: admin@example.com)"),
9
+ network: z.string().optional().describe("Docker network name (default: traefik)"),
10
+ serviceName: z.string().optional().describe("Example service name (default: webapp)"),
11
+ serviceImage: z.string().optional().describe("Example service image (default: nginx:latest)"),
12
+ },
13
+ // VS Code compliance annotations
14
+ annotations: {
15
+ title: "Generate Traefik Compose",
16
+ description: "Generate Traefik Docker Compose configuration",
17
+ readOnlyHint: false
18
+ }
10
19
  }, async ({ domain = 'example.com', email = 'admin@example.com', network = 'traefik', serviceName = 'webapp', serviceImage = 'nginx:latest' }) => {
11
20
  try {
12
21
  const compose = {
@@ -1,5 +1,14 @@
1
- export function registerDockerReference(server) {
2
- server.tool("docker-reference", "Get Docker commands reference and cheatsheet", {}, async () => {
1
+ export function registerReferenceDocker(server) {
2
+ server.registerTool("show_docker_reference", {
3
+ description: "Get Docker commands reference and cheatsheet",
4
+ inputSchema: {},
5
+ // VS Code compliance annotations
6
+ annotations: {
7
+ title: "Show Docker Reference",
8
+ description: "Get Docker commands reference and cheatsheet",
9
+ readOnlyHint: true
10
+ }
11
+ }, async () => {
3
12
  const reference = `# Docker Quick Reference
4
13
 
5
14
  ## Installation & Setup
@@ -1,8 +1,17 @@
1
1
  import { z } from "zod";
2
2
  import yaml from "js-yaml";
3
- export function registerDockerComposeValidator(server) {
4
- server.tool("docker-compose-validator", "Validate Docker Compose files for syntax and compatibility", {
5
- content: z.string().describe("Docker Compose file content to validate"),
3
+ export function registerValidateCompose(server) {
4
+ server.registerTool("validate_docker_compose", {
5
+ description: "Validate Docker Compose files for syntax errors, compatibility issues, and best practices. Example: check YAML syntax, service configuration, network setup",
6
+ inputSchema: {
7
+ content: z.string().describe("Docker Compose file content to validate"),
8
+ },
9
+ // VS Code compliance annotations
10
+ annotations: {
11
+ title: "Validate Docker Compose",
12
+ description: "Validate Docker Compose syntax and configuration",
13
+ readOnlyHint: false
14
+ }
6
15
  }, async ({ content }) => {
7
16
  if (!content?.trim()) {
8
17
  return {
@@ -1,8 +1,17 @@
1
1
  import { z } from "zod";
2
- export function registerTextToBinary(server) {
3
- server.tool("text-to-binary", "Convert text to binary and vice versa", {
4
- input: z.string().describe("Text to convert to binary, or binary to convert to text"),
5
- operation: z.enum(["encode", "decode"]).describe("Operation: encode text to binary or decode binary to text"),
2
+ export function registerConvertTextBinary(server) {
3
+ server.registerTool("convert_text_to_binary", {
4
+ description: "Convert text to binary and vice versa",
5
+ inputSchema: {
6
+ input: z.string().describe("Text to convert to binary, or binary to convert to text"),
7
+ operation: z.enum(["encode", "decode"]).describe("Operation: encode text to binary or decode binary to text"),
8
+ },
9
+ // VS Code compliance annotations
10
+ annotations: {
11
+ title: "Convert Text To Binary",
12
+ description: "Convert text to binary and vice versa",
13
+ readOnlyHint: false
14
+ }
6
15
  }, async ({ input, operation }) => {
7
16
  try {
8
17
  if (operation === "encode") {
@@ -1,7 +1,16 @@
1
1
  import { z } from "zod";
2
- export function registerBase64Decode(server) {
3
- server.tool("base64-decode", "Decode Base64 text", {
4
- text: z.string().describe("Base64 text to decode"),
2
+ export function registerDecodeBase64(server) {
3
+ server.registerTool("decode_base64", {
4
+ description: 'Decode Base64 text back to original text. Example: "SGVsbG8gV29ybGQ=" → "Hello World"',
5
+ inputSchema: {
6
+ text: z.string().min(1).regex(/^[A-Za-z0-9+/]*={0,2}$/, "Invalid Base64 format").describe("Base64 text to decode"),
7
+ },
8
+ // VS Code compliance annotations
9
+ annotations: {
10
+ title: "Decode Base64",
11
+ description: "Decode Base64 text back to original text",
12
+ readOnlyHint: false
13
+ }
5
14
  }, async ({ text }) => {
6
15
  try {
7
16
  const decoded = Buffer.from(text, 'base64').toString('utf-8');
@@ -16,6 +25,7 @@ export function registerBase64Decode(server) {
16
25
  }
17
26
  catch (error) {
18
27
  return {
28
+ isError: true,
19
29
  content: [
20
30
  {
21
31
  type: "text",
@@ -1,7 +1,16 @@
1
1
  import { z } from "zod";
2
- export function registerHtmlDecode(server) {
3
- server.tool("html-decode", "Decode HTML entities", {
4
- text: z.string().describe("HTML encoded text to decode"),
2
+ export function registerDecodeHtml(server) {
3
+ server.registerTool("decode_html", {
4
+ description: "Decode HTML entities",
5
+ inputSchema: {
6
+ text: z.string().describe("HTML encoded text to decode"),
7
+ },
8
+ // VS Code compliance annotations
9
+ annotations: {
10
+ title: "Decode Html",
11
+ description: "Decode HTML entities",
12
+ readOnlyHint: false
13
+ }
5
14
  }, async ({ text }) => {
6
15
  const decoded = text
7
16
  .replace(/&amp;/g, '&')
@@ -1,7 +1,16 @@
1
1
  import { z } from "zod";
2
- export function registerUrlDecode(server) {
3
- server.tool("url-decode", "URL decode text", {
4
- text: z.string().describe("URL encoded text to decode"),
2
+ export function registerDecodeUrl(server) {
3
+ server.registerTool("decode_url", {
4
+ description: "URL decode text",
5
+ inputSchema: {
6
+ text: z.string().describe("URL encoded text to decode"),
7
+ },
8
+ // VS Code compliance annotations
9
+ annotations: {
10
+ title: "Decode Url",
11
+ description: "URL decode text",
12
+ readOnlyHint: false
13
+ }
5
14
  }, async ({ text }) => {
6
15
  try {
7
16
  const decoded = decodeURIComponent(text);
@@ -0,0 +1,38 @@
1
+ import { z } from "zod";
2
+ export function registerEncodeBase64(server) {
3
+ server.registerTool("encode_base64", {
4
+ description: 'Encode text to Base64 format. Example: "Hello World" → "SGVsbG8gV29ybGQ="',
5
+ inputSchema: {
6
+ text: z.string().min(1).describe("Text to encode to Base64"),
7
+ },
8
+ // VS Code compliance annotations
9
+ annotations: {
10
+ title: "Encode Base64",
11
+ description: "Encode text to Base64 format",
12
+ readOnlyHint: false
13
+ }
14
+ }, async ({ text }) => {
15
+ try {
16
+ const encoded = Buffer.from(text, 'utf-8').toString('base64');
17
+ return {
18
+ content: [
19
+ {
20
+ type: "text",
21
+ text: `Base64 encoded: ${encoded}`,
22
+ },
23
+ ],
24
+ };
25
+ }
26
+ catch (error) {
27
+ return {
28
+ isError: true,
29
+ content: [
30
+ {
31
+ type: "text",
32
+ text: `Error encoding to Base64: ${error instanceof Error ? error.message : 'Unknown error'}`,
33
+ },
34
+ ],
35
+ };
36
+ }
37
+ });
38
+ }