---
title: "Telegram MCP Server: Read and Send Telegram Messages via AI"
url: "https://mcpshelf.co/servers/telegram"
description: "Telegram MCP signs in as your own Telegram account so an assistant can read chats, search, send and manage groups. Session setup and the read-only mode."
updated: "2026-10-27"
site: "MCP Shelf"
---

# Telegram MCP

> Your own Telegram account, as an assistant can use it: chats, search, sending and groups.

Source: https://mcpshelf.co/servers/telegram  
Markdown: https://mcpshelf.co/servers/telegram.md  
Generated: 2026-10-27T13:22:17.598Z

## Facts

- **Name:** Telegram MCP
- **Tagline:** Your own Telegram account, as an assistant can use it: chats, search, sending and groups.
- **Description:** Telegram MCP is an open source MCP server that signs in to Telegram as your own user account, so AI assistants can read, search and send messages in your chats, groups and channels.
- **Repository:** https://github.com/chigwell/telegram-mcp
- **Install:** `claude mcp add telegram -e TELEGRAM_API_ID=YOUR_API_ID -e TELEGRAM_API_HASH=YOUR_API_HASH -e TELEGRAM_SESSION_STRING=YOUR_SESSION_STRING -e TELEGRAM_EXPOSED_TOOLS=read-only -- uv --directory /full/path/to/telegram-mcp run main.py`
- **Transport:** stdio (local)
- **Auth:** Needs `TELEGRAM_API_ID`, `TELEGRAM_API_HASH`, `TELEGRAM_SESSION_STRING`
- **Tools exposed:** 147: `list_accounts`, `get_chats`, `subscribe_public_channel`, `list_topics`, `list_forum_topic_icons`, `enable_forum_topics`, `create_forum_topic`, `edit_forum_topic`, `delete_forum_topic`, `list_chats`, `get_chat`, `search_public_chats`, `resolve_username`, `get_full_chat`, `mute_chat`, `unmute_chat`, `archive_chat`, `unarchive_chat`, `get_common_chats`, `get_message_read_by`, `get_message_link`, `list_contacts`, `search_contacts`, `get_contact_ids`, `get_direct_chat_by_contact`, `get_contact_chats`, `get_last_interaction`, `add_contact`, `delete_contact`, `block_user`, `unblock_user`, `import_contacts`, `export_contacts`, `get_blocked_users`, `send_contact`, `set_contact_alias`, `list_contact_aliases`, `delete_contact_alias`, `get_custom_emoji_packs`, `get_custom_emoji_pack`, `preview_custom_emoji`, `wait_for_events`, `get_messages_after`, `wait_for_new_message`, `wait_for_settled_message`, `enable_incoming_feed`, `disable_incoming_feed`, `incoming_feed_status`, `get_folder_limits`, `get_folder_snapshot`, `update_folder`, `list_folders`, `get_folder`, `create_folder`, `add_chat_to_folder`, `remove_chat_from_folder`, `delete_folder`, `reorder_folders`, `get_chatlist_invite`, `create_group`, `invite_to_group`, `leave_chat`, `get_participants`, `create_channel`, `upgrade_group_to_supergroup`, `edit_chat_title`, `edit_chat_photo`, `edit_chat_about`, `delete_chat_photo`, `promote_admin`, `demote_admin`, `ban_user`, `unban_user`, `remove_user`, `set_default_chat_permissions`, `toggle_slow_mode`, `edit_admin_rights`, `get_admins`, `get_member_admin_status`, `get_banned_users`, `get_invite_link`, `join_chat_by_link`, `export_chat_invite`, `import_chat_invite`, `get_recent_actions`, `send_file`, `send_album`, `download_media`, `send_voice`, `upload_file`, `get_media_info`, `get_sticker_sets`, `send_sticker`, `get_gif_search`, `send_gif`, `list_photos`, `open_photo`, `get_photo_sheet`, `inspect_document`, `get_messages`, `send_message`, `send_scheduled_message`, `get_scheduled_messages`, `delete_scheduled_message`, `list_inline_buttons`, `press_inline_button`, `list_messages`, `transcribe_voice`, `get_message_context`, `get_send_as`, `set_default_send_as`, `forward_message`, `forward_messages`, `edit_message`, `delete_message`, `delete_chat_history`, `delete_messages_bulk`, `pin_message`, `unpin_message`, `unpin_all_messages`, `send_typing`, `mark_as_read`, `reply_to_message`, `search_messages`, `search_global`, `get_history`, `get_pinned_messages`, `create_poll`, `vote_poll`, `send_reaction`, `remove_reaction`, `get_message_reactions`, `save_draft`, `get_drafts`, `clear_draft`, `export_unread_messages`, `get_me`, `update_profile`, `set_profile_photo`, `delete_profile_photo`, `get_privacy_settings`, `set_privacy_settings`, `get_full_user`, `get_bot_info`, `set_bot_commands`, `get_user_photos`, `get_user_status`
- **Category:** Knowledge and work apps (https://mcpshelf.co/categories/knowledge-and-work)
- **Stats:** 1.9K GitHub stars, last commit 26 Oct 2026, 0 upvotes on MCP Shelf
- **Install check:** Needs your setup first
- **Listed:** 2026-10-27
- **Page updated:** 2026-10-27

## Full description

### What is Telegram MCP?

**Telegram MCP is an open source MCP server that signs in to Telegram as your own user account, so AI assistants can read, search and send messages in your chats, groups and channels.**

This server by chigwell uses Telethon to sign in as your personal Telegram account, not as a bot. That means the model sees what you see: every chat, group and channel, with tools to read history, search, send and edit messages, react, forward, manage contacts, run polls and administer groups. There are nearly 150 tools in total, and voice messages can be transcribed through Groq, an OpenAI-compatible endpoint or a local Whisper model.

Acting as you is the reason to set it up carefully. A read-only mode registers only the tools that cannot change anything, you can add back just the ones you want, and an allowlist can limit it to particular chats.

|  |  |
| --- | --- |
| Made by | chigwell and contributors |
| GitHub | https://github.com/chigwell/telegram-mcp |
| Licence | Apache-2.0 |
| GitHub stars | 1.9K |
| Last commit | 26 Oct 2026 |
| Tools | 147 |
| Runs on | Your computer |
| Install check | Needs your setup first |
| Category | [Knowledge and work apps](https://mcpshelf.co/categories/knowledge-and-work) |
| Setup checked | 27 Oct 2026 |
| Page updated | 27 Oct 2026 |

**Our check:** It needs something our Linux test machine does not have (an account, a desktop app, a Mac or a running service), so on 27 Oct 2026 we read its tools from the source code instead of running this config. The shared database gave "npx telegram-mcp", which is an npm package by someone else, and the telegram-mcp name on PyPI belongs to another project too. Run this one from its repository.

#### MCP Shelf take

> Telegram needs something our Linux test machine does not have (an account, an app or a service), so on 27 Oct 2026 we read its source and counted 147 tools. 65 of the 147 only read; the other 82 can change things. Other directories point at a package with the same name that belongs to someone else; the config on this page installs the real one. It sits 11th of 16 in its category on our shelf by GitHub stars (1.9K).

— MCP Shelf tests (numbers from our own runs), tested on 27 Oct 2026

### What tools does Telegram MCP have?

We listed 147 tools on 27 Oct 2026. 65 only read; the rest can change things or run commands.

| Tool | Kind | What it is for |
| --- | --- | --- |
| `list_accounts` | reads | Lists the Telegram accounts configured for the server, when you use more than one. |
| `get_chats` | reads | Lists your chats a page at a time. |
| `subscribe_public_channel` | changes |  |
| `list_topics` | reads |  |
| `list_forum_topic_icons` | reads |  |
| `enable_forum_topics` | changes |  |
| `create_forum_topic` | changes |  |
| `edit_forum_topic` | changes |  |
| `delete_forum_topic` | changes |  |
| `list_chats` | reads | Lists chats with filters such as type, unread or archived. |
| `get_chat` | reads | Returns the details of one chat. |
| `search_public_chats` | reads | Finds public channels, groups and users by name. |
| `resolve_username` | reads | Looks up the user or chat behind an @username. |
| `get_full_chat` | reads |  |
| `mute_chat` | changes | Mutes a chat's notifications. |
| `unmute_chat` | changes |  |
| `archive_chat` | changes | Moves a chat to the archive. |
| `unarchive_chat` | changes |  |
| `get_common_chats` | reads |  |
| `get_message_read_by` | reads |  |
| `get_message_link` | reads |  |
| `list_contacts` | reads | Lists your contacts. |
| `search_contacts` | reads | Finds a contact by name, username or phone. |
| `get_contact_ids` | reads |  |
| `get_direct_chat_by_contact` | reads |  |
| `get_contact_chats` | reads |  |
| `get_last_interaction` | reads |  |
| `add_contact` | changes | Adds a contact. |
| `delete_contact` | changes |  |
| `block_user` | changes | Blocks a user. |
| `unblock_user` | changes |  |
| `import_contacts` | changes |  |
| `export_contacts` | reads |  |
| `get_blocked_users` | reads |  |
| `send_contact` | changes |  |
| `set_contact_alias` | changes |  |
| `list_contact_aliases` | reads |  |
| `delete_contact_alias` | changes |  |
| `get_custom_emoji_packs` | reads |  |
| `get_custom_emoji_pack` | reads |  |
| `preview_custom_emoji` | reads |  |
| `wait_for_events` | reads |  |
| `get_messages_after` | reads |  |
| `wait_for_new_message` | reads | Waits for a new private message from a person, then lists the chats with messages waiting. |
| `wait_for_settled_message` | reads |  |
| `enable_incoming_feed` | changes | Starts writing incoming messages to a local file a client can watch (Claude Code). |
| `disable_incoming_feed` | changes |  |
| `incoming_feed_status` | reads |  |
| `get_folder_limits` | reads |  |
| `get_folder_snapshot` | reads |  |
| `update_folder` | changes |  |
| `list_folders` | reads | Lists your chat folders. |
| `get_folder` | reads |  |
| `create_folder` | changes | Creates a chat folder. |
| `add_chat_to_folder` | changes |  |
| `remove_chat_from_folder` | changes |  |
| `delete_folder` | changes |  |
| `reorder_folders` | changes |  |
| `get_chatlist_invite` | reads |  |
| `create_group` | changes | Creates a new group with the people you choose. |
| `invite_to_group` | changes | Adds people to a group or channel. |
| `leave_chat` | changes | Leaves a group or channel. |
| `get_participants` | reads | Lists the members of a group or channel. |
| `create_channel` | changes | Creates a channel or supergroup. |
| `upgrade_group_to_supergroup` | changes |  |
| `edit_chat_title` | changes |  |
| `edit_chat_photo` | changes |  |
| `edit_chat_about` | changes |  |
| `delete_chat_photo` | changes |  |
| `promote_admin` | changes | Makes a member an admin. |
| `demote_admin` | changes |  |
| `ban_user` | changes | Bans a user from a group or channel. |
| `unban_user` | changes |  |
| `remove_user` | changes |  |
| `set_default_chat_permissions` | changes |  |
| `toggle_slow_mode` | changes |  |
| `edit_admin_rights` | changes |  |
| `get_admins` | reads |  |
| `get_member_admin_status` | reads |  |
| `get_banned_users` | reads |  |
| `get_invite_link` | changes |  |
| `join_chat_by_link` | changes | Joins a chat from an invite link. |
| `export_chat_invite` | changes |  |
| `import_chat_invite` | changes |  |
| `get_recent_actions` | reads |  |
| `send_file` | changes | Sends a file from an allowed folder on your machine. |
| `send_album` | changes |  |
| `download_media` | changes | Saves a photo, video or document from a message to your machine. |
| `send_voice` | changes |  |
| `upload_file` | changes |  |
| `get_media_info` | reads |  |
| `get_sticker_sets` | reads |  |
| `send_sticker` | changes |  |
| `get_gif_search` | reads |  |
| `send_gif` | changes |  |
| `list_photos` | reads |  |
| `open_photo` | reads |  |
| `get_photo_sheet` | reads |  |
| `inspect_document` | reads |  |
| `get_messages` | reads | Reads messages from a chat, a page at a time. |
| `send_message` | changes | Sends a message to a chat. |
| `send_scheduled_message` | changes | Schedules a message to send later. |
| `get_scheduled_messages` | reads |  |
| `delete_scheduled_message` | changes |  |
| `list_inline_buttons` | reads |  |
| `press_inline_button` | changes |  |
| `list_messages` | reads | Reads messages with filters such as date, sender or search text. |
| `transcribe_voice` | reads | Turns a voice message into text with the engine you set up. |
| `get_message_context` | reads | Shows the messages around one message. |
| `get_send_as` | reads |  |
| `set_default_send_as` | changes |  |
| `forward_message` | changes | Forwards a message to another chat. |
| `forward_messages` | changes |  |
| `edit_message` | changes | Edits a message you sent. |
| `delete_message` | changes | Deletes a message. |
| `delete_chat_history` | changes |  |
| `delete_messages_bulk` | changes |  |
| `pin_message` | changes | Pins a message in a chat. |
| `unpin_message` | changes |  |
| `unpin_all_messages` | changes |  |
| `send_typing` | changes |  |
| `mark_as_read` | changes | Marks a chat as read. |
| `reply_to_message` | changes | Replies to a particular message. |
| `search_messages` | reads | Searches the messages in one chat. |
| `search_global` | reads | Searches across all your chats. |
| `get_history` | reads | Reads a chat's history, up to a limit. |
| `get_pinned_messages` | reads |  |
| `create_poll` | changes | Creates a poll in a chat. |
| `vote_poll` | changes |  |
| `send_reaction` | changes | Adds an emoji reaction to a message. |
| `remove_reaction` | changes |  |
| `get_message_reactions` | reads |  |
| `save_draft` | changes | Saves a draft in a chat without sending it. |
| `get_drafts` | reads |  |
| `clear_draft` | changes |  |
| `export_unread_messages` | changes | Exports the unread messages of one or more chats to a JSON file. |
| `get_me` | reads | Shows the account the server is signed in as. |
| `update_profile` | changes | Changes your name or bio. |
| `set_profile_photo` | changes |  |
| `delete_profile_photo` | changes |  |
| `get_privacy_settings` | reads | Reads your privacy settings. |
| `set_privacy_settings` | changes |  |
| `get_full_user` | reads |  |
| `get_bot_info` | reads |  |
| `set_bot_commands` | changes |  |
| `get_user_photos` | reads |  |
| `get_user_status` | reads |  |

#### Tool groups

| Group | Covers |
| --- | --- |
| `Messages` | Reading, searching, sending, editing, forwarding, scheduling, pinning, reactions, polls and drafts: 37 tools. |
| `Groups and channels` | Creating groups and channels, members, admins, bans, permissions, invite links and the admin log: 26 tools. |
| `Chats` | Listing and opening chats, forum topics, muting, archiving and public search: 20 tools. |
| `Contacts` | Contacts, blocking, importing and exporting, and remembered names for people: 17 tools. |
| `Media and custom emoji` | Files, albums, voice notes, stickers, GIFs, photos, documents and custom emoji packs: 17 tools. |
| `Folders, profile and accounts` | Chat folders, your profile, privacy settings, bot info and the list of configured accounts: 23 tools. |
| `Events` | Waiting for new messages and the incoming-message feed: 7 tools. |

### How do I install Telegram MCP?

#### What you need first

- An API ID and hash from my.telegram.org/apps
- A session string, made with the script in the repository
- Python 3.10 or newer and uv

1. Clone https://github.com/chigwell/telegram-mcp and run "uv sync" inside it.
2. Create an app at my.telegram.org/apps to get your API ID and hash.
3. Run "uv run session_string_generator.py" (add --qr to sign in by scanning a QR code) and copy the session string it prints.
4. Add the config below with your values. Remove TELEGRAM_EXPOSED_TOOLS, or use "read-only+send_message,reply_to_message", when you want it to send.

#### Claude Code

Where: Your terminal, in the project folder

```bash
claude mcp add telegram -e TELEGRAM_API_ID=YOUR_API_ID -e TELEGRAM_API_HASH=YOUR_API_HASH -e TELEGRAM_SESSION_STRING=YOUR_SESSION_STRING -e TELEGRAM_EXPOSED_TOOLS=read-only -- uv --directory /full/path/to/telegram-mcp run main.py
```

Only Claude Code can use the incoming event feed: enable_incoming_feed writes new messages to a file that a Monitor watches, so Claude wakes on replies instead of waiting in a blocking call.

#### Cursor

Where: ~/.cursor/mcp.json, or .cursor/mcp.json in a project

```json
{
  "mcpServers": {
    "telegram": {
      "command": "uv",
      "args": [
        "--directory",
        "/full/path/to/telegram-mcp",
        "run",
        "main.py"
      ],
      "env": {
        "TELEGRAM_API_ID": "YOUR_API_ID",
        "TELEGRAM_API_HASH": "YOUR_API_HASH",
        "TELEGRAM_SESSION_STRING": "YOUR_SESSION_STRING",
        "TELEGRAM_EXPOSED_TOOLS": "read-only"
      }
    }
  }
}
```

#### Claude Desktop

Where: claude_desktop_config.json (Settings → Developer → Edit Config)

```json
{
  "mcpServers": {
    "telegram": {
      "command": "uv",
      "args": [
        "--directory",
        "/full/path/to/telegram-mcp",
        "run",
        "main.py"
      ],
      "env": {
        "TELEGRAM_API_ID": "YOUR_API_ID",
        "TELEGRAM_API_HASH": "YOUR_API_HASH",
        "TELEGRAM_SESSION_STRING": "YOUR_SESSION_STRING",
        "TELEGRAM_EXPOSED_TOOLS": "read-only"
      }
    }
  }
}
```

#### VS Code

Where: .vscode/mcp.json in your project

```json
{
  "servers": {
    "telegram": {
      "type": "stdio",
      "command": "uv",
      "args": [
        "--directory",
        "/full/path/to/telegram-mcp",
        "run",
        "main.py"
      ],
      "env": {
        "TELEGRAM_API_ID": "YOUR_API_ID",
        "TELEGRAM_API_HASH": "YOUR_API_HASH",
        "TELEGRAM_SESSION_STRING": "YOUR_SESSION_STRING",
        "TELEGRAM_EXPOSED_TOOLS": "read-only"
      }
    }
  }
}
```

#### Windsurf

Where: ~/.codeium/windsurf/mcp_config.json

```json
{
  "mcpServers": {
    "telegram": {
      "command": "uv",
      "args": [
        "--directory",
        "/full/path/to/telegram-mcp",
        "run",
        "main.py"
      ],
      "env": {
        "TELEGRAM_API_ID": "YOUR_API_ID",
        "TELEGRAM_API_HASH": "YOUR_API_HASH",
        "TELEGRAM_SESSION_STRING": "YOUR_SESSION_STRING",
        "TELEGRAM_EXPOSED_TOOLS": "read-only"
      }
    }
  }
}
```

#### ChatGPT

Where: Not supported

Not supported: it runs from a clone on your machine with your Telegram session, and ChatGPT only connects to remote servers.

Checked against the project's own install docs on 27 Oct 2026: https://github.com/chigwell/telegram-mcp#readme

### How do I configure Telegram MCP?

| Setting | Kind | Required | What it does |
| --- | --- | --- | --- |
| `TELEGRAM_API_ID` | env | yes | Your app's API ID from my.telegram.org/apps. Example: `1234567` |
| `TELEGRAM_API_HASH` | env | yes | Your app's API hash from the same page. |
| `TELEGRAM_SESSION_STRING` | env | yes | The signed-in session made by session_string_generator.py. Treat it like a password: it gives full access to your account. |
| `TELEGRAM_SESSION_NAME` | env | no | An absolute path to a session file, used instead of the session string. The author recommends it for servers that run for a long time. Example: `/Users/you/telegram_mcp_session` |
| `TELEGRAM_EXPOSED_TOOLS` | env | no | all (the default), read-only, or read-only plus named tools, such as read-only+send_message,reply_to_message. Tools left out are never registered. Example: `read-only` |
| `TELEGRAM_ALLOWED_CHAT_IDS` | env | no | A list of chat IDs the server may touch. Every other chat is out of reach. |
| `TELEGRAM_TRANSCRIBE_ENGINE` | env | no | How voice messages are transcribed: groq (the default, needs GROQ_API_KEY), telegram, openai or whisper (local). Example: `whisper` |

### What can Telegram MCP read and change?

**It can read**

- Every chat, group and channel your account can see, with their history and media
- Your contacts, folders, profile and privacy settings

**It can change**

- Messages sent, edited, forwarded or deleted as you
- Groups and channels you create or administer, their members and admins
- Your contacts, folders, profile and privacy settings

**Safer setup:** Start with TELEGRAM_EXPOSED_TOOLS=read-only and add back only the tools you need, and set TELEGRAM_ALLOWED_CHAT_IDS to limit which chats it can reach.

### Good for

- Catching up on busy groups and channels with a summary
- Searching your whole Telegram history for a message or file
- Drafting and sending replies without switching apps

### Telegram MCP not working? Common fixes

**The session is not authorized**
Generate a new session string with uv run session_string_generator.py and put it in your config.

**AuthKeyDuplicatedError**
The same session was used from two places at once. Make a fresh session for this server and do not share it with another script.

**database is locked**
Two copies of the server are using the same session file. Close the other one, or use a session string instead of TELEGRAM_SESSION_NAME.

**Slow replies after many requests**
Telegram rate-limits accounts. TELEGRAM_FLOOD_SLEEP_THRESHOLD controls how long the server waits quietly before reporting a FloodWait.

### What are the alternatives to Telegram MCP?

| Server | What it does | Tools | Runs on | Licence | Stars |
| --- | --- | --- | --- | --- | --- |
| [Telegram MCP](https://mcpshelf.co/servers/telegram) | Your own Telegram account, as an assistant can use it: chats, search, sending and groups. | 147 | Your computer | Apache-2.0 | 1.9K |
| [Slack MCP Server](https://mcpshelf.co/servers/slack) | Read and search your Slack channels, threads and DMs, with posting off by default. | 22 | Your computer | MIT | 1.9K |
| [iMCP](https://mcpshelf.co/servers/imcp) | A Mac menu bar app that shares Calendar, Messages, Notes, Reminders and more with your assistant. | 56 | Your computer | MIT | 1.9K |
| [OpenLore](https://mcpshelf.co/servers/openlore) | One folder of Markdown that every agent on a team can read, with access rules. | 2 | Hosted | Apache-2.0 | 1.7K |
| [Minutes](https://mcpshelf.co/servers/minutes) | Records and transcribes meetings on your device, then lets an assistant search them. | 34 | Your computer | MIT | 1.6K |
| [Garmin Connect MCP](https://mcpshelf.co/servers/garmin) | Ask an assistant about your Garmin activities, sleep, recovery and training. | 20 | Your computer | MIT | 1.4K |

### Telegram MCP FAQ

#### How do I set up Telegram MCP?

Clone chigwell/telegram-mcp and run uv sync, create an app at my.telegram.org/apps for an API ID and hash, run uv run session_string_generator.py to sign in, then add the config with those three values.

#### How do I add Telegram MCP to Claude Code?

From the clone, run claude mcp add telegram with -e flags for TELEGRAM_API_ID, TELEGRAM_API_HASH and TELEGRAM_SESSION_STRING, then -- uv --directory /full/path/to/telegram-mcp run main.py.

#### Is Telegram MCP a bot?

No. It signs in as your own user account through Telethon, so it can do what you can do in the Telegram app, including reading private chats.

#### Can I install Telegram MCP with pip or uvx?

No. The telegram-mcp names on PyPI and npm belong to other projects, and passing your Telegram credentials to them could expose your account. Run it from the repository.

#### Is Telegram MCP safe?

Start with TELEGRAM_EXPOSED_TOOLS=read-only, add back only the tools you need, and set TELEGRAM_ALLOWED_CHAT_IDS to limit which chats it can reach. Keep the session string as secret as a password.

#### Can Telegram MCP get my account banned?

Telegram can limit accounts that behave like spam. Use it for your own chats and replies, not for mass messaging, and slow down if replies start lagging after many requests.

#### Is Telegram MCP free?

Yes, the code is Apache 2.0 and costs nothing to run. Voice transcription through Groq or OpenAI is billed by them; the local Whisper option is free.

#### Why does Telegram MCP say the session is not authorized?

The session string expired or was revoked, for example after logging out other sessions. Run session_string_generator.py again and update TELEGRAM_SESSION_STRING.

Full docs on GitHub: https://github.com/chigwell/telegram-mcp

## Notes for agents

Fetch these instead of parsing the HTML page:

- llms.txt: https://mcpshelf.co/llms.txt
- llms-full.txt: https://mcpshelf.co/llms-full.txt
- ai.txt: https://mcpshelf.co/ai.txt
- Full catalog (.md): https://mcpshelf.co/catalog.md
- API spec: https://mcpshelf.co/openapi.json
- MCP server: https://mcpshelf.co/mcp
- MCP manifest: https://mcpshelf.co/.well-known/mcp.json
- Developer docs: https://mcpshelf.co/developers

MCP endpoint (Streamable HTTP, no key): https://mcpshelf.co/mcp. REST API: https://mcpshelf.co/api/v1.

