mcp snapshot server
A Model Context Protocol server that enables interaction with Snapshot.org, providing tools to query Snapshot spaces, proposals, and users through natural language.
A Model Context Protocol server that enables interaction with Snapshot.org, providing tools to query Snapshot spaces, proposals, and users through natural language.
A Model Context Protocol server for interacting with Snapshot.org. This server provides MCP-compliant tools for querying Snapshot spaces, proposals, and users.
npm install mcp-snapshot-server
In your Claude Desktop config file (located at ~/Library/Application Support/Claude/claude_desktop_config.json
on Mac or %APPDATA%Claudeclaude_desktop_config.json
on Windows):
{
"mcpServers": {
"snapshot": {
"command": "node",
"args": [
"/ABSOLUTE/PATH/TO/snapshot-server/build/index.js"
]
}
}
}
Get a list of Snapshot spaces
- limit
: Number of spaces to fetch (optional)
- skip
: Number of spaces to skip (optional)
Get a ranked list of Snapshot spaces with detailed information
- first
: Number of spaces to fetch (default: 18)
- skip
: Number of spaces to skip (default: 0)
- category
: Category to filter by (default: 'all')
- search
: Search term to filter spaces (optional)
Get proposals for a specific space
- spaceId
: ID of the space
- state
: Filter by proposal state (active, closed, pending, all)
- limit
: Number of proposals to fetch
Get details of a specific proposal
- proposalId
: ID of the proposal
Get information about a Snapshot user
- address
: Ethereum address of the user
Clone the repository:
git clone https://github.com/crazyrabbitLTC/mcp-snapshot-server.git
Install dependencies:
npm install
Build the project:
npm run build
MIT © Dennison Bertram
[
{
"description": "Get list of Snapshot spaces",
"inputSchema": {
"properties": {
"limit": {
"description": "Number of spaces to fetch",
"type": "number"
},
"skip": {
"description": "Number of spaces to skip",
"type": "number"
}
},
"type": "object"
},
"name": "getSpaces"
},
{
"description": "Get proposals for a Snapshot space",
"inputSchema": {
"properties": {
"limit": {
"description": "Number of proposals to fetch",
"type": "number"
},
"spaceId": {
"description": "ID of the space",
"type": "string"
},
"state": {
"description": "Filter by proposal state (active, closed, pending, all)",
"type": "string"
}
},
"required": [
"spaceId"
],
"type": "object"
},
"name": "getProposals"
},
{
"description": "Get details of a specific proposal",
"inputSchema": {
"properties": {
"proposalId": {
"description": "ID of the proposal",
"type": "string"
}
},
"required": [
"proposalId"
],
"type": "object"
},
"name": "getProposal"
},
{
"description": "Get information about a Snapshot user",
"inputSchema": {
"properties": {
"address": {
"description": "Ethereum address of the user",
"type": "string"
}
},
"required": [
"address"
],
"type": "object"
},
"name": "getUser"
},
{
"description": "Get ranked list of Snapshot spaces with detailed information",
"inputSchema": {
"properties": {
"category": {
"description": "Category to filter by (default: 'all')",
"type": "string"
},
"first": {
"description": "Number of spaces to fetch (default: 18)",
"type": "number"
},
"search": {
"description": "Search term to filter spaces",
"type": "string"
},
"skip": {
"description": "Number of spaces to skip (default: 0)",
"type": "number"
}
},
"type": "object"
},
"name": "getRankedSpaces"
}
]