@clervo/mcp
Advanced tools
+6
-1
| #!/usr/bin/env node | ||
| import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'; | ||
| import { createClervoMcpServer } from './server.js'; | ||
| const server = createClervoMcpServer(); | ||
| const argv = process.argv.slice(2); | ||
| const profileIndex = argv.indexOf('--profile'); | ||
| const inlineProfile = argv.find((value) => value.startsWith('--profile='))?.slice('--profile='.length); | ||
| const profile = inlineProfile ?? (profileIndex >= 0 ? argv[profileIndex + 1] : undefined); | ||
| const autoPay = argv.includes('--auto-pay') || process.env.CLERVO_AUTO_PAY === 'true'; | ||
| const server = createClervoMcpServer({ ...(profile === undefined ? {} : { profile }), autoPay }); | ||
| const transport = new StdioServerTransport(); | ||
@@ -6,0 +11,0 @@ try { |
+1
-1
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEpD,MAAM,MAAM,GAAG,qBAAqB,EAAE,CAAC;AACvC,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAE7C,IAAI,CAAC;IACH,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC;AAAC,OAAO,KAAK,EAAE,CAAC;IACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,IAAI,CAAC,CAAC;IACzG,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC"} | ||
| {"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEpD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AAC/C,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AACvG,MAAM,OAAO,GAAG,aAAa,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAC1F,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,MAAM,CAAC;AACtF,MAAM,MAAM,GAAG,qBAAqB,CAAC,EAAE,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;AACjG,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAE7C,IAAI,CAAC;IACH,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC;AAAC,OAAO,KAAK,EAAE,CAAC;IACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,IAAI,CAAC,CAAC;IACzG,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC"} |
+37
-3
| import { type ClervoAiRequest, type ClervoSearchRequest } from '@clervo/sdk'; | ||
| import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'; | ||
| import { ClervoConnect, type Registry } from '@clervo/router'; | ||
| export type ClervoMcpProfile = 'full' | 'research' | 'ai' | 'prediction' | 'crypto' | 'sandbox'; | ||
| export declare const CLERVO_MCP_TOOLS: readonly [Readonly<{ | ||
@@ -7,5 +9,2 @@ name: "search_web"; | ||
| }>, Readonly<{ | ||
| name: "search_answer"; | ||
| operationId: "search.answer"; | ||
| }>, Readonly<{ | ||
| name: "models_list"; | ||
@@ -16,2 +15,20 @@ operationId: "ai.catalog"; | ||
| operationId: "ai.execute"; | ||
| }>, Readonly<{ | ||
| name: "clervo_execute"; | ||
| operationId: "connect.execute"; | ||
| }>, Readonly<{ | ||
| name: "connect_status"; | ||
| operationId: "connect.status"; | ||
| }>, Readonly<{ | ||
| name: "spend_limits"; | ||
| operationId: "connect.limits"; | ||
| }>, Readonly<{ | ||
| name: "local_usage"; | ||
| operationId: "connect.usage"; | ||
| }>, Readonly<{ | ||
| name: "reconcile"; | ||
| operationId: "connect.reconcile"; | ||
| }>, Readonly<{ | ||
| name: "doctor"; | ||
| operationId: "connect.doctor"; | ||
| }>]; | ||
@@ -53,2 +70,8 @@ export interface ClervoMcpClient { | ||
| } | ||
| export interface ExecuteToolInput { | ||
| productId: string; | ||
| body: Record<string, unknown>; | ||
| idempotencyKey?: string | undefined; | ||
| paid?: boolean | undefined; | ||
| } | ||
| export interface ToolResult { | ||
@@ -67,6 +90,17 @@ [key: string]: unknown; | ||
| ai_execute(input: AiToolInput): Promise<ToolResult>; | ||
| clervo_execute(input: ExecuteToolInput): Promise<ToolResult>; | ||
| connect_status(): Promise<ToolResult>; | ||
| spend_limits(): Promise<ToolResult>; | ||
| local_usage(): Promise<ToolResult>; | ||
| reconcile(): Promise<ToolResult>; | ||
| doctor(): Promise<ToolResult>; | ||
| }; | ||
| export declare function createConnectToolHandlers(client: ClervoMcpClient, connect: ClervoConnect, profile: ClervoMcpProfile, legacyClient?: boolean): ReturnType<typeof createToolHandlers>; | ||
| export declare function createClervoMcpServer(options?: { | ||
| client?: ClervoMcpClient; | ||
| baseUrl?: string; | ||
| profile?: string; | ||
| autoPay?: boolean; | ||
| env?: NodeJS.ProcessEnv; | ||
| registry?: Registry; | ||
| }): McpServer; |
+118
-29
| import { ClervoClient, ClervoPaymentRequiredError, ClervoProblemError, recoveryActionFor, } from '@clervo/sdk'; | ||
| import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'; | ||
| import { z } from 'zod'; | ||
| import { ClervoConnect, RouterError } from '@clervo/router'; | ||
| const PROFILE_FAMILIES = Object.freeze({ | ||
| full: Object.freeze(['search', 'ai', 'prediction', 'crypto_intelligence', 'sandbox']), | ||
| research: Object.freeze(['search']), | ||
| ai: Object.freeze(['ai']), | ||
| prediction: Object.freeze(['prediction']), | ||
| crypto: Object.freeze(['crypto_intelligence']), | ||
| sandbox: Object.freeze(['sandbox']), | ||
| }); | ||
| function profileName(value) { | ||
| if (value === undefined || value === '') | ||
| return 'full'; | ||
| if (Object.hasOwn(PROFILE_FAMILIES, value)) | ||
| return value; | ||
| throw new TypeError(`unknown_clervo_mcp_profile:${value}`); | ||
| } | ||
| export const CLERVO_MCP_TOOLS = Object.freeze([ | ||
| Object.freeze({ name: 'search_web', operationId: 'search.web' }), | ||
| Object.freeze({ name: 'search_answer', operationId: 'search.answer' }), | ||
| Object.freeze({ name: 'models_list', operationId: 'ai.catalog' }), | ||
| Object.freeze({ name: 'ai_execute', operationId: 'ai.execute' }), | ||
| Object.freeze({ name: 'clervo_execute', operationId: 'connect.execute' }), | ||
| Object.freeze({ name: 'connect_status', operationId: 'connect.status' }), | ||
| Object.freeze({ name: 'spend_limits', operationId: 'connect.limits' }), | ||
| Object.freeze({ name: 'local_usage', operationId: 'connect.usage' }), | ||
| Object.freeze({ name: 'reconcile', operationId: 'connect.reconcile' }), | ||
| Object.freeze({ name: 'doctor', operationId: 'connect.doctor' }), | ||
| ]); | ||
@@ -15,2 +36,8 @@ function text(value) { | ||
| const recovery = recoveryActionFor(error); | ||
| if (error instanceof RouterError) { | ||
| return { | ||
| content: [{ type: 'text', text: JSON.stringify({ error: error.code, detail: error.message, ...(recovery === undefined ? {} : { recovery }) }) }], | ||
| isError: true, | ||
| }; | ||
| } | ||
| if (error instanceof ClervoPaymentRequiredError) { | ||
@@ -52,2 +79,10 @@ const payable = error.problem.payable === true || Array.isArray(error.problem.accepts); | ||
| export function createToolHandlers(client) { | ||
| const connect = new ClervoConnect({ surface: 'mcp', autoPay: false }); | ||
| return createConnectToolHandlers(client, connect, 'full', true); | ||
| } | ||
| function familyFor(productId) { | ||
| const family = productId.split('.', 1)[0] ?? ''; | ||
| return family === 'crypto' ? 'crypto_intelligence' : family; | ||
| } | ||
| export function createConnectToolHandlers(client, connect, profile, legacyClient = false) { | ||
| const execute = async (productId, input) => { | ||
@@ -57,2 +92,3 @@ try { | ||
| query: input.query, | ||
| synthesize: productId === 'search.answer', | ||
| ...(input.maxResults === undefined ? {} : { maxResults: input.maxResults }), | ||
@@ -67,3 +103,3 @@ ...(input.language === undefined ? {} : { language: input.language }), | ||
| const value = productId === 'search.web' | ||
| ? await client.search.web(request, options) | ||
| ? legacyClient ? await client.search.web(request, options) : await connect.execute('search.web', request, input.idempotencyKey, { paid: input.mode === 'challenge' }) | ||
| : await client.search.answer(request, options); | ||
@@ -89,3 +125,3 @@ return text(value); | ||
| try { | ||
| return text(await client.ai.execute({ | ||
| const body = { | ||
| model: input.model, | ||
@@ -95,3 +131,7 @@ input: input.input, | ||
| ...(input.maximumReasoningTokens === undefined ? {} : { maximumReasoningTokens: input.maximumReasoningTokens }), | ||
| }, input.idempotencyKey === undefined ? {} : { idempotencyKey: input.idempotencyKey })); | ||
| }; | ||
| const productId = input.input.kind === 'embedding' ? 'ai.embed' : input.input.kind === 'image' ? 'ai.image' : input.input.kind === 'speech' ? 'ai.speech' : input.input.kind === 'video' ? 'ai.video' : input.input.kind === 'music' ? 'ai.music' : input.input.kind === 'virtual_try_on' ? 'ai.virtual_try_on' : 'ai.chat'; | ||
| return text(legacyClient | ||
| ? await client.ai.execute(body, input.idempotencyKey === undefined ? {} : { idempotencyKey: input.idempotencyKey }) | ||
| : await connect.execute(productId, body, input.idempotencyKey)); | ||
| } | ||
@@ -102,2 +142,31 @@ catch (error) { | ||
| }, | ||
| clervo_execute: async (input) => { | ||
| try { | ||
| const registry = await connect.registry(); | ||
| const allowedFamilies = PROFILE_FAMILIES[profile]; | ||
| const family = familyFor(input.productId); | ||
| const capability = registry.capabilities.find(({ productId }) => productId === input.productId); | ||
| if (!allowedFamilies.includes(family) || capability === undefined || !capability.paidCallable) | ||
| throw new RouterError('operation_not_served_in_profile', `${input.productId} is not currently served in the ${profile} profile`); | ||
| return text(await connect.execute(input.productId, input.body, input.idempotencyKey, { paid: input.paid === true })); | ||
| } | ||
| catch (error) { | ||
| return failure(error); | ||
| } | ||
| }, | ||
| connect_status: async () => text(connect.status()), | ||
| spend_limits: async () => text(connect.limits()), | ||
| local_usage: async () => text(connect.usage()), | ||
| reconcile: async () => { try { | ||
| return text(await connect.reconcile()); | ||
| } | ||
| catch (error) { | ||
| return failure(error); | ||
| } }, | ||
| doctor: async () => { try { | ||
| return text(await connect.doctor()); | ||
| } | ||
| catch (error) { | ||
| return failure(error); | ||
| } }, | ||
| }); | ||
@@ -121,32 +190,52 @@ } | ||
| export function createClervoMcpServer(options = {}) { | ||
| const profile = profileName(options.profile ?? process.env.CLERVO_MCP_PROFILE); | ||
| const baseUrl = options.baseUrl ?? process.env.CLERVO_BASE_URL ?? 'https://api.clervo.dev'; | ||
| const client = options.client ?? new ClervoClient({ baseUrl }); | ||
| const server = new McpServer({ name: 'clervo', version: '0.4.1' }); | ||
| const handlers = createToolHandlers(client); | ||
| server.registerTool('search_web', { | ||
| title: 'Clervo web evidence preview', | ||
| description: 'Runs the live bounded free Search route or obtains its exact paid challenge without signing.', | ||
| inputSchema, | ||
| annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true }, | ||
| }, async (input) => handlers.search_web(input)); | ||
| server.registerTool('search_answer', { | ||
| title: 'Clervo cited answer preview', | ||
| description: 'Runs cited synthesis with the product identity fixed by the tool contract; the MCP server never signs or pays.', | ||
| inputSchema, | ||
| annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true }, | ||
| }, async (input) => handlers.search_answer(input)); | ||
| server.registerTool('models_list', { | ||
| title: 'List the live Clervo AI catalog', | ||
| description: 'Returns stable provider-neutral model IDs, capabilities, health, availability, free/paid state, pricing, and commerce metadata.', | ||
| inputSchema: {}, | ||
| annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true }, | ||
| }, async () => handlers.models_list()); | ||
| server.registerTool('ai_execute', { | ||
| title: 'Execute a normalized Clervo AI request', | ||
| description: 'Executes a free model or returns the exact paid challenge without signing or paying. The tool never creates a wallet or authorizes payment.', | ||
| inputSchema: aiInputSchema, | ||
| const connectEnv = options.env ?? { ...process.env, CLERVO_API_ORIGIN: baseUrl }; | ||
| const connect = new ClervoConnect({ surface: 'mcp', autoPay: options.autoPay === true, env: connectEnv }); | ||
| const server = new McpServer({ name: `clervo-${profile}`, version: '0.5.0' }); | ||
| const handlers = createConnectToolHandlers(client, connect, profile); | ||
| if (PROFILE_FAMILIES[profile].includes('search')) | ||
| server.registerTool('search_web', { | ||
| title: 'Clervo web evidence preview', | ||
| description: 'Runs the live bounded free Search route or obtains its exact paid challenge without signing.', | ||
| inputSchema, | ||
| annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true }, | ||
| }, async (input) => handlers.search_web(input)); | ||
| if (PROFILE_FAMILIES[profile].includes('ai')) | ||
| server.registerTool('models_list', { | ||
| title: 'List the live Clervo AI catalog', | ||
| description: 'Returns stable provider-neutral model IDs, capabilities, health, availability, free/paid state, pricing, and commerce metadata.', | ||
| inputSchema: {}, | ||
| annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true }, | ||
| }, async () => handlers.models_list()); | ||
| if (PROFILE_FAMILIES[profile].includes('ai')) | ||
| server.registerTool('ai_execute', { | ||
| title: 'Execute a normalized Clervo AI request', | ||
| description: 'Executes a free model or returns the exact paid challenge without signing or paying. The tool never creates a wallet or authorizes payment.', | ||
| inputSchema: aiInputSchema, | ||
| annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true }, | ||
| }, async (input) => handlers.ai_execute(input)); | ||
| server.registerTool('clervo_execute', { | ||
| title: `Execute a currently served Clervo ${profile} operation`, | ||
| description: `Generic execution for the ${profile} profile. Runtime registry truth is checked on every call. Automatic payment is ${connect.autoPay ? 'enabled within local limits' : 'disabled; payable calls return a quote'}.`, | ||
| inputSchema: { | ||
| productId: z.string().trim().min(3).max(160), | ||
| body: z.record(z.string(), z.unknown()), | ||
| idempotencyKey: z.string().regex(/^[A-Za-z0-9_.-]{8,128}$/u).optional(), | ||
| paid: z.boolean().default(false).describe('For a product with a free path, explicitly request its paid path. Signing still requires local --auto-pay opt-in.'), | ||
| }, | ||
| annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true }, | ||
| }, async (input) => handlers.ai_execute(input)); | ||
| }, async (input) => handlers.clervo_execute(input)); | ||
| for (const [name, title, handler] of [ | ||
| ['connect_status', 'Clervo wallet and shared Connect status', handlers.connect_status], | ||
| ['spend_limits', 'Clervo buyer-side spend limits', handlers.spend_limits], | ||
| ['local_usage', 'Clervo durable local usage', handlers.local_usage], | ||
| ['reconcile', 'Reconcile unresolved Clervo operations without a new payment', handlers.reconcile], | ||
| ['doctor', 'Diagnose the local Clervo Connect installation', handlers.doctor], | ||
| ]) { | ||
| server.registerTool(name, { title, description: title, inputSchema: {}, annotations: { readOnlyHint: name !== 'reconcile', destructiveHint: false, idempotentHint: true, openWorldHint: name === 'doctor' } }, async () => handler()); | ||
| } | ||
| return server; | ||
| } | ||
| //# sourceMappingURL=server.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"} |
+4
-3
| { | ||
| "name": "@clervo/mcp", | ||
| "version": "0.4.1", | ||
| "description": "MCP tools for live Clervo Search and provider-neutral AI.", | ||
| "version": "0.5.0", | ||
| "description": "Clervo Connect MCP profiles with one local wallet, live served products, bounded x402, reconciliation, usage, and diagnostics.", | ||
| "license": "MIT", | ||
@@ -46,3 +46,4 @@ "type": "module", | ||
| "dependencies": { | ||
| "@clervo/sdk": "0.4.1", | ||
| "@clervo/sdk": "0.5.0", | ||
| "@clervo/router": "0.3.0", | ||
| "@modelcontextprotocol/sdk": "1.30.0", | ||
@@ -49,0 +50,0 @@ "zod": "4.4.3" |
+23
-15
| # `@clervo/mcp` | ||
| Stdio MCP server for the live Clervo API. It exposes four bounded tools: | ||
| Stdio MCP server for Clervo Connect. A clean one-command install uses the public | ||
| production origin and the same local wallet, limits, receipts and unresolved | ||
| operation state as every other Connect surface: | ||
| - `search_web` → raw cited Search; | ||
| - `search_answer` → cited synthesis; | ||
| - `models_list` → the authoritative provider-neutral AI catalog; | ||
| - `ai_execute` → normalized free execution or an exact paid challenge. | ||
| ```json | ||
| { | ||
| "mcpServers": { | ||
| "clervo": { | ||
| "command": "npx", | ||
| "args": ["-y", "@clervo/mcp"] | ||
| } | ||
| "clervo": { "command": "npx", "args": ["-y", "@clervo/mcp"] } | ||
| } | ||
@@ -21,13 +15,27 @@ } | ||
| Claude Code: | ||
| ```sh | ||
| claude mcp add clervo -s user -- npx -y @clervo/mcp | ||
| ``` | ||
| The default origin is `https://api.clervo.dev`. Set `CLERVO_BASE_URL` only for | ||
| another HTTPS deployment or loopback development. | ||
| `models_list` publishes stable IDs, capabilities, health, availability, | ||
| free/paid state, pricing, and commerce metadata. `ai_execute` can run a free | ||
| model. For a paid model it returns the exact `402` challenge as an MCP error; it | ||
| never creates a wallet, signs, pays, or retries a payment on the agent's behalf. | ||
| Use a stable idempotency key for safe recovery. | ||
| Use `--profile research|ai|prediction|crypto|sandbox|full` to load only the | ||
| schemas relevant to an agent. Profiles are checked against the live registry on | ||
| every execution. RPC is not exposed while runtime truth reports it unavailable. | ||
| Alongside useful Search and AI tools, `clervo_execute` safely exposes operations | ||
| served in the selected profile. `connect_status`, `spend_limits`, `local_usage`, | ||
| `reconcile`, and `doctor` expose shared local state without wallet secrets. | ||
| Automatic payment is off by default. `--auto-pay` is an explicit local opt-in; | ||
| even then, every quote is bounded by the Router's per-operation and daily | ||
| ceilings before signing. Unknown settlement blocks MCP and every other Connect | ||
| surface. Reconciliation and same-key replay carry no fresh payment | ||
| authorization, and the server never blindly retries. | ||
| The package writes MCP protocol messages to stdout and operational failures to | ||
| stderr only. This client code is MIT licensed; use of the hosted Clervo service | ||
| remains subject to its service terms. |
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 3 instances
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
34133
68.97%354
57.33%41
24.24%4
33.33%5
150%+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
- Removed
Updated