Skip to main content
Glama
petazuev228277

Cripto Norte Telegram MCP Server

README.md
# Cripto Norte — Telegram MCP server

Remote MCP server with one tool, `post_to_telegram_channel`, that lets Claude
publish a finished post to your Telegram channel. Tested locally end-to-end
(MCP handshake, tool listing, tool call, error handling) — ready to deploy.

## 1. Create the Telegram bot

1. In Telegram, open **@BotFather** → `/newbot` → follow the prompts.
2. Copy the token it gives you (`TELEGRAM_BOT_TOKEN`).
3. Add the bot to your channel as an **admin** with permission to post messages.
4. Your `TELEGRAM_CHAT_ID` is your channel's `@username` (if public) or its
   numeric ID (if private — get it by forwarding a channel message to
   **@userinfobot** or similar).

## 2. Deploy the server

Any Node.js host that gives you a public HTTPS URL works. Easiest options:

**Railway / Render (free tier works for this)**
1. Push this folder to a new GitHub repo.
2. Create a new Web Service on Railway or Render, point it at the repo.
3. Set the environment variables from `.env.example` (real values) in the
   host's dashboard.
4. Build command: `npm install`. Start command: `npm start`.
5. Once deployed, note the public URL, e.g. `https://your-app.up.railway.app`.
   The MCP endpoint is `https://your-app.up.railway.app/mcp`.

**Fly.io / a VPS** work too — same env vars, same `npm start`, just expose
port 3000 (or whatever `PORT` you set) over HTTPS.

Locally, `npm install && npm start` runs it on `http://localhost:3000/mcp` for testing.

## 3. Connect it to Claude

1. In Claude: **Customize → Connectors → + → Add custom connector**.
2. Name: `Cripto Norte Telegram`.
3. URL: `https://your-app.up.railway.app/mcp`.
4. Advanced settings: since this server checks a simple Bearer token
   (`MCP_AUTH_TOKEN`) rather than full OAuth, check whatever your Claude
   plan's custom-connector UI currently offers for a static bearer token —
   this has changed recently, so if you don't see that option, it's worth
   checking support.claude.com for the current field name, or dropping the
   `MCP_AUTH_TOKEN` check entirely for a first personal test.
5. Click **Add**, then **Connect**.
6. In a chat, click **+ → Connectors** and enable it for that conversation.

## 4. Test it

Ask Claude in that conversation: "send a test message to the Telegram
channel using the connector." It should call `post_to_telegram_channel` and
you'll see the message land in your channel.

## 5. Wire it into a scheduled task

In Claude Cowork → Scheduled → New task → Set up manually:
- Enable the `Cripto Norte Telegram` connector for the task.
- Prompt: reference the `cripto-norte-posts` skill, the post type
  (UTRNNIK / digest), where to pull current prices/news from, and an
  explicit instruction to call `post_to_telegram_channel` with the
  finished, formatted text.
- Set the cadence (e.g. daily 08:30 and 19:00 local time).
- Start with approval mode "requires confirmation," switch to automatic
  once you've checked a few runs.

## Notes

- The server keeps sessions in memory. If it restarts, Claude just
  re-initializes on the next call — no action needed.
- `parse_mode: "Markdown"` is used when sending, matching the skill's
  formatting rules (monospace titles, bold figures, em dash in headers only).
- If you ever need more tools (e.g. posting to multiple channels, or
  separate tools per coin), add more `server.registerTool(...)` blocks in
  `index.js` following the same pattern.