Ethereum & EVM Message Signing

io.github.nirholasPublished by GitHub account nirholasv1.0.0Updated Oct 25, 2026

Sign Ethereum messages - EIP-191, EIP-712 typed data, Permit2, signature verification and recovery

VerifiedSTDIODesktop onlyFinanceDeveloper Tools

Overview

AI-generated overview

A local MCP server that lets an assistant sign, verify and recover Ethereum messages and EIP-712 typed data, plus work with signature components.

What you can do
Sign EIP-191 text messages and hex-encoded bytes, then verify or recover the signer address from a signature. Sign EIP-712 typed structured data, verify and recover its signer, and compute the typed-data hash without signing. Break signatures into v, r, s components, compose them back, and normalize between 27/28 and 0/1 v formats. Sign a raw 32-byte hash, which requires explicit risk acknowledgement. Read bundled references on EIP-191, EIP-712, signature formats and common typed-data templates such as Permit, Permit2, Order and Delegation.
When to use it
Useful when developing or testing Ethereum signing flows: producing test signatures, checking whether a signature matches an expected address, debugging EIP-712 structures, or preparing ERC-20 permit and Permit2 payloads.
Requirements
Runs as a local process on the user's machine, installed from PyPI as signing-mcp-server (pip install) and started with the signing-mcp-server command; the manifest also lists uvx as the runner. Desktop client configuration is needed. No accounts, API keys or environment variables are declared. Signing tools take a private key as a tool input.
Before you install
Signing tools accept a private key as an input argument, so any key used is exposed to the assistant and the model provider; use only throwaway development keys. Signing raw hashes and typed data such as permits can authorize real token transfers or approvals, so never sign with a key holding funds. The README states the server is for educational and development purposes only.

Installation

In SourceWeft

  1. Open Ethereum & EVM Message Signing in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

Signing MCP Server

[PyPI] [MCP Registry]

An MCP (Model Context Protocol) server providing comprehensive Ethereum message signing capabilities including EIP-191 personal_sign and EIP-712 typed structured data.

Features

Tools (12 total)

EIP-191 Message Signing
  • sign_message - Sign a text message using EIP-191 personal_sign format
  • sign_message_hex - Sign hex-encoded bytes using EIP-191 format
  • verify_message - Verify an EIP-191 signed message
  • recover_signer - Recover signer address from a signed message
EIP-712 Typed Data
  • sign_typed_data - Sign EIP-712 typed structured data
  • verify_typed_data - Verify an EIP-712 typed data signature
  • recover_typed_data_signer - Recover signer from typed data signature
  • hash_typed_data - Compute EIP-712 hash without signing
Signature Utilities
  • decompose_signature - Break down signature into v, r, s components
  • compose_signature - Compose signature from v, r, s components
  • normalize_signature - Convert between signature formats (27/28 vs 0/1 for v)
Advanced Operations
  • sign_hash - Sign a raw 32-byte hash (requires acknowledgement)

Resources (4 total)

  • eip191-specification - Complete EIP-191 signed data standard
  • eip712-specification - Complete EIP-712 typed data standard
  • signature-formats - Documentation on Ethereum signature formats
  • common-typed-data - Templates for common EIP-712 structures

Prompts (4 total)

  • sign_message_workflow - Guide through message signing process
  • typed_data_workflow - Guide through EIP-712 typed data signing
  • signature_verification - Help verify and debug signatures
  • permit_signing - Specialized workflow for ERC-20 permits

Installation

bash
pip install signing-mcp-server

Or install from source:

bash
cd signing-mcp-serverpip install -e .

Usage

Run the server

bash
signing-mcp-server

Configure in Claude Desktop

Add to your claude_desktop_config.json:

json
{  "mcpServers": {    "signing": {      "command": "signing-mcp-server"    }  }}

Tool Examples

Sign a Message (EIP-191)

python
# Input{    "message": "Hello, Ethereum!",    "private_key": "0x..."}
# Output{    "message": "Hello, Ethereum!",    "signer": "0xABC123...",    "signature": "0x...",    "v": 28,    "r": "0x...",    "s": "0x...",    "message_hash": "0x..."}

Sign Typed Data (EIP-712)

python
# Input{    "typed_data": {        "types": {...},        "primaryType": "Permit",        "domain": {...},        "message": {...}    },    "private_key": "0x..."}
# Output{    "signer": "0xABC123...",    "signature": "0x...",    "domain_separator": "0x...",    "struct_hash": "0x...",    "signing_hash": "0x..."}

Verify a Signature

python
# Input{    "message": "Hello, Ethereum!",    "signature": "0x...",    "expected_address": "0xABC123..."}
# Output{    "is_valid": true,    "recovered_address": "0xABC123...",    "expected_address": "0xABC123...",    "match": true}

Security Notes

  1. Private keys are NEVER logged or persisted
  2. sign_hash requires explicit risk acknowledgement - signing raw hashes can be dangerous
  3. All operations use eth-account's secure implementations
  4. For educational and development purposes only

EIP-712 Templates

The server includes templates for common typed data structures:

  • Permit - ERC-20 token permits (EIP-2612)
  • Permit2 - Uniswap's universal permit system
  • Order - DEX limit orders
  • Delegation - Voting power delegation
  • Mail - EIP-712 specification example

License

MIT

Source: signing-mcp-server/README.md at commit dabb599

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v1.0.0LatestSep 16, 2026

Score

40% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

    Declare a license in the repository or the registry entry.