Skip to main content
Glama

Society Abstract MCP

FastMCP TypeScript server providing comprehensive wallet, token and smart contract utilities for Abstract Testnet/Mainnet

Abstract

TypeScript FastMCP


๐Ÿ› ๏ธ Available Tools

1.

Get native ETH or ERC-20 token balance for any address with ENS support.

Parameters:

  • address (required): Wallet address or ENS name to check balance for

  • tokenAddress (optional): ERC-20 contract address for token balance

  • tokenSymbol (optional): Token symbol (e.g., "USDC") for well-known tokens

Example Usage:

// Get native ETH balance
{ address: "0x1234...abcd" }

// Get ERC-20 balance by contract
{ address: "vitalik.eth", tokenAddress: "0xA0b86a33E6F..." }

// Get balance by token symbol
{ address: "0x1234...abcd", tokenSymbol: "USDC" }

Returns: Human-readable balance as string (e.g., "1.234567")


2.

Transfer native ETH or ERC-20 tokens to another address with ENS support.

Parameters:

  • to (required): Recipient address or ENS name

  • amount (required): Amount to transfer in human-readable format

  • tokenAddress (optional): ERC-20 contract address for token transfers

  • tokenSymbol (optional): Token symbol for well-known tokens

Example Usage:

// Transfer native ETH
{ to: "0x1234...abcd", amount: "0.1" }

// Transfer ERC-20 by contract
{ to: "vitalik.eth", amount: "100", tokenAddress: "0xA0b86a33E6F..." }

// Transfer by token symbol
{ to: "0x1234...abcd", amount: "50", tokenSymbol: "USDC" }

Returns: Transaction hash of the successful transfer


3.

Deploy a new ERC-20 BasicToken contract to Abstract network.

Parameters:

  • name (required): Token name (e.g., "DemoToken")

  • symbol (required): Token symbol/ticker (e.g., "DMT")

  • initialSupply (required): Total supply in wei (18 decimals) as string

Example Usage:

// Deploy 1000 tokens (1000 * 10^18 wei)
{
  name: "MyToken",
  symbol: "MTK",
  initialSupply: "1000000000000000000000"
}

Returns: Deployed contract address and deployment details


4.

Deploy a new Abstract Global Wallet (smart contract account) for a given signer.

Parameters:

  • signer (optional): EOA signer address or ENS name. If omitted, uses server wallet as initial signer

Example Usage:

// Create AGW with specific signer
{ signer: "0x1234...abcd" }

// Create AGW with server wallet as signer
{ }

Returns: Smart account address and deployment transaction hash


5.

Generate a brand-new Externally Owned Account (EOA) with private key and address.

Parameters:

  • random_string (required): Any string for entropy (can be anything)

Example Usage:

{ random_string: "my-random-seed" }

Returns:

  • privateKey: 0x-prefixed 32-byte hex string

  • address: Checksummed Ethereum/Abstract address

โš ๏ธ Security Note: Store the private key securely and never log it.


๐Ÿš€ Quick Start

For MCP Client Integration

{
  "mcpServers": {
    "society-abstract-mcp": {
      "command": "npx",
      "args": ["-y", "society-abstract-mcp@0.1.4"],
      "env": {
        "ABSTRACT_PRIVATE_KEY": "your-private-key-here",
        "ABSTRACT_RPC_URL": "https://api.testnet.abs.xyz",
        "TESTNET": "true",
        "PORT": "3101",
        "MCP_DISABLE_PINGS": "true"
      }
    }
  }
}

Using Local Build

{
  "mcpServers": {
    "society-abstract-mcp-local": {
      "command": "node",
      "args": ["/path/to/your/society_abstract_mcp/dist/server.js"],
      "env": {
        "ABSTRACT_PRIVATE_KEY": "your-private-key-here",
        "ABSTRACT_RPC_URL": "https://api.testnet.abs.xyz",
        "TESTNET": "true",
        "PORT": "3101",
        "MCP_DISABLE_PINGS": "true"
      }
    }
  }
}

For Development

# 1. Install dependencies
npm install

# 2. Build the project
npm run build

# 3. Run development server
npm run dev

# 4. Run tests
npm run test

# 5. Run integration tests (requires funds)
INTEGRATION=1 npm run test:int

๐Ÿ“‹ Environment Variables

Required for MCP Client:

  • ABSTRACT_PRIVATE_KEY: EOA private key that pays gas fees

  • ABSTRACT_RPC_URL: Abstract network RPC URL

  • TESTNET: "true" for testnet, "false" for mainnet

Optional for MCP Client:

  • PORT: HTTP port for the MCP server (default: 3101)

  • MCP_DISABLE_PINGS: "true" to disable ping messages

Note: No .env file needed for production. All variables should be passed by the MCP client.


๐Ÿ—๏ธ Build & Deploy

# Build for production
npm run build

# Start production server
npm start

# Build outputs to dist/ with:
# - ESM modules
# - TypeScript definitions
# - Copied JavaScript assets

๐Ÿงช Testing

  • Unit Tests: npm run test (mocked, no gas required)

  • Integration Tests: INTEGRATION=1 npm run test:int (requires testnet funds)

  • Balance Checker: npm run balance (multi-network balance tool)


๐Ÿ“– Technical Details

  • Framework: FastMCP with TypeScript

  • Networks: Abstract Testnet/Mainnet

  • Standards: ERC-20 tokens, Abstract Global Wallets

  • Dependencies: viem, zksync-ethers, @abstract-foundation/agw-client

  • Build Target: ES2022 (Node.js โ‰ฅ 16.14)


๐Ÿค Contributing

  1. Fork the repository

  2. Create your feature branch (git checkout -b feature/amazing-feature)

  3. Commit your changes (git commit -m 'Add amazing feature')

  4. Push to the branch (git push origin feature/amazing-feature)

  5. Open a Pull Request


๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


๐Ÿ†˜ Support

  • Issues: GitHub Issues

  • Documentation: This README and inline code documentation

  • Community: Join our Telegram


Install Server
A
security โ€“ no known vulnerabilities
F
license - not found
A
quality - confirmed to work

Resources

Looking for Admin?

Admins can modify the Dockerfile, update the server description, and track usage metrics. If you are the server author, to access the admin panel.

Latest Blog Posts

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/wearesociety/abstract_MCP'

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