Skip to main content
Glama

OpenZeppelin Contracts MCP Server

Official
by OpenZeppelin
options.ts1.57 kB
import path from 'path'; import type { Contract, ReferencedContract, ImportContract } from './contract'; import { inferTranspiled } from './infer-transpiled'; export function upgradeableName(n: string) { if (n === 'Initializable') { return n; } else { return n.replace(/(Upgradeable)?(?=\.|$)/, 'Upgradeable'); } } export function upgradeableImport(p: ImportContract): ImportContract { const { dir, ext, name } = path.parse(p.path); // Use path.posix to get forward slashes return { ...p, name: upgradeableName(p.name), // Contract name path: path.posix.format({ ext, dir: dir.replace(/^@openzeppelin\/contracts/, '@openzeppelin/contracts-upgradeable'), name: upgradeableName(name), // Solidity file name }), }; } export interface Options { transformImport?: (parent: ImportContract) => ImportContract; } export interface Helpers extends Required<Options> { upgradeable: boolean; transformName: (name: ReferencedContract) => string; transformImport: (name: ImportContract) => ImportContract; } export function withHelpers(contract: Contract, opts: Options = {}): Helpers { const contractUpgradeable = contract.upgradeable; return { upgradeable: contractUpgradeable, transformName: (n: ReferencedContract) => contractUpgradeable && inferTranspiled(n) ? upgradeableName(n.name) : n.name, transformImport: (p1: ImportContract) => { const p2 = contractUpgradeable && inferTranspiled(p1) ? upgradeableImport(p1) : p1; return opts.transformImport?.(p2) ?? p2; }, }; }

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/OpenZeppelin/contracts-wizard'

If you have feedback or need assistance with the MCP directory API, please join our Discord server