openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
59 lines (58 loc) • 3.04 kB
JavaScript
import { n as getRuntimeConfig } from "../io.runtime-B9iJRs3w.js";
import { t as formatErrorMessage } from "../errors-Db3Ymjlb.js";
import { t as AUTOMATIONS_TOOL_NAME } from "../automations-tool-name-DBMZPbPL.js";
import "../config-Cs0XXL3x.js";
import { t as createCronTool } from "../cron-tool-DbVyRyAj.js";
import { a as resolveToolsMcpAgentSessionKey, i as resolveToolsMcpAgentId, n as createToolsMcpServer, o as resolveToolsMcpSessionContext, r as OPENCLAW_TOOLS_MCP_AGENT_SESSION_KEY_ENV, t as connectToolsMcpServerToStdio } from "../tools-stdio-server-DFc7sxGX.js";
import { t as createSystemAgentTool } from "../system-agent-tool-C7zE6CF2.js";
import { c as resolveOpenClawToolsMcpToolSelection, i as OPENCLAW_TOOLS_MCP_TOOLS_ENV, o as resolveOpenClawToolsMcpSystemAgentApproval, r as OPENCLAW_TOOLS_MCP_SYSTEM_AGENT_SURFACE_ENV, s as resolveOpenClawToolsMcpSystemAgentSurface } from "../openclaw-tools-serve-config-BpDM9GLM.js";
import { pathToFileURL } from "node:url";
import "@modelcontextprotocol/sdk/server/index.js";
//#region src/mcp/openclaw-tools-serve.ts
/**
* Standalone MCP server for selected built-in OpenClaw tools.
*
* Run via: node --import tsx src/mcp/openclaw-tools-serve.ts
* Or: bun src/mcp/openclaw-tools-serve.ts
*/
function resolveOpenClawToolsMcpAgentSessionKey(env = process.env) {
return resolveToolsMcpAgentSessionKey(env);
}
function resolveOpenClawToolsForMcp(params = {}) {
return (params.tools ?? resolveOpenClawToolsMcpToolSelection()).map((tool) => {
if (tool === "openclaw") return createSystemAgentTool({
agentId: params.agentId,
surface: params.systemAgentSurface ?? resolveOpenClawToolsMcpSystemAgentSurface(),
...resolveOpenClawToolsMcpSystemAgentApproval()
});
const agentSessionKey = (params.agentSessionKey ?? resolveOpenClawToolsMcpAgentSessionKey())?.trim();
if (!agentSessionKey) throw new Error(`${OPENCLAW_TOOLS_MCP_AGENT_SESSION_KEY_ENV} is required`);
const context = resolveToolsMcpSessionContext({
agentSessionKey,
agentId: params.agentId
});
return createCronTool({
agentSessionKey,
agentId: context.agentId,
config: params.config ?? getRuntimeConfig(),
creatorToolAllowlist: [{ name: AUTOMATIONS_TOOL_NAME }]
});
});
}
function createOpenClawToolsMcpServer(params = {}) {
const tools = params.tools ?? resolveOpenClawToolsForMcp();
return createToolsMcpServer({
name: "openclaw-tools",
tools
});
}
async function serveOpenClawToolsMcp() {
const server = createOpenClawToolsMcpServer({ tools: resolveOpenClawToolsForMcp({ agentId: resolveToolsMcpAgentId() }) });
await connectToolsMcpServerToStdio(server);
}
if (import.meta.url === pathToFileURL(process.argv[1] ?? "").href) serveOpenClawToolsMcp().catch((err) => {
process.stderr.write(`openclaw-tools-serve: ${formatErrorMessage(err)}\n`);
process.exit(1);
});
//#endregion
export { OPENCLAW_TOOLS_MCP_AGENT_SESSION_KEY_ENV, OPENCLAW_TOOLS_MCP_SYSTEM_AGENT_SURFACE_ENV, OPENCLAW_TOOLS_MCP_TOOLS_ENV, resolveOpenClawToolsForMcp, resolveOpenClawToolsMcpAgentSessionKey };