Skip to main content
A hosted MCP server that connects AI assistants to Snapshot governance. Ask an assistant to find proposals, check voting power, cast votes, create proposals, or follow spaces, all in plain language. Connect in under a minute. No install and no API key required.
https://mcp.snapshot.box
Reading governance data needs nothing but the connection. Write actions (voting, proposing, following) require a wallet you can sign with, authorized once. See Authentication.
Building an agent? Point it at llms.txt for a machine-readable index of these docs, or llms-full.txt for their full contents.

Connect

Add to Claude.ai

One-click setup, then authorize the connector. Or add it manually:
  1. Open Settings > Integrations > Add integration.
  2. Paste the URL: https://mcp.snapshot.box
  3. In any chat, click the integration and select Connect.
Available on Pro, Team, and Enterprise plans.

Try it

Once connected, ask your assistant in plain language. Start simple, then move to actions:
  • “What proposals are active in ens.eth right now?” (read)
  • “What’s the current voting power of vitalik.eth in ens.eth?” (read)
  • “Summarize the last 5 closed proposals on aave.eth and tell me which passed.” (read)
  • “Follow gitcoindao.eth for me.” (write)
  • “Vote ‘For’ on proposal 0xabc... in ens.eth.” (write)
The AI chains tools automatically: snapshot-query to discover data, then snapshot-vote, snapshot-propose, or snapshot-follow to act. Read actions run instantly. Write actions ask you to authorize once (see Authentication).

Authentication

All write operations (voting, proposing, following) are signed by a Snapshot alias, a lightweight signer wallet that can act on your behalf without exposing your main private key. The first time the AI calls a write tool, an OAuth window opens so you can authorize an alias. This is a one-time step. The alias is created and managed by Coinbase CDP. You can revoke an alias at any time from Settings > Aliases.

Available tools

The server exposes 5 tools. The AI selects them automatically based on your prompt.
ToolDescriptionAuth
snapshot-queryRun any GraphQL query against Snapshot. Auto-binds your address as $user.No
snapshot-schemaReturn the GraphQL schema. Used when a query fails on an unknown field.No
snapshot-voteCast a vote. Voting type and privacy are auto-detected. Re-calling replaces the previous vote.Yes
snapshot-proposeCreate a proposal. Only space, title, and body are required.Yes
snapshot-followFollow a space.Yes

How it works

  1. Discover. The client fetches /.well-known/oauth-authorization-server and the MCP manifest to learn endpoints and tools.
  2. Connect. OAuth 2.0 with PKCE. The server creates a CDP-managed alias wallet, redirects you to Snapshot to authorize it, then issues a JWT.
  3. Read. snapshot-query and snapshot-schema proxy to Snapshot Hub. No wallet needed.
  4. Write. Write tools build the EIP-712 envelope, ask CDP to sign with your alias, and submit to the Snapshot sequencer.
The server is stateless. The JWT carries everything (address, CDP account ID, alias).

Security

PropertyDetail
Your main key never leaves your walletWrites are signed by an alias that can only sign Snapshot governance messages.
Isolated aliasesEach connection provisions its own Coinbase CDP-managed alias. The server never sees the private key.
Scoped tokensStateless JWTs (HS256). A stolen token can act as that alias but cannot touch your main wallet. Rotating JWT_SECRET invalidates all tokens.
OAuth with PKCEStandards-compliant Authorization Code + PKCE. No client secret required.
StatelessZero session state. Every request is processed from the JWT alone.
RevocableRevoke the alias at any time from the Snapshot UI.

Local mode (stdio)

For local development or scripting, you can run the server in stdio mode with your own Snapshot alias key instead of using the hosted server.
git clone https://github.com/snapshot-labs/sx-monorepo
cd sx-monorepo && bun install
cd apps/mcp
ALIAS_PRIVATE_KEY=0x... bun src/index.ts --stdio
Then point your MCP client to the local server:
{
  "mcpServers": {
    "snapshot": {
      "command": "bun",
      "args": ["src/index.ts", "--stdio"],
      "cwd": "/path/to/sx-monorepo/apps/mcp",
      "env": {
        "ALIAS_PRIVATE_KEY": "0x..."
      }
    }
  }
}
VariableDescription
ALIAS_PRIVATE_KEYYour Snapshot alias private key. Not your main wallet.
SNAPSHOT_API_KEYOptional. API key for higher rate limits.
ALIAS_PRIVATE_KEY must be authorized as an alias on Snapshot before it can sign. If it isn’t, the tool will return a URL to authorize it.

FAQ

No. You authorize a Snapshot alias, a separate signer managed by the MCP server. Your main wallet key stays in your wallet.
No. The alias can only sign Snapshot governance messages (votes, proposals, follows). It cannot move tokens or call other contracts.
Revoke the alias from Settings > Aliases on Snapshot. This immediately stops the server from acting on your behalf. See Authentication for a walkthrough.
Yes, the standard Snapshot rate limit applies. Self-host with your own SNAPSHOT_API_KEY for higher throughput.
Nothing. The server is stateless. Tokens are self-verifiable JWTs.