signer-mcp-server

AdamikHQ/signer-mcp-server

3.1

If you are the rightful owner of signer-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

The Adamik Signer MCP Server is a secure digital signature server for blockchain transactions, designed to work with the Adamik MCP Server for transaction encoding and state introspection.

Tools
6
Resources
0
Prompts
0

Adamik Signer MCP Server

This is an MCP (Model Context Protocol) server that provides digital signature capabilities for blockchain transactions. It is designed to work in tandem with the adamik-mcp-server, which handles transaction encoding and state introspection. This signer server provides a secure interface to sign transactions after confirming user intent.


🚀 Features

  • 🔐 Single Wallet Session: Only one wallet can be connected per session to avoid ambiguity in signature requests.
  • 🔎 Introspect Wallet State: Check whether a wallet is connected and what types of signers are available.
  • 🔑 Key Derivation: Derive public keys from a given signer specification.
  • ✍️ Transaction Signing: Sign encoded payloads in accordance with the Adamik protocol.
  • 📖 Usage Guidance: The readMeFirst tool helps orient LLMs or developers before invoking sensitive actions.

Quick Start

Prerequisites

  • Node.js (v20 or higher)
  • MCP Client such as:
    • Claude Desktop (download) with Claude Pro subscription
    • FastAgent
    • NextChat
  • Signer Provider Account (choose one):
    • Turnkey for production
    • Dfns for enterprise
    • Sodot for MPC solutions
    • Local seed (testing only)

Installation

npx @adamik/signer-mcp-server

Configuration

Add the signer server to your MCP client configuration and choose one of the following provider setups:

For Claude Desktop / NextChat (JSON)
{
  "mcpServers": {
    "adamik-signer": {
      "command": "npx",
      "args": ["@adamik/signer-mcp-server"],
      "env": {
        // Add provider-specific environment variables (see sections below)
      }
    }
  }
}
For FastAgent (YAML)
mcp:
  servers:
    adamik-signer:
      command: "npx"
      args: ["@adamik/signer-mcp-server"]
      env:
        # Add provider-specific environment variables (see sections below)

Signer Provider Setup

Choose one of the following providers and add their environment variables to your MCP client configuration:

Local Seed (For Testing Only)

SEED_PHRASE="your 24 word BIP39 mnemonic phrase here"

⚠️ Warning: Only use for testing. Not secure for production.

Example Configuration:

{
  "mcpServers": {
    "adamik-signer": {
      "command": "npx",
      "args": ["@adamik/signer-mcp-server"],
      "env": {
        "SEED_PHRASE": "abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about"
      }
    }
  }
}

Turnkey

TURNKEY_BASE_URL="https://api.turnkey.com"
TURNKEY_API_PUBLIC_KEY="<your-turnkey-public-key>"
TURNKEY_API_PRIVATE_KEY="<your-turnkey-private-key>"
TURNKEY_ORGANIZATION_ID="<your-organization-id>"
TURNKEY_WALLET_ID="<your-wallet-id>"

Example Configuration:

{
  "mcpServers": {
    "adamik-signer": {
      "command": "npx",
      "args": ["@adamik/signer-mcp-server"],
      "env": {
        "TURNKEY_BASE_URL": "https://api.turnkey.com",
        "TURNKEY_API_PUBLIC_KEY": "02abcd1234...",
        "TURNKEY_API_PRIVATE_KEY": "your-private-key",
        "TURNKEY_ORGANIZATION_ID": "your-org-id",
        "TURNKEY_WALLET_ID": "your-wallet-id"
      }
    }
  }
}

Dfns

DFNS_CRED_ID="<your-credential-id>"
DFNS_PRIVATE_KEY="<your-private-key>"
DFNS_APP_ID="<your-app-id>"
DFNS_AUTH_TOKEN="<your-auth-token>"
DFNS_API_URL="<your-api-url>"

Example Configuration:

{
  "mcpServers": {
    "adamik-signer": {
      "command": "npx",
      "args": ["@adamik/signer-mcp-server"],
      "env": {
        "DFNS_CRED_ID": "your-credential-id",
        "DFNS_PRIVATE_KEY": "your-private-key",
        "DFNS_APP_ID": "your-app-id",
        "DFNS_AUTH_TOKEN": "your-auth-token",
        "DFNS_API_URL": "https://api.dfns.ninja"
      }
    }
  }
}

Sodot

SODOT_VERTEX_URL_0="https://vertex-demo-0.sodot.dev"
SODOT_VERTEX_API_KEY_0="<your-vertex-api-key-0>"
SODOT_VERTEX_URL_1="https://vertex-demo-1.sodot.dev"
SODOT_VERTEX_API_KEY_1="<your-vertex-api-key-1>"
SODOT_VERTEX_URL_2="https://vertex-demo-2.sodot.dev"
SODOT_VERTEX_API_KEY_2="<your-vertex-api-key-2>"
SODOT_EXISTING_ECDSA_KEY_IDS="<comma-separated-ecdsa-key-ids>"
SODOT_EXISTING_ED25519_KEY_IDS="<comma-separated-ed25519-key-ids>"

Example Configuration:

{
  "mcpServers": {
    "adamik-signer": {
      "command": "npx",
      "args": ["@adamik/signer-mcp-server"],
      "env": {
        "SODOT_VERTEX_URL_0": "https://vertex-demo-0.sodot.dev",
        "SODOT_VERTEX_API_KEY_0": "your-api-key-0",
        "SODOT_VERTEX_URL_1": "https://vertex-demo-1.sodot.dev",
        "SODOT_VERTEX_API_KEY_1": "your-api-key-1",
        "SODOT_VERTEX_URL_2": "https://vertex-demo-2.sodot.dev",
        "SODOT_VERTEX_API_KEY_2": "your-api-key-2",
        "SODOT_EXISTING_ECDSA_KEY_IDS": "key1,key2,key3",
        "SODOT_EXISTING_ED25519_KEY_IDS": "key4,key5,key6"
      }
    }
  }
}

Note: Contact each provider directly for authentication setup instructions and API access.


Local Development

1. Clone Repository

git clone git@github.com:AdamikHQ/signer-mcp-server.git
cd signer-mcp-server

2. Install Dependencies

pnpm install
pnpm run build

3. Configure Your MCP Client

Update your client configuration to point to the local installation instead of using npx.


📦 Tools

readMeFirst

Provides critical guidance on how to safely use this MCP server.

getWalletStatus

Check if a wallet is currently connected.

getAvailableWalletSigners

Lists all supported signer types available for wallet connection.

connectWallet

Connect a wallet with the specified signerType. Only one wallet can be connected per session.

Input:

{
  "signerType": "string"
}

getPubKey

Derives the public key using the connected wallet and a provided signer specification.

Input:

{
  "signerSpec": {
    "curve": "string",
    "path": "string",
    "hashFunction": "string"
  }
}

signTransaction

Signs an encoded payload. Use only after confirming user consent.

Input:

{
  "payload": "string",
  "signerSpec": {
    "curve": "string",
    "path": "string",
    "hashFunction": "string"
  }
}

Complete Setup

For the full blockchain interaction experience, combine this signer server with the Adamik MCP Server:

  1. Adamik MCP Server - Transaction encoding, account insights, and blockchain interactions
  2. Adamik Signer MCP Server - Transaction signing and key management

Together, these enable:

  • 🪙 Transfer native currencies and tokens
  • 🥩 Stake and unstake across supported networks
  • 🔍 View real-time account balances
  • 🌐 Execute complex multi-chain operations
  • 💬 All through natural language commands in your LLM interface