Back to Browse

Telegraph MCP Server

Developer ToolsModerate7.2MCP RegistryLocal
Free

Server data from the Official MCP Registry

Decentralized AI inference (weather, deepfake detection, LLMs) with x402 USDC micropayments.

About

Decentralized AI inference (weather, deepfake detection, LLMs) with x402 USDC micropayments.

Security Report

7.2
Moderate7.2Low Risk

Telegraph MCP server is well-structured with proper authentication via EVM/Solana private keys and appropriate permission scoping for its developer tools purpose. The codebase demonstrates good security practices with no malicious patterns, proper credential handling via environment variables, and clear separation of concerns. Minor code quality improvements around error handling and input validation are recommended, but do not indicate real security vulnerabilities. Package verification found 1 issue.

8 files analyzed · 6 issues found

Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.

Permissions Required

This plugin requests these system permissions. Most are normal for its category.

env_vars

Check that this permission is expected for this type of plugin.

HTTP Network Access

Connects to external APIs or services over the internet.

process_spawn

Check that this permission is expected for this type of plugin.

What You'll Need

Set these up before or after installing:

Telegraph node public API URL (e.g. http://13.237.89.59:7044)Optional

Environment variable: TELEGRAPH_NODE_URL

Telegraph Engine inference server URL (e.g. http://13.237.89.59:8080)Optional

Environment variable: TELEGRAPH_ENGINE_URL

Telegraph Daemon signal API URL (e.g. http://13.237.89.59:8081)Optional

Environment variable: TELEGRAPH_DAEMON_URL

EVM private key (0x-prefixed hex) of a USDC-funded burner wallet used to sign x402 payments. At least one of TELEGRAPH_EVM_PRIVATE_KEY or TELEGRAPH_SOLANA_PRIVATE_KEY is required.Required

Environment variable: TELEGRAPH_EVM_PRIVATE_KEY

Solana private key (base58) for SVM x402 payments. Optional alternative to TELEGRAPH_EVM_PRIVATE_KEY.Required

Environment variable: TELEGRAPH_SOLANA_PRIVATE_KEY

CAIP-2 network identifier for EVM payments. Defaults to eip155:*.Optional

Environment variable: EVM_NETWORK

CAIP-2 network identifier for Solana payments. Defaults to solana:*.Optional

Environment variable: SVM_NETWORK

Dynamic miner-tool refresh interval in milliseconds. Defaults to 300000 (5 min). Set to 0 to disable.Optional

Environment variable: REFRESH_INTERVAL_MS

How to Install

Add this to your MCP configuration file:

{
  "mcpServers": {
    "io-github-telegraphprotocol-telegraph": {
      "env": {
        "EVM_NETWORK": "your-evm-network-here",
        "SVM_NETWORK": "your-svm-network-here",
        "TELEGRAPH_NODE_URL": "your-telegraph-node-url-here",
        "REFRESH_INTERVAL_MS": "your-refresh-interval-ms-here",
        "TELEGRAPH_DAEMON_URL": "your-telegraph-daemon-url-here",
        "TELEGRAPH_ENGINE_URL": "your-telegraph-engine-url-here",
        "TELEGRAPH_EVM_PRIVATE_KEY": "your-telegraph-evm-private-key-here",
        "TELEGRAPH_SOLANA_PRIVATE_KEY": "your-telegraph-solana-private-key-here"
      },
      "args": [
        "-y",
        "telegraph-protocol-mcp"
      ],
      "command": "npx"
    }
  }
}

Documentation

View on GitHub

From the project's GitHub README.

@telegraph/mcp-server

MCP server exposing Telegraph Protocol AI inference APIs as tools with automatic x402 micropayments.

Connects any MCP-compatible agent (Claude Desktop, Cursor, ElizaOS, LangChain, OpenClaw, Goose, etc.) to Telegraph's network of AI miners — weather forecasting, deepfake detection, LLM inference, AI-text detection, signal monitoring — with zero crypto code in the agent. The MCP server handles private key custody, payment signing, and transaction settlement internally.

Miners can be Bittensor subnets, hosted models, or any private API integrated via YAML. Some tool and field names still say subnet for legacy reasons — read it as "miner".

Documentation

DocumentDescription
ArchitectureMCP protocol, tool categories, x402 auto-payment, client integrations
TroubleshootingCommon issues and solutions

Quick Start

Option A — npx (no clone, recommended once published)

TELEGRAPH_NODE_URL=http://13.237.89.59:7044 \
TELEGRAPH_ENGINE_URL=http://13.237.89.59:8080 \
TELEGRAPH_DAEMON_URL=http://13.237.89.59:8081 \
TELEGRAPH_EVM_PRIVATE_KEY=0xyour_key_here \
npx -y telegraph-protocol-mcp

Option B — from source

# 1. Clone and enter
git clone https://github.com/telegraphprotocol/telegraph-mcp
cd telegraph-mcp

# 2. Copy and edit .env
cp .env.example .env
# Edit: set TELEGRAPH_EVM_PRIVATE_KEY=0xyour_key_here

# 3. Install and build
npm install && npm run build

# 4. Run
npm start

Published to npm as telegraph-protocol-mcp and listed on the MCP Registry as io.github.telegraphprotocol/telegraph. Maintainers: see PUBLISHING.md.

Architecture

Agent (Claude / Cursor / Eliza / etc.)
       │
       │ MCP protocol (JSON-RPC over stdio)
       │
┌──────▼─────────────────────────────────────────┐
│  Telegraph MCP Server (runs locally)            │
│                                                 │
│  ┌─────────┐  ┌──────────┐  ┌───────────────┐  │
│  │ Node    │  │ Engine   │  │ Daemon        │  │
│  │ :7044   │  │ :8080    │  │ :8081         │  │
│  ├─────────┤  ├──────────┤  ├───────────────┤  │
│  │ Status  │  │ Subnets  │  │ Health        │  │
│  │ Health  │  │ Ask      │  │ Categories    │  │
│  │ Subnets │  │ Direct   │  │ Questions     │  │
│  │ Dynamic │  │          │  │               │  │
│  └─────────┘  └──────────┘  └───────────────┘  │
│                                                 │
│  X402 payment handled transparently:            │
│    request → 402 → sign EIP-3009 → retry        │
└─────────────────────────────────────────────────┘

Configuration

All via environment variables (.env file or inline):

VariableRequiredDefaultDescription
TELEGRAPH_NODE_URLYeshttp://localhost:7044Telegraph node URL
TELEGRAPH_ENGINE_URLYeshttp://localhost:8080Engine server URL
TELEGRAPH_DAEMON_URLYeshttp://localhost:8081Daemon API URL
TELEGRAPH_EVM_PRIVATE_KEYYes*EVM private key (0x-prefixed hex)
TELEGRAPH_SOLANA_PRIVATE_KEYNo*Solana private key (base58)
EVM_NETWORKNoeip155:*EVM CAIP-2 network
SVM_NETWORKNosolana:*Solana CAIP-2 network
REFRESH_INTERVAL_MSNo300000Miner-tool refresh interval (ms). 0 to disable.

*At least one private key required.

Available Tools

Node Tools (no payment)

ToolDescription
tg_node_statusNode status, public key, chain info
tg_node_subnets_healthMiner integration health check
tg_node_list_subnetsFull miner catalog with metadata, schemas, endpoints

Engine Tools

ToolPaymentDescription
tg_engine_list_subnetsFreeList the miners the Engine can route to
tg_engine_askx402Auto-routed inference (LLM picks the best miner for your query)
tg_engine_ask_subnetx402Direct inference through a specific miner by ID

Daemon Tools (no payment)

ToolDescription
tg_daemon_healthDaemon health check
tg_daemon_categoriesSignal categories (POLITICS, ECONOMICS, TECHNOLOGY, CLIMATE, HEALTH, CRYPTO, SPORTS, …)
tg_daemon_questionsQuery collected signals with filters (category, source, time, interest)

Dynamic Miner Tools (auto-discovered, x402 payment)

Tools for each miner endpoint are auto-generated from the Telegraph node's live integration registry. The live set changes on-chain, so treat this as a snapshot, not the source of truth (call tg_node_list_subnets for the current catalog):

MinerTools
Zeus (18) — Weathertg_zeus_predict
ItsAI (32) — AI text detectiontg_itsai_text_detector_detect
Sapling (33) — AI content detectiontg_sapling_ai_detector_detect
BitMind (34) — Deepfaketg_bitmind_detect_image, tg_bitmind_detect_video, tg_bitmind_preprocess_video, tg_bitmind_get_video_upload_url
OpenAI (102) — LLM / imagestg_openai_chat, tg_openai_responses, tg_openai_embed, tg_openai_images_generate, tg_openai_moderate

These update automatically. New miners registered on-chain appear within 5 minutes. Deregistered miners are cleaned up. The agent always sees only currently valid tools.

Some tool and field names contain subnet for legacy reasons — Telegraph began by integrating Bittensor subnets. Today a miner is any provider integrated via YAML, subnet or not.

How x402 Payments Work

When an agent calls a paid tool (e.g., tg_engine_ask):

  1. MCP server sends request to Telegraph
  2. Telegraph returns HTTP 402 with payment requirements in response header
  3. @x402/fetch intercepts the 402, signs an EIP-3009 TransferWithAuthorization using your private key, attaches the signature as a PAYMENT header, and retries
  4. Telegraph verifies the payment on-chain via the PayAI facilitator and returns the result

The agent and LLM never see the payment flow, private key, or blockchain transaction. It's fully transparent — the agent just sees a tool that returns results.

Integration Guides

Claude Desktop

Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows).

Using npx (simplest — no clone or build):

{
  "mcpServers": {
    "telegraph": {
      "command": "npx",
      "args": ["-y", "telegraph-protocol-mcp"],
      "env": {
        "TELEGRAPH_NODE_URL": "http://13.237.89.59:7044",
        "TELEGRAPH_ENGINE_URL": "http://13.237.89.59:8080",
        "TELEGRAPH_DAEMON_URL": "http://13.237.89.59:8081",
        "TELEGRAPH_EVM_PRIVATE_KEY": "0xyour_key_here"
      }
    }
  }
}

Or pointing at a local build:

{
  "mcpServers": {
    "telegraph": {
      "command": "node",
      "args": ["/path/to/telegraph-mcp/dist/index.js"],
      "env": {
        "TELEGRAPH_NODE_URL": "http://13.237.89.59:7044",
        "TELEGRAPH_ENGINE_URL": "http://13.237.89.59:8080",
        "TELEGRAPH_DAEMON_URL": "http://13.237.89.59:8081",
        "TELEGRAPH_EVM_PRIVATE_KEY": "0xyour_key_here"
      }
    }
  }
}

Restart Claude Desktop. The Telegraph tools will appear in the tool list. Try asking "What's the weather in Lahore?" or "Use the Telegraph engine to explain what Bitcoin is."

Cursor

Add to Cursor Settings → MCP → Add new MCP server:

{
  "mcpServers": {
    "telegraph": {
      "command": "node",
      "args": ["/path/to/telegraph-mcp/dist/index.js"],
      "env": {
        "TELEGRAPH_NODE_URL": "http://13.237.89.59:7044",
        "TELEGRAPH_ENGINE_URL": "http://13.237.89.59:8080",
        "TELEGRAPH_DAEMON_URL": "http://13.237.89.59:8081",
        "TELEGRAPH_EVM_PRIVATE_KEY": "0xyour_key_here"
      }
    }
  }
}

ElizaOS

In your Eliza character file or MCP plugin config:

{
  "mcp": {
    "telegraph": {
      "command": "node",
      "args": ["/path/to/telegraph-mcp/dist/index.js"],
      "env": {
        "TELEGRAPH_NODE_URL": "http://13.237.89.59:7044",
        "TELEGRAPH_ENGINE_URL": "http://13.237.89.59:8080",
        "TELEGRAPH_DAEMON_URL": "http://13.237.89.59:8081",
        "TELEGRAPH_EVM_PRIVATE_KEY": "0xyour_key_here"
      }
    }
  }
}

ElizaOS v0.25+ supports MCP via the @elizaos/plugin-mcp package. Enable it in your character's plugin list:

{
  "plugins": ["@elizaos/plugin-mcp"]
}

LangChain / LangGraph

LangChain supports MCP through langchain-mcp-adapters:

pip install langchain-mcp-adapters
from langchain_mcp_adapters.client import MultiServerMCPClient

client = MultiServerMCPClient({
    "telegraph": {
        "command": "node",
        "args": ["/path/to/telegraph-mcp/dist/index.js"],
        "env": {
            "TELEGRAPH_NODE_URL": "http://13.237.89.59:7044",
            "TELEGRAPH_ENGINE_URL": "http://13.237.89.59:8080",
            "TELEGRAPH_DAEMON_URL": "http://13.237.89.59:8081",
            "TELEGRAPH_EVM_PRIVATE_KEY": "0xyour_key_here",
        },
        "transport": "stdio",
    }
})

tools = client.get_tools()
# Use tools with your LangChain agent

TypeScript/Node.js:

npm install @langchain/mcp-adapters
import { MultiServerMCPClient } from "@langchain/mcp-adapters";

const client = new MultiServerMCPClient({
  telegraph: {
    command: "node",
    args: ["/path/to/telegraph-mcp/dist/index.js"],
    env: {
      TELEGRAPH_NODE_URL: "http://13.237.89.59:7044",
      TELEGRAPH_ENGINE_URL: "http://13.237.89.59:8080",
      TELEGRAPH_DAEMON_URL: "http://13.237.89.59:8081",
      TELEGRAPH_EVM_PRIVATE_KEY: "0xyour_key_here",
    },
    transport: "stdio",
  },
});

const tools = await client.getTools();

OpenClaw

OpenClaw natively supports MCP via configuration. Add to openclaw.config.json:

{
  "mcpServers": {
    "telegraph": {
      "type": "stdio",
      "command": "node",
      "args": ["/path/to/telegraph-mcp/dist/index.js"],
      "env": {
        "TELEGRAPH_NODE_URL": "http://13.237.89.59:7044",
        "TELEGRAPH_ENGINE_URL": "http://13.237.89.59:8080",
        "TELEGRAPH_DAEMON_URL": "http://13.237.89.59:8081",
        "TELEGRAPH_EVM_PRIVATE_KEY": "0xyour_key_here"
      }
    }
  }
}

Goose

Goose supports MCP servers through its extensions system. Configuration in ~/.config/goose/config.yaml:

extensions:
  telegraph:
    type: mcp
    command: node
    args:
      - /path/to/telegraph-mcp/dist/index.js
    env:
      TELEGRAPH_NODE_URL: http://13.237.89.59:7044
      TELEGRAPH_ENGINE_URL: http://13.237.89.59:8080
      TELEGRAPH_DAEMON_URL: http://13.237.89.59:8081
      TELEGRAPH_EVM_PRIVATE_KEY: 0xyour_key_here

VS Code / Continue

In Continue's config.json:

{
  "experimental": {
    "modelContextProtocolServers": [
      {
        "transport": {
          "type": "stdio",
          "command": "node",
          "args": ["/path/to/telegraph-mcp/dist/index.js"],
          "env": {
            "TELEGRAPH_NODE_URL": "http://13.237.89.59:7044",
            "TELEGRAPH_ENGINE_URL": "http://13.237.89.59:8080",
            "TELEGRAPH_DAEMON_URL": "http://13.237.89.59:8081",
            "TELEGRAPH_EVM_PRIVATE_KEY": "0xyour_key_here"
          }
        }
      }
    ]
  }
}

Generic / Any MCP Client

The server uses MCP stdio transport — the standard for local MCP servers. Any client that supports the MCP protocol over stdio can use it:

{
  "mcpServers": {
    "telegraph": {
      "command": "node",
      "args": ["/path/to/telegraph-mcp/dist/index.js"],
      "env": {
        "TELEGRAPH_NODE_URL": "http://13.237.89.59:7044",
        "TELEGRAPH_ENGINE_URL": "http://13.237.89.59:8080",
        "TELEGRAPH_DAEMON_URL": "http://13.237.89.59:8081",
        "TELEGRAPH_EVM_PRIVATE_KEY": "0xyour_key_here"
      }
    }
  }
}

Dynamic Tool Discovery

Subnet tools are not hardcoded. On startup and every 5 minutes:

  1. Fetches live integrations from GET /miner-dispatcher/integrations on the Telegraph node
  2. Diffs against currently registered tools
  3. Adds new subnets → auto-registers tools
  4. Removes stale subnets → deletes tools
  5. Sends notifications/tools/list_changed to connected clients

This means:

  • New subnets appear automatically within 5 minutes of on-chain registration — no MCP restart needed
  • Removed subnets are cleaned up — agents won't call non-existent tools
  • Agents always have an accurate view of what's available on the network

Security

  • Use a burner wallet. Never use your main wallet. Fund with only the USDC needed for inference.
  • The private key stays in the MCP process. Never exposed to the agent or LLM.
  • The MCP server runs locally over stdio — no network exposure.
  • Payments are per-call: typically $0.01 per inference request.

Development

npm install          # Install deps
npm run build        # Compile TypeScript
npm run dev          # Dev mode with tsx (hot reload)
npx @modelcontextprotocol/inspector dist/index.js  # Inspect tools

Reviews

No reviews yet

Be the first to review this server!