oms-client-agent-mcp

oms-client-agent-mcp

Exposes the 0xSequence OMS wallet client as a local MCP server, enabling email-based wallet authentication, message signing, balance queries, and transaction sending on supported networks like Polygon, Base, and Sepolia.

Category
Visit Server

README

OMS Client MCP

This project exposes the OMS client as a local MCP server over stdio.

How it works

The MCP host starts this server as a local stdio process. The agent calls the exposed MCP tools, and the server translates those tool calls into OMS Wallet SDK calls.

Email sign-in is a two-step flow: oms_start_email_auth sends the OTP to the email address from the user prompt, then oms_complete_email_auth completes the auth attempt with the OTP code. Those two calls need to run in the same server process.

After sign-in, wallet session metadata and the credential signer key are persisted in the platform secure store. That lets a later MCP process restore the wallet session and sign messages or transactions without exposing secrets to the agent.

Token transfers are intentionally narrow. ERC20 transfers use wallet.callContract with transfer(address,uint256), and native token transfers use wallet.sendTransaction with only to and value fields.

Configure

Run setup:

pnpm run setup:mcp

This creates .env from .env.example if it does not already exist, builds the local Keychain helper, and prints the Codex MCP config block for this checkout.

Then fill in .env:

OMS_PUBLISHABLE_KEY=...
OMS_PROJECT_ID=...

Wallet session data, redirect auth state, and the Node credential signer key are stored in macOS Keychain under fixed oms-client-agent-mcp:* service names.

On Linux, the same values are stored through Freedesktop Secret Service using secret-tool. Install libsecret-tools and ensure a Secret Service provider such as GNOME Keyring or KWallet is available and unlocked.

Example Prompts

Sign in

Sign in using your@email.com

Wait for response, then enter OTP code:

123456

Send USDC

Send 1 USDC to 0xB54d0b73a40f5b9a243D142EeDDA39Bb5ed76B50 on amoy

Get token balances

What's my USDC balance on Polygon mainnet?

Run

If you skip pnpm run setup:mcp, build the local Keychain helper once:

pnpm build:keychain-helper

Then run the MCP server:

pnpm --silent mcp

The check and test scripts compile src/storage/keychain-helper.swift to bin/keychain-helper before running. The mcp script expects that binary to already exist so MCP stdout stays protocol-clean.

Example MCP host config:

{
  "mcpServers": {
    "oms-client-agent": {
      "command": "pnpm",
      "args": ["--silent", "mcp"],
      "cwd": "/Users/theirname/path/to/oms-mcp"
    }
  }
}

Tools

  • oms_env_status: checks required environment keys without printing secrets.
  • oms_session_status: reports whether a wallet session is restored.
  • oms_start_email_auth: sends an email OTP to the email address provided in the tool call.
  • oms_complete_email_auth: completes the OTP flow in the same server process.
  • oms_sign_message: signs a message with the active wallet session.
  • oms_get_token_balances: queries token balances through the OMS indexer.
  • oms_get_native_token_balance: queries the native token balance.
  • oms_send_erc20_token: sends ERC20 tokens through wallet.callContract using transfer(address,uint256).
  • oms_send_native_token: sends native tokens through wallet.sendTransaction.
  • oms_sign_out: clears the active wallet session.

Default network is amoy. Pass a supported SDK network name such as polygon, base, or sepolia where tools accept network.

Transfer tools accept raw integer amounts: amountRaw for ERC20 base units and amountWei for native token wei.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured