# Smithery MCP Scraper (`maximedupre/smithery-mcp`) Actor

Collect public MCP servers from the Smithery registry by catalog, keyword, or server ID. Export server metadata, links, trust signals, deployment details, and optional capability definitions.

- **URL**: https://apify.com/maximedupre/smithery-mcp.md
- **Developed by:** [Maxime Dupré](https://apify.com/maximedupre) (community)
- **Categories:** AI, Developer tools, MCP servers
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$0.90 / 1,000 mcp servers

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

### 🔎 Find public Smithery MCP servers

Smithery MCP Registry Scraper is for developers, AI tooling teams, and researchers who need public MCP server data. Browse or search the Smithery registry, then save server names, descriptions, links, status facts, and optional capability definitions in a clean dataset.

- Review **[Smithery AI skills](https://apify.com/maximedupre/smithery-mcp/examples/smithery-ai-skills)** by searching the public server catalog.
- Export the **[Smithery registry](https://apify.com/maximedupre/smithery-mcp/examples/smithery-registry)** for directory or market research.
- Run an **[MCP server search](https://apify.com/maximedupre/smithery-mcp/examples/mcp-server-search)** for a topic or tool.
- Build a list from the public **[MCP registry](https://apify.com/maximedupre/smithery-mcp/examples/mcp-registry)**.
- Collect known **[Smithery MCP servers](https://apify.com/maximedupre/smithery-mcp/examples/smithery-mcp-servers)** by exact server ID.

#### 📦 Data you can get

Each saved row is one Smithery MCP server. It can include:

- Smithery server ID, name, description, registry page, homepage, icon, and creation time
- use count, verification status, and whether Smithery publishes the server
- remote and hosted status, hosted URL, and connection type
- structured tools, resources, prompts, counts, and connection settings when capability details are enabled

The Actor uses public Smithery data. It does not need your Smithery login or credentials. It does not call or operate the servers it finds.

#### 🚀 Run the Actor

1. Choose **Catalog**, **Search**, or **Server IDs**.
2. Fill the matching target section if needed.
3. Choose whether to keep only verified servers or include capability details.
4. Set **Maximum servers**, or leave it empty to return all available results until the source is exhausted.
5. Start the run and open the dataset.

Capability collection takes more time because it asks Smithery for more server details. If the same server is found more than once, only its first eligible match is saved.

#### 🧾 Input

| Field | Type | What it does |
|---|---|---|
| `target` | string | Chooses Catalog, Search, or Server IDs. Values in the other target sections are ignored. |
| `query` | string | Sets the one keyword search used when `target` is Search. |
| `serverIds` | string array | Lists one or more exact Smithery server IDs to collect when `target` is Server IDs. |
| `verifiedOnly` | boolean | Keeps only servers marked as verified by Smithery for Catalog and Search. |
| `includeCapabilities` | boolean | Adds structured tools, resources, prompts, capability counts, and connection requirements. This takes more time. |
| `maxItems` | integer | Stops after this many saved servers for Catalog and Search. Leave it empty to return all available results until the source is exhausted. |

Default-input example from a successful run:

```json
{
  "target": "catalog",
  "verifiedOnly": false,
  "includeCapabilities": false,
  "maxItems": 5
}
```

#### 📤 Output

The default dataset has one row per saved server. Nullable fields can be `null` when Smithery does not provide them or when capability details are off.

| Field | Type | What it does |
|---|---|---|
| `serverId` | string | Smithery registry ID. |
| `name` | string or null | Server display name. |
| `description` | string or null | Server description from Smithery. |
| `registryUrl` | string | Public Smithery page for the server. |
| `homepageUrl` | string or null | Server homepage or source project URL. |
| `iconUrl` | string or null | Source-hosted icon URL. |
| `createdAt` | string or null | Source creation time in ISO 8601 format. |
| `useCount` | integer or null | Smithery use count. |
| `verified` | boolean or null | Whether Smithery marks the server as verified. |
| `publishedBySmithery` | boolean or null | Whether Smithery publishes the server. |
| `remoteAvailable` | boolean or null | Whether a remote connection is available. |
| `hosted` | boolean or null | Whether Smithery marks the server as hosted. |
| `hostedUrl` | string or null | Smithery-hosted server URL. |
| `connectionType` | string or null | Connection type reported by Smithery. |
| `capabilities` | object or null | Structured details collected when capability details are enabled. |
| `capabilities.counts` | object | Counts for tools, resources, and prompts. |
| `capabilities.counts.tools` | integer | Number of tool definitions. |
| `capabilities.counts.resources` | integer | Number of resource definitions. |
| `capabilities.counts.prompts` | integer | Number of prompt definitions. |
| `capabilities.tools` | object array | Tool definitions in source order. |
| `capabilities.tools[].name` | string | Tool name used in MCP calls. |
| `capabilities.tools[].description` | string or null | Tool description. |
| `capabilities.tools[].inputSchema` | object or null | JSON Schema for tool input. |
| `capabilities.resources` | object array | Resource definitions in source order. |
| `capabilities.resources[].uri` | string | Resource URI or URI template. |
| `capabilities.resources[].name` | string or null | Resource name. |
| `capabilities.resources[].description` | string or null | Resource description. |
| `capabilities.resources[].mimeType` | string or null | Resource media type. |
| `capabilities.prompts` | object array | Prompt definitions in source order. |
| `capabilities.prompts[].name` | string | Prompt name used in MCP calls. |
| `capabilities.prompts[].description` | string or null | Prompt description. |
| `capabilities.prompts[].arguments` | object array | Prompt arguments in source order. |
| `capabilities.prompts[].arguments[].name` | string | Argument name. |
| `capabilities.prompts[].arguments[].description` | string or null | Argument description. |
| `capabilities.prompts[].arguments[].required` | boolean | Whether the argument is required. |
| `capabilities.connectionConfigSchema` | object or null | JSON Schema for connection settings. |

Full row from a successful current-beta run:

```json
{
  "serverId": "jina",
  "name": "Jina AI",
  "description": "AI-powered search and retrieval platform. Search the web, read page content, extract structured data, and ground AI responses.",
  "registryUrl": "https://smithery.ai/server/jina",
  "homepageUrl": "https://jina.ai",
  "iconUrl": "https://api.smithery.ai/servers/jina/icon",
  "createdAt": "2026-03-29T10:46:47.133Z",
  "useCount": 79211,
  "verified": true,
  "publishedBySmithery": true,
  "remoteAvailable": true,
  "hosted": true,
  "hostedUrl": null,
  "connectionType": null,
  "capabilities": null
}
```

#### 💳 Pricing

This Actor uses pay-per-event pricing. You are charged for each Smithery MCP server saved to the dataset. Empty searches, unknown IDs, skipped duplicate matches, and work that saves no server do not create this server charge.

#### 🔌 Integrations

Use the dataset through the Apify API, download it as JSON, CSV, or Excel, run it on a schedule, or send rows to other tools with Apify integrations.

https://www.youtube.com/watch?v=bNACk1\_S\_6w\&list=PLObrtcm1Kw6MUrlLNDbK9QRg8VDJg0gOW\&index=4

#### ❓ FAQ

##### Does this Actor run MCP servers?

No. It finds and exports public registry records. It does not connect to or call the listed servers.

##### Can I collect only verified Smithery servers?

Yes. Turn on **Verified servers only** for a Catalog or Search run. Verification is the status reported by Smithery, not a new check by this Actor.

##### What happens when capability details are off?

The row still contains the main server metadata. `capabilities` is `null`, and some connection fields can also be `null` when Smithery does not provide them in the main result.

##### Can I export the full Smithery catalog?

Yes. Choose Catalog and leave **Maximum servers** empty. The Actor returns all available results until the source is exhausted.

##### Is this a Smithery AI alternative?

It is an export tool for public Smithery registry data. It does not replace Smithery hosting, installation, or MCP server use.

### 📝 Changelog

#### 0.0: Initial release

- Browse or search the public Smithery registry, or collect servers by exact ID.
- Export server metadata, trust signals, deployment details, and optional capability definitions.

### 🆘 Support

For issues, questions, or feature requests, [file a ticket](https://console.apify.com/actors/maximedupre~smithery-mcp/issues) and I'll fix or implement it in less than 24h 🫡

### 🔗 Related Actors

- [Glama MCP Registry Scraper](https://apify.com/maximedupre/glama-mcp-registry-scraper) — Export public Glama MCP server metadata, repository facts, and readiness fields.
- [ChatGPT Marketplace Scraper](https://apify.com/maximedupre/chatgpt-marketplace-scraper) — Collect public custom GPT listings for nearby AI tool directory research.
- [MCP.so Server Directory Scraper](https://apify.com/jungle_synthesizer/mcp-so-server-directory-scraper) — Export another public MCP server directory with install and repository data.
- [MCP Registry API — Server Metadata Export](https://apify.com/tugelbay/multi-registry-mcp-intelligence) — Search the official MCP Registry and export server metadata.
- [MCP Server Registry and Security Scorer](https://apify.com/george.the.developer/mcp-server-registry-scorer) — Add package facts and risk signals to official MCP Registry server profiles.

**Made with ❤️ by Maxime Dupré**

# Actor input Schema

## `target` (type: `string`):

How to find public MCP servers in the Smithery registry.

## `query` (type: `string`):

Keywords to search for in the Smithery registry.

## `serverIds` (type: `array`):

Exact Smithery server IDs to collect, such as @smithery-ai/server-sequential-thinking.

## `verifiedOnly` (type: `boolean`):

Keep only servers marked as verified by Smithery. This applies to Catalog and Search.

## `includeCapabilities` (type: `boolean`):

Also collect structured tools, resources, prompts, capability counts, and connection requirements. This takes more time.

## `maxItems` (type: `integer`):

Stop after saving this many servers. This applies to Catalog and Search. Leave it empty to collect all available results.

## Actor input object example

```json
{
  "target": "catalog",
  "verifiedOnly": false,
  "includeCapabilities": false,
  "maxItems": 5
}
```

# Actor output Schema

## `results` (type: `string`):

Open the default dataset with one saved MCP server per row.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "target": "catalog",
    "maxItems": 5
};

// Run the Actor and wait for it to finish
const run = await client.actor("maximedupre/smithery-mcp").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "target": "catalog",
    "maxItems": 5,
}

# Run the Actor and wait for it to finish
run = client.actor("maximedupre/smithery-mcp").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "target": "catalog",
  "maxItems": 5
}' |
apify call maximedupre/smithery-mcp --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=maximedupre/smithery-mcp",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/c1Fvzz8a1ykPVj8rf/builds/QL3brKXuyLOf8jgtx/openapi.json
