Skip to main content
Glama

OpenZeppelin Contracts MCP Server

Official
by OpenZeppelin
common-components.ts2.74 kB
import type { BaseImplementedTrait, ContractBuilder } from './contract'; import { defineComponents } from './utils/define-components'; export const tokenTypes = ['ERC20', 'ERC721'] as const; export type Token = (typeof tokenTypes)[number]; const components = defineComponents({ SRC5Component: { path: 'openzeppelin::introspection::src5', substorage: { name: 'src5', type: 'SRC5Component::Storage', }, event: { name: 'SRC5Event', type: 'SRC5Component::Event', }, impls: [], }, VotesComponent: { path: 'openzeppelin::governance::votes', substorage: { name: 'votes', type: 'VotesComponent::Storage', }, event: { name: 'VotesEvent', type: 'VotesComponent::Event', }, impls: [ { name: 'VotesInternalImpl', embed: false, value: 'VotesComponent::InternalImpl<ContractState>', }, ], }, NoncesComponent: { path: 'openzeppelin::utils::cryptography::nonces', substorage: { name: 'nonces', type: 'NoncesComponent::Storage', }, event: { name: 'NoncesEvent', type: 'NoncesComponent::Event', }, impls: [ { name: 'NoncesImpl', value: 'NoncesComponent::NoncesImpl<ContractState>', }, ], }, }); export function addSRC5Component(c: ContractBuilder, section?: string) { c.addComponent(components.SRC5Component, [], false); if (!c.interfaceFlags.has('ISRC5')) { c.addImplToComponent(components.SRC5Component, { name: 'SRC5Impl', value: 'SRC5Component::SRC5Impl<ContractState>', section, }); c.addInterfaceFlag('ISRC5'); } } export function addVotesComponent(c: ContractBuilder, name: string, version: string, snip12MetadataSection?: string) { addSNIP12Metadata(c, name, version, snip12MetadataSection); c.addComponent(components.NoncesComponent, [], false); c.addComponent(components.VotesComponent, [], false); c.addImplToComponent(components.VotesComponent, { name: 'VotesImpl', value: `VotesComponent::VotesImpl<ContractState>`, }); } export function addSNIP12Metadata(c: ContractBuilder, name: string, version: string, section?: string) { c.addUseClause('openzeppelin::utils::cryptography::snip12', 'SNIP12Metadata'); const SNIP12Metadata: BaseImplementedTrait = { name: 'SNIP12MetadataImpl', of: 'SNIP12Metadata', tags: [], priority: 0, section, }; c.addImplementedTrait(SNIP12Metadata); c.addFunction(SNIP12Metadata, { name: 'name', args: [], returns: 'felt252', code: [`'${name}'`], }); c.addFunction(SNIP12Metadata, { name: 'version', args: [], returns: 'felt252', code: [`'${version}'`], }); }

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