MCP SNS Server
The MCP SNS Server is a TypeScript-based server for interacting with Service Nervous System (SNS) DAOs on the Internet Computer. It provides the following functionalities:
List all proposals: Retrieve all proposals for a specified DAO by name
List votable neurons: Get neurons that can vote on proposals for a specific user using DAO name and principal ID
Get system parameters: Access all configuration parameters for a specified DAO
Get wallet information: Retrieve the principal ID of the current wallet
Vote on proposals: Cast votes (yes, no, or unspecified) on DAO proposals using DAO name, principal ID, neuron ID, proposal ID, and vote preference
Provides tools for interacting with Service Nervous System (SNS) DAOs on the Internet Computer, enabling users to list proposals, view votable neurons, get system parameters, access wallet information, and vote on proposals.
References a demo video hosted on YouTube that demonstrates the MCP server's functionality.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP SNS Serverlist proposals for the OpenChat DAO"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-sns-server MCP Server
A Model Context Protocol server for interacting with DAOs on the Internet Computer
This is a TypeScript-based MCP server that implements an interface to Service Nervous System (SNS) DAOs. It demonstrates core MCP concepts by providing tools to interact with decentralized autonomous organizations.
Setup
add your seed phrase to env file
cp .env.example .envRelated MCP server: AMOCA Solana MCP Server
Features
Tools
list_proposals- List all proposals for a specific DAOTakes DAO name as parameter
Returns list of proposals from the specified DAO
list_votable_neurons- List all votable neurons for a user in a DAOTakes DAO name and principal ID as parameters
Returns neurons that can vote on proposals
get_system_parameters- List all configuration parameters for a DAOTakes DAO name as parameter
Returns system parameters for the specified DAO
wallet- Get the user's wallet informationReturns the principal ID of the current wallet
vote_proposal- Vote on a proposalTakes DAO name, principal ID, neuron ID, proposal ID, and vote preference
Allows voting yes, no, or unspecified on proposals
Registers vote with the DAO governance system
Development
Install dependencies:
npm installBuild the server:
npm run buildFor development with auto-rebuild:
npm run watchInstallation
To use with Claude Desktop, add the server config:
On MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
On Windows: %APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"mcp-sns-server": {
"command": "/path/to/mcp-sns-server/build/index.js"
}
}
}Debugging
Since MCP servers communicate over stdio, debugging can be challenging. We recommend using the MCP Inspector, which is available as a package script:
npm run inspectorThe Inspector will provide a URL to access debugging tools in your browser.
Available Tools
5 toolsget_system_parametersC
List all configuration parameters
| Name | Required | Description | Default |
|---|---|---|---|
| daoName | Yes | DAO name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits like idempotency or security implications. The description only states 'List all configuration parameters' without any additional context about side effects, error conditions, or access requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise with a single sentence, but it lacks some useful detail. It is not verbose, but could be slightly more informative without sacrificing brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and minimal description, the tool is not fully specified. The agent cannot infer what exactly is returned (e.g., list of parameter names, key-value pairs), which reduces completeness given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with a description for the single parameter 'daoName' as 'DAO name'. The description does not add any new meaning beyond what the schema already provides, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'configuration parameters', making the tool's purpose apparent. Although it could specify that parameters are scoped to a DAO, it distinguishes itself from siblings like 'list_proposals' and 'vote_proposal' which cover different entities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. There is no mention of prerequisites, exclusions, or contexts that would help an agent decide effectively.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_proposalsC
List all proposals
| Name | Required | Description | Default |
|---|---|---|---|
| daoName | Yes | DAO name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It doesn't disclose behavioral traits such as whether this is a read-only operation, if it requires authentication, rate limits, pagination, or what the output format might be. The description is minimal and adds no behavioral context beyond the basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with just three words, front-loaded and zero waste. It efficiently states the core action without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and a sibling tool, the description is incomplete. It doesn't explain the relationship to 'list_votable_neurons', output details, or behavioral aspects. For a tool with one parameter and no structured support, more context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the parameter 'daoName' documented as 'DAO name'. The description doesn't add any meaning beyond this, such as explaining what a DAO is or how the parameter affects the listing. Baseline 3 is appropriate since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List all proposals' clearly states the action (list) and resource (proposals), but it's vague about scope and doesn't differentiate from the sibling tool 'list_votable_neurons'. It doesn't specify whether this lists proposals across all DAOs or just for a specific DAO, which the parameter suggests.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus the sibling 'list_votable_neurons'. The description doesn't mention prerequisites, alternatives, or context for usage, leaving the agent to infer based on tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_votable_neuronsC
List all votable neurons
| Name | Required | Description | Default |
|---|---|---|---|
| daoName | No | DAO name | |
| principalId | Yes | Principal ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states the basic action. It doesn't disclose behavioral traits like whether this is a read-only operation, if it requires authentication, rate limits, or what the output format looks like (especially since there's no output schema).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It's appropriately sized and front-loaded, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (a list operation with 2 parameters), lack of annotations, and no output schema, the description is incomplete. It doesn't explain what 'votable neurons' are, how results are returned, or any prerequisites, leaving significant gaps for the agent to understand the tool fully.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters (daoName and principalId). The description adds no additional meaning about parameters beyond what's in the schema, such as explaining what 'votable neurons' are in relation to these inputs. Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('List') and resource ('votable neurons'), making the purpose understandable. However, it doesn't differentiate from the sibling tool 'list_proposals' (which presumably lists proposals rather than neurons), so it misses full sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description doesn't mention the sibling tool 'list_proposals' or any other context for choosing between them, leaving the agent without usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vote_proposalC
vote on a proposal
| Name | Required | Description | Default |
|---|---|---|---|
| vote | Yes | Vote (yes, no, unspecified) | |
| daoName | Yes | DAO name | |
| neuronId | Yes | Neuron ID | |
| proposalId | Yes | Proposal ID | |
| principalId | Yes | Principal ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It fails to mention side effects like irreversibility, authorization requirements, or voting power constraints. The description is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single phrase, which is too brief. While concise, it lacks structure and does not earn its place by providing useful information beyond the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 5 required parameters, no output schema, and no annotations, the description is critically incomplete. It does not explain return values, voting mechanics, or constraints, leaving the agent without crucial context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers all 5 parameters with basic descriptions. The tool description adds no additional meaning beyond what the schema provides, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'vote on a proposal' states a verb and resource, but it is generic. It does not differentiate from sibling tools like list_proposals or get_system_parameters, and lacks specificity about the context (e.g., DAO voting).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. It does not mention prerequisites, such as requiring a valid neuron or DAO membership, nor does it specify appropriate contexts for voting.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
walletB
get my wallet
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description 'get' implies a read-only operation, but without annotations, it does not explicitly state whether the tool modifies state or requires authentication. The behavior is straightforward but not fully disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that directly communicates the tool's purpose. There is no unnecessary information, and it is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description does not explain return values or what the wallet contains. Given no output schema, the description should provide more context about the result, but it remains vague.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so the input schema provides complete coverage. The description adds no parameter information, but with zero parameters, the baseline of 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description 'get my wallet' clearly indicates retrieving the user's wallet. It is distinct from sibling tools like list_proposals or vote_proposal, but lacks elaboration on what 'wallet' specifically refers to.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. The description does not mention context or prerequisites for using the wallet retrieval.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
5 tool updates
v1.0.0- First observed
get_system_parameters - First observed
list_proposals - First observed
list_votable_neurons - First observed
vote_proposal - First observed
wallet
TDQS
Each tool targets a distinct function: system parameters, proposals, neurons, voting, and wallet. There is no overlap or ambiguity in their purposes.
Tool names mix get_, list_, and a bare noun (wallet). While most follow verb_noun, 'wallet' lacks a verb and 'vote_proposal' uses a verb_noun order that differs from the list prefix. Inconsistent pattern.
With 5 tools, the server covers core SNS governance actions without being excessive or sparse. Each tool serves a clear purpose.
Domain covers governance basics but lacks detail: no tool to get a single proposal's details, no neuron management beyond listing, and wallet is rudimentary. Missing update/delete or register operations.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server
Model Context Protocol server for Studex tools, notifications, and profile integrations
MCP server for Boson Protocol — on-chain agentic commerce for physical & digital goods.
Related MCP Servers
- AlicenseBqualityCmaintenanceA Model Context Protocol server that enables interaction with Snapshot.org, providing tools to query Snapshot spaces, proposals, and users through natural language.522MIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables AI models to interact with the Solana blockchain, providing RPC methods, wallet management, DeFi trading capabilities, and Helius API integration for enhanced Solana development.5MIT
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables AI assistants to access Flow blockchain data and perform operations such as checking balances, resolving domains, executing scripts, and submitting transactions.1-
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables interactions with the Hedera network, providing tools for wallet creation, balance checking, transaction building, and sending signed transactions.3-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/baolongt/sns-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server