Skip to main content
Glama

OpenZeppelin Contracts MCP Server

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