Skip to main content
Glama
monad-vibe

Monad MCP Server

by monad-vibe

모나드 MCP 서버

이 MCP(Model Context Protocol) 서버는 Monad 테스트넷과 상호 작용하도록 설계되었습니다. MON 토큰 잔액 확인, 트랜잭션 전송, 스마트 컨트랙트 배포, 블록체인 이벤트 모니터링 등 개발자가 Monad 블록체인에 참여할 수 있는 다양한 도구와 기능을 제공합니다.

MCP란 무엇인가요?

모델 컨텍스트 프로토콜(MCP)은 AI 모델이 외부 도구, 서비스 및 데이터 소스와 안전하고 효과적으로 상호 작용할 수 있도록 하는 표준화된 인터페이스입니다. 이 서버는 MCP를 구현하여 호환되는 AI 에이전트 또는 애플리케이션에 모나드 블록체인 기능을 제공합니다.

Related MCP server: Solana MCP Server

프로젝트 구조

이 프로젝트는 다음과 같이 구성됩니다.

지엑스피1

주요 구성 요소

  • src/index.ts : 서버의 주요 진입점입니다. MCP 서버 인스턴스를 초기화하고 사용 가능한 모든 도구(지갑, 컨트랙트, NFT, 블록)를 등록합니다.

  • src/config/server.ts : 이 파일은 핵심 서버 구성을 처리합니다. McpServer 인스턴스를 이름, 버전 및 기능 목록으로 설정합니다. 또한 Monad 테스트넷과 상호 작용하기 위한 Viem 공개 클라이언트를 초기화하고, 환경 변수의 개인 키를 사용하여 Viem 지갑 클라이언트를 생성하는 함수를 제공합니다. 서버는 통신을 위해 StdioServerTransport 사용합니다.

  • src/tools/ : 이 디렉터리에는 다양한 MCP 도구의 구현이 포함되어 있습니다. 각 하위 디렉터리는 일반적으로 모나드 상호 작용의 특정 측면에 중점을 둡니다.

    • walletProvider : MON 토큰 잔액과 거래를 관리합니다.

    • contractProvider : 스마트 계약 배포 및 이벤트 감시를 처리합니다.

    • nftProvider : Monad 네트워크에서 NFT를 쿼리하는 기능을 제공합니다.

    • blockProvider : 블록 정보를 검색하는 도구를 제공합니다.

필수 조건

시작하기 전에 다음 사항이 설치되어 있는지 확인하세요.

  • Node.js(버전 16 이상)

  • Node.js 패키지 관리자: npm , yarn 또는 pnpm (이 프로젝트에서는 예시에서 pnpm 사용함)

  • Claude Desktop(또는 MCP 호환 클라이언트)을 사용하여 서버와 상호 작용합니다.

환경 변수(.env)

이 프로젝트에서는 환경 변수를 사용하여 민감한 정보, 주로 Monad 계정의 개인 키를 관리합니다.

  1. 예제 파일을 복사합니다 . .env.example 의 사본을 만들고 이름을 .env 로 바꿉니다.

    cp .env.example .env
  2. .env 편집 : 텍스트 편집기에서 새로 만든 .env 파일을 엽니다.

  3. PRIVATE_KEY 설정 : PRIVATE_KEY 변수에 Monad 계정의 개인 키를 입력합니다. 이 키는 트랜잭션 전송이나 컨트랙트 배포와 같은 작업에 필요합니다.

    PRIVATE_KEY="0xyourprivatekeyhere"

    중요 : 개인 키가 0x 로 시작하는지 확인하세요.

  4. 보안 : .env 파일을 Git 저장소에 커밋하지 마세요. .gitignore 파일에는 이를 방지하도록 이미 설정되어 있지만, 개인 키 보호에 항상 유의하세요.

시작하기

Monad MCP 서버를 설정하고 실행하려면 다음 단계를 따르세요.

  1. 저장소 복제 :

    아직 하지 않았다면 GitHub에서 프로젝트를 복제하세요.

    git clone https://github.com/lispking/monad-mcp-server.git
    cd monad-mcp-server
  2. 종속성 설치 :

    pnpm (또는 선호하는 패키지 관리자)을 사용하여 package.json 에 나열된 프로젝트 종속성을 설치합니다.

    pnpm install
  3. 프로젝트 빌드 :

    서버는 TypeScript로 작성되었으며 JavaScript로 컴파일해야 합니다. 빌드 스크립트를 실행하세요.

    pnpm build

    이 명령은 package.json 에 정의된 tsc (TypeScript 컴파일러)를 사용하여 src 디렉토리의 소스 파일을 build 디렉토리로 컴파일합니다.

이제 서버가 구축되어 MCP 클라이언트에서 사용할 준비가 되었습니다.

서버 기능

src/config/server.ts 에 정의된 대로 서버는 다음과 같은 기능을 제공합니다.

  • get-mon-balance : 계정의 MON 토큰 잔액을 검색합니다.

  • send-mon-transaction : 한 계정에서 다른 계정으로 MON 토큰을 보냅니다.

  • deploy-mon-contract : Monad 테스트넷에 스마트 계약을 배포합니다.

  • watch-contract-events : 특정 스마트 계약에서 발생하는 이벤트를 모니터링하고 보고합니다.

  • query-mon-nft : Monad 네트워크의 NFT(Non-Fungible Token)에 대한 정보를 쿼리합니다.

  • get-latest-block : Monad 테스트넷에서 가장 최근 블록의 세부 정보를 가져옵니다.

  • get-block-by-number : 블록 번호로 특정 블록을 검색합니다.

클라이언트에 MCP 서버 구성 추가

이 서버를 MCP 호환 클라이언트(예: Claude Desktop)와 함께 사용하려면 클라이언트 설정에 해당 구성을 추가해야 합니다. 정확한 방법은 클라이언트에 따라 다를 수 있지만, 일반적으로 서버 실행 방식을 지정하는 것이 포함됩니다.

다음은 구성 스니펫의 예입니다.

{
  "mcpServers": {
    // ... other server configurations ...
    "monad-mcp": {
      "command": "node",
      "args": [
        "/absolute/path/to/your/project/monad-mcp-server/build/index.js"
      ],
      "env": {
        "PRIVATE_KEY": "<your_monad_private_key_if_not_using_dotenv_or_to_override>"
      }
    }
    // ... other server configurations ...
  }
}

구성 필드에 대한 설명 :

  • "monad-mcp" : 클라이언트 내에서 이 서버 구성에 지정하는 고유한 이름입니다.

  • "command": "node" : 서버가 Node.js 애플리케이션임을 지정합니다.

  • "args" : node 명령에 전달할 인수 배열입니다.

    • 첫 번째 인수는 서버의 컴파일된 진입점 경로입니다( /absolute/path/to/your/project/monad-mcp-server/build/index.js ). /absolute/path/to/your/project/``monad-mcp-server 저장소를 복제한 실제 절대 경로로 바꾸세요.

  • "env" : 서버 프로세스에 대한 환경 변수를 설정하는 객체입니다.

    • "PRIVATE_KEY" : 개인 키를 여기에 설정할 수 있습니다. 하지만 일반적으로 보안 강화를 위해 .env 파일을 사용하는 것이 좋습니다. 여기에 설정하면 클라이언트 동작 및 서버의 환경 변수 로딩 순서에 따라 .env 의 값이 재정의될 수 있습니다.

참고 : "args" 의 경로가 올바르고 프로젝트 디렉토리 내의 build/index.js 파일을 가리키는지 확인하세요.

추가 자료

사용된 기술과 관련 개념에 대한 자세한 내용은 다음 공식 문서를 참조하세요.

이 포괄적인 README는 Monad MCP 서버, 설정 및 사용법에 대한 확실한 이해를 제공합니다.

Available Tools

7 tools
deploy-mon-contractC

Deploy a smart contract on Monad testnet

ParametersJSON Schema
NameRequiredDescriptionDefault
abiYesContract ABI
bytecodeYesContract bytecode
constructorArgsNoConstructor arguments

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 offers minimal behavioral insight. It mentions 'testnet' which implies non-production use, but doesn't disclose critical traits like whether deployment is irreversible, requires gas fees, has rate limits, or returns a contract address. For a deployment tool, this is a significant gap.

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, focused sentence with zero wasted words. It's appropriately sized for a straightforward deployment tool and front-loads the essential action and target environment.

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?

For a contract deployment tool with no annotations and no output schema, the description is insufficient. It doesn't explain what happens after deployment (e.g., returns contract address, transaction hash), error conditions, or environmental constraints. Given the complexity of smart contract deployment, 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%, so the schema already documents all three parameters adequately. The description adds no additional parameter context beyond what's in the schema (e.g., format examples, relationship between parameters). This meets the baseline for high schema coverage.

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 action ('deploy') and resource ('smart contract on Monad testnet'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'send-mon-transaction' which might also involve contract interactions, so it doesn't reach the highest score.

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. It doesn't mention prerequisites (e.g., needing ABI/bytecode), compare to other deployment methods, or specify use cases like testing vs production. This leaves the agent without context for tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-block-by-numberC

Get a block by number on Monad testnet

ParametersJSON Schema
NameRequiredDescriptionDefault
numberYesThe block number to retrieve

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 the full burden of behavioral disclosure. It states the tool retrieves a block but omits critical details such as whether it's a read-only operation (implied by 'Get'), error handling for invalid block numbers, rate limits, or authentication needs. For a tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.

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 that directly states the tool's purpose without unnecessary words. It is front-loaded with the core action and resource, making it easy to parse. Every part of the sentence contributes essential information, earning its place with zero waste.

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 of blockchain operations, no annotations, and no output schema, the description is incomplete. It lacks details on return values (e.g., block structure), error cases, network-specific behaviors, or how it fits within the sibling toolset. For a tool with such sparse structured data, more context is needed to be fully helpful.

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% description coverage, with the 'number' parameter documented as 'The block number to retrieve'. The description adds no additional meaning beyond this, such as format details (e.g., integer vs. hex) or constraints. Given the high schema coverage, the baseline score of 3 is appropriate, as the schema handles the parameter documentation adequately.

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 action ('Get') and resource ('a block by number'), specifying the target network ('on Monad testnet'). It distinguishes from siblings like 'get-latest-block' by focusing on specific block numbers rather than the latest. However, it doesn't explicitly contrast with all siblings, such as 'query-mon-nft' or 'watch-contract-events', which is why it's a 4 rather than a 5.

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 minimal guidance, implying usage when a specific block number is known on the Monad testnet. It lacks explicit when-to-use scenarios, alternatives (e.g., using 'get-latest-block' for recent blocks), or exclusions (e.g., not for querying NFTs). No context on prerequisites or limitations is given, making it basic but not entirely absent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-latest-blockB

Get the latest block on Monad testnet

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/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 for behavioral disclosure. It states what the tool does but provides no information about rate limits, authentication requirements, network behavior, error responses, or what 'latest' means in practical terms (e.g., is it cached, real-time, etc.). For a blockchain query tool with zero annotation coverage, this leaves significant behavioral gaps.

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 that states exactly what the tool does with zero wasted words. It's appropriately sized for a simple query tool and front-loads the essential information. Every word earns its place in this minimal description.

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 that this is a blockchain query tool with no annotations and no output schema, the description is insufficiently complete. It doesn't explain what format the block data will be returned in, what fields to expect, or any behavioral characteristics. For a tool that presumably returns complex blockchain data, more context about the response would be helpful despite the lack of output schema.

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?

The tool has zero parameters, and schema description coverage is 100%. The description appropriately doesn't discuss parameters since none exist. It could theoretically mention that no parameters are required, but this is adequately covered by the structured schema. With 0 parameters, the baseline is appropriately high.

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 action ('Get') and resource ('latest block on Monad testnet'), making the purpose immediately understandable. It doesn't explicitly differentiate from sibling tools like 'get-block-by-number', but the focus on 'latest' provides some distinction. The description is specific enough to understand what the tool does without being tautological.

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 like 'get-block-by-number'. It doesn't mention prerequisites, error conditions, or any context about when this specific tool is appropriate. The agent must infer usage from the tool name alone, which is insufficient for optimal tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-mon-balanceC

Get MON balance for an address on Monad testnet

ParametersJSON Schema
NameRequiredDescriptionDefault
addressYesMonad testnet address to check balance for

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 for behavioral disclosure. It states what the tool does but lacks critical behavioral details: it doesn't specify if this is a read-only operation, mention rate limits, error conditions, or what format the balance returns (e.g., in wei or MON tokens).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose without unnecessary words. However, it could be slightly more structured by explicitly stating it's a read operation or including key constraints, which would enhance clarity without sacrificing brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (one parameter, no output schema, no annotations), the description is minimally adequate but incomplete. It covers the basic purpose but omits behavioral context (e.g., read-only nature, return format) that would help an agent use it correctly, especially with no annotations to fill gaps.

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 schema description coverage is 100%, with the single parameter 'address' well-documented in the schema as 'Monad testnet address to check balance for'. The description adds no additional parameter semantics beyond this, so it meets the baseline for high schema coverage.

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 action ('Get MON balance') and resource ('for an address on Monad testnet'), making the tool's purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'get-block-by-number' or 'query-mon-nft', which prevents a perfect score.

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. It doesn't mention prerequisites (e.g., needing a valid testnet address) or compare it to sibling tools like 'send-mon-transaction' for balance changes, leaving usage context unclear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

query-mon-nftC

Query NFT information on Monad testnet

ParametersJSON Schema
NameRequiredDescriptionDefault
contractAddressYesNFT contract address
tokenIdYesToken ID of the NFT

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure but only states the action without details on permissions, rate limits, or response format. It doesn't mention if this is a read-only operation or potential side effects, which is inadequate for a tool with no annotation support.

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 no wasted words, clearly front-loading the core purpose. It's appropriately sized for a simple query tool, making it easy for an agent 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 no annotations and no output schema, the description is incomplete. It doesn't explain what information is returned (e.g., metadata, owner), how errors are handled, or any behavioral traits, leaving gaps for the agent to understand the tool's full 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 schema description coverage is 100%, so the input schema already documents both parameters thoroughly. The description doesn't add any extra meaning about the parameters beyond what the schema provides, meeting the baseline for high schema coverage.

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 action ('Query') and resource ('NFT information on Monad testnet'), making the purpose evident. However, it doesn't differentiate from sibling tools like 'get-mon-balance' or 'get-block-by-number' that also query blockchain data, which prevents a perfect score.

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 lacks context about prerequisites, such as needing a contract address and token ID, or comparisons to other query tools in the sibling list, 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.

send-mon-transactionC

Send MON transaction on Monad testnet

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYesAmount of MON to send
toYesRecipient address

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 the full burden of behavioral disclosure. It states the action but lacks critical details: it doesn't specify if this requires authentication, what the transaction cost or gas implications are, whether it's irreversible, or what the expected response format is. This is a significant gap for a transaction tool.

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 directly states the tool's purpose without unnecessary words. 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 of a transaction tool with no annotations and no output schema, the description is incomplete. It doesn't cover behavioral aspects like authentication needs, error handling, or return values, leaving the agent with insufficient context to use the tool safely and effectively.

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% description coverage, clearly documenting both parameters ('amount' and 'to'). The description adds no additional parameter semantics beyond what the schema provides, such as format details (e.g., address format, unit for amount) or constraints. Baseline 3 is appropriate as the 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 action ('Send MON transaction') and specifies the target environment ('on Monad testnet'), which distinguishes it from mainnet operations. However, it doesn't differentiate from potential sibling tools like 'deploy-mon-contract' that might also involve transactions, leaving room for improvement in 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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a wallet or balance), exclusions, or comparisons to sibling tools like 'deploy-mon-contract' for contract deployments or 'get-mon-balance' for checking funds first.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

watch-contract-eventsC

Watch for smart contract events on Monad testnet

ParametersJSON Schema
NameRequiredDescriptionDefault
abiYesContract ABI
addressYesContract address to watch
eventNameYesName of the event to watch
fromBlockNoStart watching from this block number

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 the full burden of behavioral disclosure. It states the tool 'watch for' events, implying a monitoring or subscription-like behavior, but doesn't clarify if this is a one-time query, a continuous stream, or how results are returned (e.g., real-time updates, batch retrieval). It also omits details like rate limits, authentication needs, or whether it's read-only (likely, but not stated). For a tool with potential ongoing behavior, this is a significant gap.

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 that directly states the tool's function without unnecessary words. It is front-loaded with the core action ('Watch for smart contract events') and specifies the context ('on Monad testnet'), making it easy to parse quickly. Every part of the sentence contributes essential information.

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 of blockchain event monitoring (which often involves streaming or subscription behavior), no annotations, and no output schema, the description is incomplete. It doesn't explain what the tool returns (e.g., event logs, real-time notifications), how to handle the watch operation (e.g., polling, WebSocket), or error conditions. For a tool with 4 parameters and potential behavioral nuances, this leaves critical gaps for an AI agent to use it effectively.

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% description coverage, with clear parameter definitions (e.g., 'Contract ABI', 'Contract address to watch'). The description adds no additional semantic context beyond what the schema provides, such as explaining ABI format requirements or eventName matching rules. Given the high schema coverage, a baseline score of 3 is appropriate, as the description doesn't compensate but doesn't detract either.

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 action ('Watch for') and resource ('smart contract events on Monad testnet'), making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like 'query-mon-nft' or 'get-block-by-number' which might also involve blockchain data retrieval, leaving room for ambiguity about when this specific event-watching capability is needed versus other querying methods.

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. It doesn't mention prerequisites (e.g., needing a contract ABI), exclusions (e.g., not for historical data without 'fromBlock'), or comparisons to siblings like 'query-mon-nft' for NFT-specific queries. This lack of context makes it unclear when this tool is the appropriate choice.

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. 7 tool updatesv1.0.0
    • First observeddeploy-mon-contract
    • First observedget-block-by-number
    • First observedget-latest-block
    • First observedget-mon-balance
    • First observedquery-mon-nft
    • First observedsend-mon-transaction
    • First observedwatch-contract-events

TDQS

A3.5/5.0

Scored across 7 tools

Disambiguation5/5

Each tool has a clearly distinct purpose targeting specific blockchain operations on the Monad testnet. There is no overlap in functionality between tools like deploying contracts, querying blocks, checking balances, handling NFTs, sending transactions, and monitoring events.

Naming Consistency5/5

All tool names follow a consistent verb-object pattern with hyphens (e.g., deploy-mon-contract, get-block-by-number). The naming is uniform across all seven tools, making them predictable and easy to understand.

Tool Count5/5

With 7 tools, the server is well-scoped for blockchain interactions, covering essential operations like contract deployment, block queries, balance checks, NFT queries, transactions, and event monitoring. Each tool serves a clear and necessary function without redundancy.

Completeness4/5

The toolset provides comprehensive coverage for core blockchain operations on the Monad testnet, including deployment, queries, and transactions. A minor gap is the lack of tools for contract interaction (e.g., calling functions) or advanced querying (e.g., transaction history), but the existing tools support basic workflows effectively.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server enabling AI agents to interact with the Solana blockchain for DeFi operations like checking balances, transferring tokens, executing swaps, and fetching price data.
    33 npm
    21
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A 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.
    5
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    A Model Context Protocol server that enables AI agents to interact with 30+ Ethereum-compatible blockchain networks, providing services like token transfers, contract interactions, and ENS resolution through a unified interface.
    28
    128 npm
    379
    MIT