Sign In

allmcps-server

Package Overview
Dependencies
Maintainers
1
Versions
6
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

allmcps-server - npm Package Compare versions

Comparing version
1.0.2
to
2.0.0
+26
-98
dist/index.js

@@ -7,3 +7,3 @@ #!/usr/bin/env node

name: "allmcps-server",
version: "1.0.2",
version: "2.0.0",
}, {

@@ -14,102 +14,30 @@ capabilities: {

});
// The human-facing /api/submit requires a Turnstile CAPTCHA token that a headless
// agent has no way to solve. /api/v1/submit is the agent-facing counterpart: same
// insert path, no Turnstile, but it requires an email (for the claim/verify
// notification) since there's no browser session to fall back on.
const DIRECTORY_API_URL = process.env.ALLMCPS_API_URL || "https://allmcps.com/api/v1/submit";
// This package is a thin stdio<->HTTP bridge to https://allmcps.com/api/mcp, the
// same JSON-RPC endpoint remote MCP clients call directly. Tool definitions and
// behavior (search, install configs, categories, boosting, submission, claim
// verification) live server-side and are fetched fresh on every request, so this
// package never goes stale relative to the live tool set and needs no republish
// when tools are added or changed remotely.
const MCP_ENDPOINT = process.env.ALLMCPS_MCP_URL || "https://allmcps.com/api/mcp";
async function callRemote(method, params) {
const response = await fetch(MCP_ENDPOINT, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ jsonrpc: "2.0", id: 1, method, params }),
});
const data = (await response.json());
if (data.error) {
throw new Error(data.error.message || "Remote MCP request failed.");
}
return data.result;
}
server.setRequestHandler(ListToolsRequestSchema, async () => {
return {
tools: [
{
name: "submit_mcp",
description: "Submit a new Model Context Protocol (MCP) server to the AllMCPs directory.",
inputSchema: {
type: "object",
properties: {
url: {
type: "string",
description: "The GitHub repository URL or website of the MCP server.",
},
name: {
type: "string",
description: "The name of the MCP server.",
},
email: {
type: "string",
description: "Email address for the submission confirmation and listing claim/verify link. Not published on the listing.",
},
description: {
type: "string",
description: "Optional. A brief description of what the server does. If omitted, it will try to pull from the GitHub repo description.",
},
category: {
type: "string",
description: "Optional. The category of the server (e.g., 'Database', 'File System', 'Web Search', 'Development', 'Productivity').",
},
},
required: ["url", "name", "email"],
},
},
],
};
return await callRemote("tools/list");
});
server.setRequestHandler(CallToolRequestSchema, async (request) => {
if (request.params.name !== "submit_mcp") {
throw new Error(`Unknown tool: ${request.params.name}`);
}
const args = request.params.arguments;
if (!args.url) {
throw new Error("The 'url' argument is required.");
}
if (!args.name) {
throw new Error("The 'name' argument is required.");
}
if (!args.email) {
throw new Error("The 'email' argument is required (used for the submission confirmation and claim link).");
}
try {
const response = await fetch(DIRECTORY_API_URL, {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
url: args.url,
name: args.name,
email: args.email,
description: args.description,
category: args.category,
}),
return await callRemote("tools/call", {
name: request.params.name,
arguments: request.params.arguments,
});
const data = await response.json();
if (!response.ok) {
return {
content: [
{
type: "text",
text: `Failed to submit MCP server. Error: ${JSON.stringify(data.error || data)}`,
},
],
isError: true,
};
}
const lines = [
`Successfully submitted "${args.name}" to AllMCPs.com!`,
`Message: ${data.message}`,
`The server is now in the 'pending' queue for review.`,
];
if (data.claim_url) {
lines.push(`\nClaim & verify this listing (get verified instantly by adding the badge below): ${data.claim_url}`);
}
if (data.badge_markdown) {
lines.push(`\nBadge markdown for your README:\n${data.badge_markdown}`);
}
return {
content: [
{
type: "text",
text: lines.join("\n"),
},
],
};
}

@@ -121,3 +49,3 @@ catch (error) {

type: "text",
text: `Network error while submitting to the directory: ${error.message}`,
text: `Error calling AllMCPs: ${error.message}`,
},

@@ -132,3 +60,3 @@ ],

await server.connect(transport);
console.error("AllMCPs Meta Server running on stdio");
console.error(`AllMCPs MCP Server running on stdio (proxying ${MCP_ENDPOINT})`);
}

@@ -135,0 +63,0 @@ main().catch((error) => {

{
"name": "allmcps-server",
"version": "1.0.2",
"description": "The official MCP server for AllMCPs.com - submit and manage tools directly from your AI.",
"version": "2.0.0",
"mcpName": "io.github.jackalope-dev/allmcps-server",
"description": "The official MCP server for AllMCPs.com - search, browse, get install configs, and submit MCP servers directly from your AI agent.",
"main": "dist/index.js",

@@ -6,0 +7,0 @@ "type": "module",

+47
-16

@@ -1,8 +0,26 @@

# allmcps-server
<p align="center">
<img src="assets/logo.png" alt="AllMCPs logo" width="96" height="96">
</p>
The official local MCP server for [AllMCPs.com](https://allmcps.com) — submit a Model Context Protocol (MCP) server to the directory directly from Claude, Cursor, or any MCP-compatible agent.
<h1 align="center">allmcps-server</h1>
<p align="center">
<a href="https://allmcps.com/mcp/allmcps-server?verify=04aa8bd4-c85f-4470-b5b4-19d690d1cc11"><img src="https://allmcps.com/api/badge/allmcps-server" alt="AllMCPs Verified"></a>
<a href="https://www.npmjs.com/package/allmcps-server"><img src="https://img.shields.io/npm/v/allmcps-server.svg" alt="npm version"></a>
<a href="https://www.npmjs.com/package/allmcps-server"><img src="https://img.shields.io/npm/dm/allmcps-server.svg" alt="npm downloads"></a>
<a href="https://github.com/Jackalope-Dev/allmcps-server/blob/master/LICENSE"><img src="https://img.shields.io/npm/l/allmcps-server.svg" alt="MIT license"></a>
</p>
The official local MCP server for [AllMCPs.com](https://allmcps.com) — search, browse, get install configs for, and submit Model Context Protocol (MCP) servers directly from Claude, Cursor, or any MCP-compatible agent.
This package is a thin stdio bridge to the [AllMCPs remote MCP endpoint](https://allmcps.com/api/mcp). Tool
behavior lives server-side, so this package always exposes the current live tool set with no need to
upgrade the package when a tool is added or changed.
> **v2.0.0** replaces the single `submit_mcp` tool with the full tool set below, including a renamed
> `submit_mcp_server` (previously `submit_mcp`). If you depend on the old tool name, pin `allmcps-server@1`.
## Install
Add to your MCP client config (e.g. `claude_desktop_config.json`):
Requires Node.js 18+. Add to your MCP client config (e.g. `claude_desktop_config.json`):

@@ -22,21 +40,34 @@ ```json

### `submit_mcp`
| Tool | Required arguments | Description |
| ----------------------- | --------------------- | ------------------------------------------------------------------------- |
| `search_mcp_servers` | — | Search the directory by keyword and/or category. |
| `get_mcp_install_config`| `id` | Get the install config snippet and docs for a server by ID. |
| `list_mcp_categories` | — | List all categories with server counts. |
| `get_boost_pricing` | — | Get pricing and features for boosting/featuring a listing. |
| `boost_mcp_server` | `id` | Start a sponsorship/boost order — returns a Stripe checkout URL and x402 invoice. |
| `get_boost_status` | `id` | Check boost and verified-badge status for a listing. |
| `submit_mcp_server` | `name`, `url`, `email`| Submit a new MCP server to the directory. |
| `verify_mcp_claim` | `id` | Verify ownership and claim a listing via GitHub README, site badge, or DNS. |
Submit a new MCP server to the AllMCPs directory.
`submit_mcp_server` submissions land in the `pending` review queue at [allmcps.com](https://allmcps.com).
The response includes a `claim_url` and a ready-to-paste `badge_markdown` snippet — adding that badge to
your repo's README verifies the listing instantly instead of waiting on manual review.
| Argument | Required | Description |
| ------------- | -------- | ------------------------------------------------------------------ |
| `url` | yes | GitHub repository URL or website of the MCP server |
| `name` | yes | Server name |
| `email` | yes | Where the claim/verify link and submission confirmation are sent — not published on the listing |
| `description` | no | Short summary (pulled from the repo description if omitted) |
| `category` | no | e.g. `Database`, `File System`, `Web Search`, `Development` |
Every tool's full input schema (including optional arguments like `category`, `description`, `sku`, and
`method`) is available at runtime via the standard MCP `tools/list` call, or by inspecting
[`/api/mcp`](https://allmcps.com/api/mcp) directly.
Submissions land in the `pending` review queue at [allmcps.com](https://allmcps.com). The response
includes a `claim_url` and a ready-to-paste `badge_markdown` snippet — adding that badge to your
repo's README verifies the listing instantly instead of waiting on manual review.
## Configuration
| Environment variable | Default | Purpose |
| --------------------- | ------------------------------ | ----------------------------------------- |
| `ALLMCPS_MCP_URL` | `https://allmcps.com/api/mcp` | Override the remote endpoint this package bridges to. |
## Related
- Directory API docs: https://allmcps.com/docs/api
- Remote MCP server (search, install configs, categories): https://allmcps.com/api/mcp
- Remote MCP server (same tools, called directly over HTTP): https://allmcps.com/api/mcp
## License
MIT © [Jackalope Digital](https://jackalope.digital) — see [LICENSE](LICENSE).