Skip to main content
Glama

mcp-sns-server MCP 服务器

用于与互联网计算机上的 DAO 交互的模型上下文协议服务器

这是一个基于 TypeScript 的 MCP 服务器,实现了与服务神经系统 (SNS) DAO 的接口。它通过提供与去中心化自治组织 (DAO) 交互的工具来演示 MCP 的核心概念。

演示

设置

将您的种子短语添加到 env 文件中

cp .env.example .env

Related MCP server: AMOCA Solana MCP Server

特征

工具

  • list_proposals - 列出特定 DAO 的所有提案

    • 以 DAO 名称作为参数

    • 返回指定 DAO 的提案列表

  • list_votable_neurons - 列出 DAO 中用户的所有可投票神经元

    • 以 DAO 名称和主体 ID 作为参数

    • 返回可以对提案进行投票的神经元

  • get_system_parameters - 列出 DAO 的所有配置参数

    • 以 DAO 名称作为参数

    • 返回指定 DAO 的系统参数

  • wallet获取用户的钱包信息

    • 返回当前钱包的主体ID

  • vote_proposal - 对提案进行投票

    • 获取 DAO 名称、委托人 ID、神经元 ID、提案 ID 和投票偏好

    • 允许对提案投赞成、反对或未指定票

    • 在 DAO 治理系统中登记投票

发展

安装依赖项:

npm install

构建服务器:

npm run build

对于使用自动重建的开发:

npm run watch

安装

要与 Claude Desktop 一起使用,请添加服务器配置:

在 MacOS 上: ~/Library/Application Support/Claude/claude_desktop_config.json在 Windows 上: %APPDATA%/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "mcp-sns-server": {
      "command": "/path/to/mcp-sns-server/build/index.js"
    }
  }
}

调试

由于 MCP 服务器通过 stdio 进行通信,调试起来可能比较困难。我们推荐使用MCP Inspector ,它以包脚本的形式提供:

npm run inspector

检查器将提供一个 URL 来访问浏览器中的调试工具。

Available Tools

5 tools
get_system_parametersC

List all configuration parameters

ParametersJSON Schema
NameRequiredDescriptionDefault
daoNameYesDAO name

TDQS

C2.6/5.0
Behavior1/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
daoNameYesDAO name

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
daoNameNoDAO name
principalIdYesPrincipal ID

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
voteYesVote (yes, no, unspecified)
daoNameYesDAO name
neuronIdYesNeuron ID
proposalIdYesProposal ID
principalIdYesPrincipal ID

TDQS

C2.1/5.0
Behavior1/5

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.

Conciseness2/5

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.

Completeness1/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

  1. 5 tool updatesv1.0.0
    • First observedget_system_parameters
    • First observedlist_proposals
    • First observedlist_votable_neurons
    • First observedvote_proposal
    • First observedwallet

TDQS

B3/5.0

Scored across 5 tools

Disambiguation5/5

Each tool targets a distinct function: system parameters, proposals, neurons, voting, and wallet. There is no overlap or ambiguity in their purposes.

Naming Consistency3/5

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.

Tool Count5/5

With 5 tools, the server covers core SNS governance actions without being excessive or sparse. Each tool serves a clear purpose.

Completeness3/5

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

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers