@toolsdk.ai/registry 1.0.103 → 1.0.104

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.
package/README.md CHANGED
@@ -106,9 +106,9 @@ For more detail please see [the guide](./docs/guide.md).
106
106
 
107
107
  # MCP Servers
108
108
 
109
- ✅: Validated and runnable tools (720)
109
+ ✅: Validated and runnable tools (721)
110
110
 
111
- ❌: Cannot be run by the MCP client (with mock environments variables (3384))
111
+ ❌: Cannot be run by the MCP client (with mock environments variables (3383))
112
112
 
113
113
 
114
114
 
@@ -522,7 +522,7 @@ Tools for browsing, scraping, and automating web content in AI-compatible format
522
522
  - [❌ puppeteer-browser-automation](https://github.com/twolven/mcp-server-puppeteer-py): Integrates with Puppeteer to provide browser automation capabilities for web navigation, interaction, and data extraction. (python)
523
523
  - [❌ awesome-cursor](https://github.com/kleneway/awesome-cursor-mpc-server): Built for Cursor, integrates screenshot capture, web page structure analysis, and code review capabilities for automated UI testing, web scraping, and code quality checks. (node)
524
524
  - [❌ screenshotone-mcp-server](https://github.com/mrgoonie/screenshotone-mcp-server): Enables AI to capture and process screenshots of webpages with customizable parameters through the ScreenshotOne API with Cloudflare CDN integration for image storage and retrieval. (node)
525
- - [ tavily-mcp](https://github.com/tavily-ai/tavily-mcp): Integrates with Tavily API to provide real-time web search and content extraction capabilities for research, aggregation, and fact-checking tasks. (node)
525
+ - [ tavily-mcp](https://github.com/tavily-ai/tavily-mcp): Integrates with Tavily API to provide real-time web search and content extraction capabilities for research, aggregation, and fact-checking tasks. (4 tools) (node)
526
526
  - [✅ mcp-jinaai-grounding](https://github.com/spences10/mcp-jinaai-grounding): Integrates JinaAI's content extraction and analysis capabilities for web scraping, documentation parsing, and text analysis tasks. (1 tools) (node)
527
527
  - [❌ website-to-markdown-converter](https://github.com/tolik-unicornrider/mcp_scraper): Converts web content to high-quality Markdown using Mozilla's Readability and TurndownService, enabling clean extraction of meaningful content from URLs or HTML files for analysis and document conversion. (node)
528
528
  - [❌ web-browser-(playwright)](https://github.com/random-robbie/mcp-web-browser): Integrates with Playwright to enable cross-browser web automation for tasks like scraping, testing, and content extraction. (python)
@@ -3110,7 +3110,7 @@ Find and extract data from various sources quickly and efficiently.
3110
3110
  - [❌ geeknews](https://github.com/the0807/geeknews-mcp-server): Retrieves and extracts tech news, articles, and discussions from GeekNews using BeautifulSoup for more informed conversations about current technology developments. (python)
3111
3111
  - [✅ @toolsdk.ai/tavily-mcp](https://github.com/tavily-ai/tavily-mcp): An MCP server that implements web search, extract, mapping, and crawling through the Tavily API. (4 tools) (node)
3112
3112
  - [❌ goodnews](https://github.com/vectorinstitute/mcp-goodnews): Filters and ranks news articles from NewsAPI based on positive sentiment, delivering uplifting headlines amid potentially negative media cycles. (python)
3113
- - [ tavily-mcp](https://github.com/tavily-ai/tavily-mcp): Integrates with Tavily API to provide real-time web search and content extraction capabilities for research, aggregation, and fact-checking tasks. (node)
3113
+ - [ tavily-mcp](https://github.com/tavily-ai/tavily-mcp): Integrates with Tavily API to provide real-time web search and content extraction capabilities for research, aggregation, and fact-checking tasks. (4 tools) (node)
3114
3114
  - [✅ anilist-mcp](https://github.com/yuna0x0/anilist-mcp): MCP server that interfaces with the AniList API, allowing LLM clients to access and interact with anime, manga, character, staff, and user data from AniList (44 tools) (node)
3115
3115
  - [❌ exa-web-search](https://github.com/mshojaei77/reactmcp): Integrates with Exa API to enable web search capabilities with filtering options for domains, text requirements, and date ranges, returning markdown-formatted results with titles, URLs, publication dates, and content summaries for real-time internet information access. (python)
3116
3116
  - [❌ web-browser-mcp-server](https://github.com/blazickjp/web-browser-mcp-server): Integrates web browsing capabilities for realtime data retrieval, content extraction, and task automation using popular Python libraries. (python)
package/dist/api/index.js CHANGED
@@ -1,15 +1,14 @@
1
1
  import fs from "node:fs/promises";
2
2
  import path from "node:path";
3
- import { fileURLToPath } from "node:url";
4
3
  import { serve } from "@hono/node-server";
5
4
  import { swaggerUI } from "@hono/swagger-ui";
6
5
  import { OpenAPIHono } from "@hono/zod-openapi";
7
6
  import dotenv from "dotenv";
8
7
  import { searchRoutes } from "../search/search-route";
9
8
  import searchService from "../search/search-service";
9
+ import { getDirname } from "../utils";
10
10
  import { packageRoutes } from "./package-route";
11
- const __filename = fileURLToPath(import.meta.url);
12
- const __dirname = path.dirname(__filename);
11
+ const __dirname = getDirname(import.meta.url);
13
12
  dotenv.config({ path: path.resolve(process.cwd(), ".env.local") });
14
13
  dotenv.config({ path: path.resolve(process.cwd(), ".env") });
15
14
  const initializeSearchService = async () => {
@@ -39,10 +38,17 @@ app.get("/", async (c) => {
39
38
  return c.text("MCP Registry API Server is running!");
40
39
  }
41
40
  });
42
- app.get("/api/meta", (c) => {
43
- // eslint-disable-next-line @typescript-eslint/no-require-imports
44
- const packageJson = require("../../package.json");
45
- return c.json({ version: packageJson.version });
41
+ app.get("/api/meta", async (c) => {
42
+ try {
43
+ const packageJson = await import("../../package.json", {
44
+ assert: { type: "json" },
45
+ });
46
+ return c.json({ version: packageJson.default.version });
47
+ }
48
+ catch (error) {
49
+ console.error("Failed to load package.json:", error);
50
+ return c.json({ version: "unknown" });
51
+ }
46
52
  });
47
53
  app.doc("/api/v1/doc", {
48
54
  openapi: "3.0.0",
@@ -1,17 +1,20 @@
1
- /* eslint-disable @typescript-eslint/no-require-imports */
1
+ import path from "node:path";
2
2
  import { createRoute, OpenAPIHono } from "@hono/zod-openapi";
3
3
  import { getPythonDependencies } from "../helper";
4
4
  import { CategoriesResponseSchema, ExecuteToolResponseSchema, FeaturedResponseSchema, PackageDetailResponseSchema, PackagesListResponseSchema, packageNameQuerySchema, ToolExecuteSchema, ToolsResponseSchema, } from "../schema";
5
- import { createResponse, createRouteResponses } from "../utils";
5
+ import { createResponse, createRouteResponses, getDirname } from "../utils";
6
6
  import { packageHandler } from "./package-handler";
7
+ const __dirname = getDirname(import.meta.url);
7
8
  export const packageRoutes = new OpenAPIHono();
8
9
  const featuredRoute = createRoute({
9
10
  method: "get",
10
11
  path: "/config/featured",
11
12
  responses: createRouteResponses(FeaturedResponseSchema),
12
13
  });
13
- packageRoutes.openapi(featuredRoute, (c) => {
14
- const featured = require("../../config/featured.mjs").default;
14
+ packageRoutes.openapi(featuredRoute, async (c) => {
15
+ const featuredPath = path.join(__dirname, "../../config/featured.mjs");
16
+ const featuredModule = await import(`file://${featuredPath}`);
17
+ const featured = featuredModule.default;
15
18
  const response = createResponse(featured);
16
19
  return c.json(response, 200);
17
20
  });
@@ -20,8 +23,10 @@ const categoriesRoute = createRoute({
20
23
  path: "/config/categories",
21
24
  responses: createRouteResponses(CategoriesResponseSchema),
22
25
  });
23
- packageRoutes.openapi(categoriesRoute, (c) => {
24
- const categories = require("../../config/categories.mjs").default;
26
+ packageRoutes.openapi(categoriesRoute, async (c) => {
27
+ const categoriesPath = path.join(__dirname, "../../config/categories.mjs");
28
+ const categoriesModule = await import(`file://${categoriesPath}`);
29
+ const categories = categoriesModule.default;
25
30
  const response = createResponse(categories);
26
31
  return c.json(response, 200);
27
32
  });
@@ -1,9 +1,8 @@
1
1
  import fs from "node:fs";
2
2
  import path from "node:path";
3
- import { fileURLToPath } from "node:url";
4
3
  import { getMcpClient, getPackageConfigByKey, typedAllPackagesList } from "../helper.js";
5
- const __filename = fileURLToPath(import.meta.url);
6
- const __dirname = path.dirname(__filename);
4
+ import { getDirname } from "../utils";
5
+ const __dirname = getDirname(import.meta.url);
7
6
  export class PackageSO {
8
7
  async executeTool(request) {
9
8
  const mcpServerConfig = getPackageConfigByKey(request.packageName);
package/dist/helper.js CHANGED
@@ -1,16 +1,15 @@
1
1
  import assert from "node:assert";
2
2
  import fs from "node:fs";
3
3
  import * as path from "node:path";
4
- import { fileURLToPath } from "node:url";
5
4
  import toml from "@iarna/toml";
6
5
  import { Client } from "@modelcontextprotocol/sdk/client/index.js";
7
6
  import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
8
7
  import axios from "axios";
9
8
  import semver from "semver";
10
9
  import allPackagesList from "../indexes/packages-list.json";
10
+ import { getDirname } from "../src/utils";
11
11
  import { MCPServerPackageConfigSchema, PackagesListSchema } from "./schema";
12
- const __filename = fileURLToPath(import.meta.url);
13
- const __dirname = path.dirname(__filename);
12
+ const __dirname = getDirname(import.meta.url);
14
13
  export const typedAllPackagesList = PackagesListSchema.parse(allPackagesList);
15
14
  export function getPackageConfigByKey(packageKey) {
16
15
  const value = typedAllPackagesList[packageKey];
@@ -4,10 +4,9 @@
4
4
  */
5
5
  import fs from "node:fs/promises";
6
6
  import path from "node:path";
7
- import { fileURLToPath } from "node:url";
8
7
  import { MeiliSearch } from "meilisearch";
9
- const __filename = fileURLToPath(import.meta.url);
10
- const __dirname = path.dirname(__filename);
8
+ import { getDirname } from "../utils";
9
+ const __dirname = getDirname(import.meta.url);
11
10
  class SearchService {
12
11
  constructor(indexName = "mcp-packages") {
13
12
  // MeiliSearch configuration
package/dist/utils.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import type { z } from "@hono/zod-openapi";
2
2
  import type { Response } from "./types";
3
+ export declare function getDirname(metaUrl: string): string;
3
4
  export declare const createResponse: <T>(data: T, options?: {
4
5
  success?: boolean;
5
6
  code?: number;
package/dist/utils.js CHANGED
@@ -1,4 +1,9 @@
1
+ import { dirname } from "node:path";
2
+ import { fileURLToPath } from "node:url";
1
3
  import { ErrorResponseSchema } from "./schema";
4
+ export function getDirname(metaUrl) {
5
+ return dirname(fileURLToPath(metaUrl));
6
+ }
2
7
  export const createResponse = (data, options) => {
3
8
  const { success = true, code = 200, message = "Success" } = options || {};
4
9
  return {
@@ -143,8 +143,25 @@
143
143
  "tavily-mcp": {
144
144
  "category": "search-data-extraction",
145
145
  "path": "search-data-extraction/tavily-mcp.json",
146
- "validated": false,
147
- "tools": {}
146
+ "validated": true,
147
+ "tools": {
148
+ "tavily-search": {
149
+ "name": "tavily-search",
150
+ "description": "A powerful web search tool that provides comprehensive, real-time results using Tavily's AI search engine. Returns relevant web content with customizable parameters for result count, content type, and domain filtering. Ideal for gathering current information, news, and detailed web content analysis."
151
+ },
152
+ "tavily-extract": {
153
+ "name": "tavily-extract",
154
+ "description": "A powerful web content extraction tool that retrieves and processes raw content from specified URLs, ideal for data collection, content analysis, and research tasks."
155
+ },
156
+ "tavily-crawl": {
157
+ "name": "tavily-crawl",
158
+ "description": "A powerful web crawler that initiates a structured web crawl starting from a specified base URL. The crawler expands from that point like a tree, following internal links across pages. You can control how deep and wide it goes, and guide it to focus on specific sections of the site."
159
+ },
160
+ "tavily-map": {
161
+ "name": "tavily-map",
162
+ "description": "A powerful web mapping tool that creates a structured map of website URLs, allowing you to discover and analyze site structure, content organization, and navigation paths. Perfect for site audits, content discovery, and understanding website architecture."
163
+ }
164
+ }
148
165
  },
149
166
  "@toolsdk.ai/tavily-mcp": {
150
167
  "category": "search-data-extraction",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@toolsdk.ai/registry",
3
- "version": "1.0.103",
3
+ "version": "1.0.104",
4
4
  "description": "An Open, Structured, and Standard Registry for MCP Servers and Packages.",
5
5
  "keywords": [],
6
6
  "license": "MIT",
@@ -613,6 +613,7 @@
613
613
  "systemprompt-mcp-notion": "1.0.7",
614
614
  "tana-mcp": "1.2.0",
615
615
  "taskqueue-mcp": "1.4.1",
616
+ "tavily-mcp": "0.2.9",
616
617
  "terminal-mcp-server": "1.0.0",
617
618
  "terraform-mcp-server": "0.13.0",
618
619
  "tesouro-direto-mcp": "0.2.3",