TypeScript framework for building MCP servers with built-in OAuth (21 providers), secret injection, middleware, multi-user JWT auth, and worker routes. Wraps @modelcontextprotocol/sdk.
Config is the same across clients — only the file and path differ.
{
"mcpServers": {
"arcade-mcp-ts": {
"args": [
"-y",
"@arcadeai/arcade-mcp"
],
"command": "npx"
}
}
}Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
TypeScript MCP framework with secret injection, OAuth auth providers, multi-user support, worker routes, and middleware. Wraps the official @modelcontextprotocol/sdk — never forks or patches it.
Run this in your terminal to verify the server starts. Then let us know if it worked — your result helps other developers.
npx -y '@arcadeai/arcade-mcp' 2>&1 | head -1 && echo "✓ Server started successfully"
After testing, let us know if it worked:
Five weighted categories — click any category to see the underlying evidence.
No known CVEs.
Checked @arcadeai/arcade-mcp against OSV.dev.
Be the first to review
Have you used this server?
Share your experience — it helps other developers decide.
Sign in to write a review.
Others in developer-tools / security
Manage Supabase projects — databases, auth, storage, and edge functions
XcodeBuildMCP provides tools for Xcode project management, simulator management, and app utilities.
A Model Context Protocol (MCP) server and CLI that provides tools for agent use when working on iOS and macOS projects.
MCP server for using the GitLab API
MCP Security Weekly
Get CVE alerts and security updates for Arcade Mcp Ts and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.
TypeScript MCP framework with secret injection, OAuth auth providers, multi-user support, worker routes, and middleware. Wraps the official @modelcontextprotocol/sdk — never forks or patches it.
bun add @arcadeai/arcade-mcp
import { MCPApp } from "@arcadeai/arcade-mcp";
import { z } from "zod";
const app = new MCPApp({
name: "MyServer",
version: "1.0.0",
instructions: "A helpful tool server",
});
app.tool(
"greet",
{
description: "Greet someone by name",
parameters: z.object({
name: z.string().describe("Name to greet"),
}),
},
async (args) => `Hello, ${args.name}!`,
);
app.run(); // stdio by default
Run it:
bun run server.ts
Or over HTTP:
app.run({ transport: "http", port: 8000 });
Run an MCP server without writing a server file. The CLI auto-discovers tool modules in the current directory:
npx @arcadeai/arcade-mcp # auto-discover tools, run stdio
npx @arcadeai/arcade-mcp --http # auto-discover tools, run HTTP
Tool modules are discovered from:
*.tools.ts / *.tools.js files (e.g., math.tools.ts)tools/ directory (e.g., tools/greet.ts)Each file should export tool definitions:
// tools/greet.ts
import { z } from "zod";
export const greetTools = {
greet: {
options: {
description: "Greet someone",
parameters: z.object({ name: z.string() }),
},
handler: async (args) => `Hello, ${args.name}!`,
},
};
CLI options:
| Flag | Default | Description |
|---|---|---|
--http | — | Use HTTP transport (default: stdio) |
--host <addr> | 127.0.0.1 | HTTP host |
--port <n> | 8000 | HTTP port |
--name <name> | directory name | App name |
--dir <path> | cwd | Directory to scan |
--dev | — | Auto-reload on file changes (HTTP only) |
Node.js + TypeScript: Use
npx tsx arcade-mcpor Bun to import.tstool files directly.
Watch source files and automatically restart the server on changes:
npx @arcadeai/arcade-mcp --http --dev
Or programmatically:
app.run({ transport: "http", dev: true });
When a .ts, .js, .mts, or .mjs file changes, the server stops, re-imports tool modules with fresh copies, and restarts. Files in node_modules/, dist/, and hidden directories are ignored.
Note: Dev mode only works with HTTP transport. Stdio sessions cannot be restarted.
You can also enable dev mode via the ARCADE_SERVER_RELOAD=1 environment variable.
app.tool(name, options, handler) with method chaining/worker/tools, /worker/tools/invoke, /worker/healthapp.prompt(name, options, handler) with argument validation and runtime managementapp.resource(uri, options, handler) with MIME types and runtime management--dev flag (HTTP only)Last-Event-IDBun.* APIs in library code)