safe mcp server

Local 2025-08-31 23:17:03 0

An MCP server that enables interaction with Safe (formerly Gnosis Safe) smart contract wallets, allowing users to query transactions, get multisig details, and decode transaction data through natural language.


An MCP (Model Context Protocol) server implementation for interacting with Safe (formerly Gnosis Safe) smart contract wallets.

Features

  • Query Safe transactions for any Safe address
  • Get multisig transaction details
  • Decode transaction data
  • Safe API integration

Installation

npm install

Usage

npm run build
npm start

No configuration is required - the server uses the Safe Transaction API mainnet endpoint by default.

Available Tools

getSafeTransactions

Get all transactions for any Safe address. The Safe address is determined by the LLM at runtime based on the context of the conversation.

// Example tool call
getSafeTransactions({
  address: "0x123...", // Safe address determined by LLM
  limit: 100, // optional
  offset: 0, // optional
});

getMultisigTransaction

Get details of a specific multisig transaction.

getMultisigTransaction({
  safeTxHash: "0x456...", // Transaction hash to query
});

decodeTransactionData

Decode transaction data using Safe API.

decodeTransactionData({
  data: "0x789...", // Transaction data to decode
  to: "0xabc...", // Optional contract address
});

Configuration (Optional)

By default, the server uses the Safe Transaction API mainnet endpoint:

https://safe-transaction-mainnet.safe.global/api/v1

If you need to use a different endpoint (e.g., for testnet), you can set it via environment variable:

SAFE_API_URL=https://safe-transaction-goerli.safe.global/api/v1 npm start

Development

npm run dev

License

MIT

[
  {
    "description": "Get all transactions for a Safe address",
    "inputSchema": {
      "properties": {
        "address": {
          "description": "Safe address",
          "type": "string"
        },
        "limit": {
          "description": "Number of transactions to return",
          "type": "number"
        },
        "offset": {
          "description": "Offset for pagination",
          "type": "number"
        }
      },
      "required": [
        "address"
      ],
      "type": "object"
    },
    "name": "getSafeTransactions"
  },
  {
    "description": "Get details of a specific multisig transaction",
    "inputSchema": {
      "properties": {
        "safeTxHash": {
          "description": "Safe transaction hash",
          "type": "string"
        }
      },
      "required": [
        "safeTxHash"
      ],
      "type": "object"
    },
    "name": "getMultisigTransaction"
  },
  {
    "description": "Decode transaction data using Safe API",
    "inputSchema": {
      "properties": {
        "data": {
          "description": "Transaction data in hex format",
          "type": "string"
        },
        "to": {
          "description": "Optional contract address",
          "type": "string"
        }
      },
      "required": [
        "data"
      ],
      "type": "object"
    },
    "name": "decodeTransactionData"
  }
]