@clerk/clerk-mcp
Version:
An MCP server for Clerk generated by @buildwithalyer
39 lines (33 loc) • 1.17 kB
text/typescript
import addAPITools from "@buildwithlayer/openapi-to-tools/mcp.js";
import type { APITool } from "@buildwithlayer/openapi-to-tools/types.js";
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { Config } from "./config.js";
import { registerPromptsAsTools } from "./prompts.js";
import { tools } from "./tools.js";
const server = new McpServer(
{
name: "clerk-mcp",
version: "1.0.0",
},
{
capabilities: {
tools: {},
},
},
);
// Filters all clerk MCP tools to selected few most likely for MCP use
let workingTools: APITool[] = tools as APITool[];
if (!(process.env.ALL_TOOLS === 'true')) {
workingTools = workingTools.filter((tool) => Config.defaultTools.includes(tool.name));
}
addAPITools(server, workingTools as APITool[], {
bearerAuth: process.env.CLERK_API_KEY,
});
// A temporary workaround while most clients do not support prompts
if (!(process.env.PROMPTS_DISABLED === 'true')) {
registerPromptsAsTools(server);
}
const transport = new StdioServerTransport();
await server.connect(transport);