npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

letters-mcp

v1.0.1

Published

MCP server for Letters to the Future — post and read onchain messages and NFTs on Base mainnet via natural language

Readme

letters-mcp

An MCP server that lets AI clients (Claude Desktop, Cursor, etc.) interact with Letters to the Future — a dApp on Base mainnet where anyone can post messages with optional time locks, or mint them as on-chain NFTs. You can write messages intended for future readers, lock them until a specific year, and browse what others have left behind, all through natural language.

Usage examples

"Post a message for the year 2100: I hope you figured it out."
"Leave an anonymous note that unlocks in 50 years: we were trying our best."
"Show me the last 20 messages."
"Mint an NFT: to whoever finds this — hello from 2025."
"How many messages have been posted so far?"

Installation

npx (no install)

npx letters-mcp

Global install

npm install -g letters-mcp

Build from source

git clone https://github.com/memosr/letters-mcp
cd letters-mcp
npm install && npm run build

Configuration

Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

{
  "mcpServers": {
    "letters": {
      "command": "npx",
      "args": ["letters-mcp"],
      "env": {
        "PRIVATE_KEY": "0xyour_private_key_here"
      }
    }
  }
}

Or if installed globally:

{
  "mcpServers": {
    "letters": {
      "command": "letters-mcp",
      "env": {
        "PRIVATE_KEY": "0xyour_private_key_here"
      }
    }
  }
}

Tools

| Tool | Description | |------|-------------| | post_message | Post a message onchain. Accepts optional unlockYears to time-lock and anonymous to hide authorship. | | list_messages | Fetch recent messages. Locked messages show their unlock date instead of content. | | mint_letter_nft | Mint a Letter NFT (0.001 ETH). Content is stored fully on-chain as an SVG. | | get_my_nfts | List all Letter NFTs owned by your wallet, with content parsed from on-chain metadata. | | get_message_count | Get the total number of messages posted to date. |

Network

  • Chain: Base mainnet (chainId 8453)
  • Letters V2: 0x8FeF460431Ae853fA74fA53f9B005de5cb9Df0EF
  • Letter NFT: 0x3C01937B5d7a800C960170F9AF47aBB4237CB6C6
  • RPC: Falls back across llamarpc, publicnode, and mainnet.base.org

Security

Your private key is loaded from the PRIVATE_KEY environment variable and used only to sign transactions locally — it is never transmitted anywhere other than to the RPC endpoint as a signed transaction. This server has no backend, no telemetry, and no network calls other than Base mainnet RPC requests. Review the source if you want to verify.

Only fund the wallet with what you need. For posting messages, gas costs a few cents. For NFT minting, 0.001 ETH + gas.

Builder code

All write transactions append a builder attribution suffix to the calldata. This is a standard convention used by dApps built on top of onchain protocols to identify integrations. It does not affect transaction behavior.

License

MIT


Built by memosr.base.eth. Open to PRs and issues.