@node2flow/telegram-bot-mcp 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/server.js ADDED
@@ -0,0 +1,146 @@
1
+ /**
2
+ * Shared MCP Server — used by both Node.js (index.ts) and CF Worker (worker.ts)
3
+ */
4
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
5
+ import { TelegramClient } from './client.js';
6
+ import { TOOLS } from './tools.js';
7
+ export function handleToolCall(toolName, args, client) {
8
+ switch (toolName) {
9
+ // ========== Bot Info ==========
10
+ case 'tg_get_me':
11
+ return client.getMe();
12
+ case 'tg_set_my_commands':
13
+ return client.setMyCommands(args.commands, args.scope, args.language_code);
14
+ // ========== Send Messages ==========
15
+ case 'tg_send_message': {
16
+ const { chat_id, text, ...opts } = args;
17
+ return client.sendMessage(chat_id, text, opts);
18
+ }
19
+ case 'tg_send_photo': {
20
+ const { chat_id, photo, ...opts } = args;
21
+ return client.sendPhoto(chat_id, photo, opts);
22
+ }
23
+ case 'tg_send_document': {
24
+ const { chat_id, document, ...opts } = args;
25
+ return client.sendDocument(chat_id, document, opts);
26
+ }
27
+ case 'tg_send_video': {
28
+ const { chat_id, video, ...opts } = args;
29
+ return client.sendVideo(chat_id, video, opts);
30
+ }
31
+ case 'tg_send_audio': {
32
+ const { chat_id, audio, ...opts } = args;
33
+ return client.sendAudio(chat_id, audio, opts);
34
+ }
35
+ case 'tg_send_location': {
36
+ const { chat_id, latitude, longitude, ...opts } = args;
37
+ return client.sendLocation(chat_id, latitude, longitude, opts);
38
+ }
39
+ case 'tg_send_poll': {
40
+ const { chat_id, question, options, ...opts } = args;
41
+ return client.sendPoll(chat_id, question, options, opts);
42
+ }
43
+ case 'tg_send_contact': {
44
+ const { chat_id, phone_number, first_name, ...opts } = args;
45
+ return client.sendContact(chat_id, phone_number, first_name, opts);
46
+ }
47
+ // ========== Edit/Delete Messages ==========
48
+ case 'tg_edit_message_text': {
49
+ const { chat_id, message_id, text, ...opts } = args;
50
+ return client.editMessageText(chat_id, message_id, text, opts);
51
+ }
52
+ case 'tg_edit_message_caption': {
53
+ const { chat_id, message_id, ...opts } = args;
54
+ return client.editMessageCaption(chat_id, message_id, opts);
55
+ }
56
+ case 'tg_delete_message':
57
+ return client.deleteMessage(args.chat_id, args.message_id);
58
+ // ========== Chat Management ==========
59
+ case 'tg_get_chat':
60
+ return client.getChat(args.chat_id);
61
+ case 'tg_get_chat_member_count':
62
+ return client.getChatMemberCount(args.chat_id);
63
+ case 'tg_get_chat_member':
64
+ return client.getChatMember(args.chat_id, args.user_id);
65
+ case 'tg_ban_chat_member': {
66
+ const { chat_id, user_id, ...opts } = args;
67
+ return client.banChatMember(chat_id, user_id, opts);
68
+ }
69
+ case 'tg_unban_chat_member': {
70
+ const { chat_id, user_id, ...opts } = args;
71
+ return client.unbanChatMember(chat_id, user_id, opts);
72
+ }
73
+ // ========== Webhooks ==========
74
+ case 'tg_set_webhook': {
75
+ const { url, ...opts } = args;
76
+ return client.setWebhook(url, opts);
77
+ }
78
+ case 'tg_delete_webhook':
79
+ return client.deleteWebhook(args.drop_pending_updates !== undefined
80
+ ? { drop_pending_updates: args.drop_pending_updates }
81
+ : undefined);
82
+ case 'tg_get_webhook_info':
83
+ return client.getWebhookInfo();
84
+ // ========== Callbacks & Files ==========
85
+ case 'tg_answer_callback_query': {
86
+ const { callback_query_id, ...opts } = args;
87
+ return client.answerCallbackQuery(callback_query_id, opts);
88
+ }
89
+ case 'tg_get_file':
90
+ return client.getFile(args.file_id);
91
+ case 'tg_get_user_profile_photos': {
92
+ const { user_id, ...opts } = args;
93
+ return client.getUserProfilePhotos(user_id, opts);
94
+ }
95
+ // ========== Pins & Invite Links ==========
96
+ case 'tg_pin_chat_message': {
97
+ const { chat_id, message_id, ...opts } = args;
98
+ return client.pinChatMessage(chat_id, message_id, opts);
99
+ }
100
+ case 'tg_unpin_chat_message':
101
+ return client.unpinChatMessage(args.chat_id, args.message_id);
102
+ case 'tg_create_chat_invite_link': {
103
+ const { chat_id, ...opts } = args;
104
+ return client.createChatInviteLink(chat_id, opts);
105
+ }
106
+ default:
107
+ throw new Error(`Unknown tool: ${toolName}`);
108
+ }
109
+ }
110
+ export function createServer(config) {
111
+ const server = new McpServer({
112
+ name: 'telegram-bot-mcp',
113
+ version: '1.0.0',
114
+ });
115
+ let client = null;
116
+ for (const tool of TOOLS) {
117
+ server.tool(tool.name, tool.description, tool.inputSchema, async (args) => {
118
+ const botToken = config?.botToken ||
119
+ args.TELEGRAM_BOT_TOKEN;
120
+ if (!botToken) {
121
+ return {
122
+ content: [{ type: 'text', text: 'Error: TELEGRAM_BOT_TOKEN is required' }],
123
+ isError: true,
124
+ };
125
+ }
126
+ if (!client || config?.botToken !== botToken) {
127
+ client = new TelegramClient({ botToken });
128
+ }
129
+ try {
130
+ const result = await handleToolCall(tool.name, args, client);
131
+ return {
132
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
133
+ isError: false,
134
+ };
135
+ }
136
+ catch (error) {
137
+ return {
138
+ content: [{ type: 'text', text: `Error: ${error instanceof Error ? error.message : String(error)}` }],
139
+ isError: true,
140
+ };
141
+ }
142
+ });
143
+ }
144
+ return server;
145
+ }
146
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Telegram Bot API - MCP Tool Definitions (27 tools)
3
+ */
4
+ export interface MCPToolDefinition {
5
+ name: string;
6
+ description: string;
7
+ inputSchema: Record<string, unknown>;
8
+ }
9
+ export declare const TOOLS: MCPToolDefinition[];
10
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,eAAO,MAAM,KAAK,EAAE,iBAAiB,EA2iBpC,CAAC"}