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
Maintainers
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-mcpGlobal install
npm install -g letters-mcpBuild from source
git clone https://github.com/memosr/letters-mcp
cd letters-mcp
npm install && npm run buildConfiguration
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.
