Skip to main content
Glama

OpenZeppelin Contracts MCP Server

Official
by OpenZeppelin
custom.ts1.58 kB
import type { Contract } from './contract'; import { ContractBuilder } from './contract'; import type { CommonOptions } from './common-options'; import { withCommonDefaults, defaults as commonDefaults } from './common-options'; import { setUpgradeable } from './set-upgradeable'; import { setInfo } from './set-info'; import { setAccessControl } from './set-access-control'; import { addPausable } from './add-pausable'; import { printContract } from './print'; export interface CustomOptions extends CommonOptions { name: string; pausable?: boolean; } export const defaults: Required<CustomOptions> = { name: 'MyContract', pausable: false, access: commonDefaults.access, upgradeable: commonDefaults.upgradeable, info: commonDefaults.info, } as const; function withDefaults(opts: CustomOptions): Required<CustomOptions> { return { ...opts, ...withCommonDefaults(opts), pausable: opts.pausable ?? defaults.pausable, }; } export function printCustom(opts: CustomOptions = defaults): string { return printContract(buildCustom(opts)); } export function isAccessControlRequired(opts: Partial<CustomOptions>): boolean { return opts.pausable || opts.upgradeable === 'uups'; } export function buildCustom(opts: CustomOptions): Contract { const allOpts = withDefaults(opts); const c = new ContractBuilder(allOpts.name); const { access, upgradeable, info } = allOpts; if (allOpts.pausable) { addPausable(c, access, []); } setAccessControl(c, access); setUpgradeable(c, upgradeable, access); setInfo(c, info); return c; }

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