@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/LICENSE +21 -0
- package/README.md +181 -0
- package/dist/client.d.ts +42 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +151 -0
- package/dist/client.js.map +1 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +170 -0
- package/dist/index.js.map +1 -0
- package/dist/server.d.ts +13 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +146 -0
- package/dist/server.js.map +1 -0
- package/dist/tools.d.ts +10 -0
- package/dist/tools.d.ts.map +1 -0
- package/dist/tools.js +531 -0
- package/dist/tools.js.map +1 -0
- package/dist/types.d.ts +78 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/dist/worker.d.ts +10 -0
- package/dist/worker.d.ts.map +1 -0
- package/dist/worker.js +70 -0
- package/dist/worker.js.map +1 -0
- package/package.json +53 -0
package/dist/worker.js
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cloudflare Worker entry — Stateless Streamable HTTP MCP
|
|
3
|
+
*
|
|
4
|
+
* Each request creates a new transport + server (CF Workers can't share memory between isolates).
|
|
5
|
+
*/
|
|
6
|
+
import { WebStandardStreamableHTTPServerTransport, } from '@modelcontextprotocol/sdk/server/webStandardStreamableHttp.js';
|
|
7
|
+
import { createServer } from './server.js';
|
|
8
|
+
import { TOOLS } from './tools.js';
|
|
9
|
+
function corsHeaders() {
|
|
10
|
+
return {
|
|
11
|
+
'Access-Control-Allow-Origin': '*',
|
|
12
|
+
'Access-Control-Allow-Methods': 'GET, POST, DELETE, OPTIONS',
|
|
13
|
+
'Access-Control-Allow-Headers': 'Content-Type, mcp-session-id, Accept, mcp-protocol-version',
|
|
14
|
+
'Access-Control-Expose-Headers': 'mcp-session-id',
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
function addCors(response) {
|
|
18
|
+
const headers = new Headers(response.headers);
|
|
19
|
+
for (const [key, value] of Object.entries(corsHeaders())) {
|
|
20
|
+
headers.set(key, value);
|
|
21
|
+
}
|
|
22
|
+
return new Response(response.body, {
|
|
23
|
+
status: response.status,
|
|
24
|
+
statusText: response.statusText,
|
|
25
|
+
headers,
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
export default {
|
|
29
|
+
async fetch(request) {
|
|
30
|
+
const url = new URL(request.url);
|
|
31
|
+
// CORS preflight
|
|
32
|
+
if (request.method === 'OPTIONS') {
|
|
33
|
+
return new Response(null, { status: 204, headers: corsHeaders() });
|
|
34
|
+
}
|
|
35
|
+
// Health check
|
|
36
|
+
if (url.pathname === '/' && request.method === 'GET') {
|
|
37
|
+
return addCors(Response.json({
|
|
38
|
+
name: 'telegram-bot-mcp',
|
|
39
|
+
version: '1.0.0',
|
|
40
|
+
status: 'ok',
|
|
41
|
+
tools: TOOLS.length,
|
|
42
|
+
transport: 'streamable-http',
|
|
43
|
+
endpoints: { mcp: '/mcp' },
|
|
44
|
+
}));
|
|
45
|
+
}
|
|
46
|
+
// Only /mcp endpoint
|
|
47
|
+
if (url.pathname !== '/mcp') {
|
|
48
|
+
return addCors(new Response('Not Found', { status: 404 }));
|
|
49
|
+
}
|
|
50
|
+
if (request.method !== 'POST') {
|
|
51
|
+
return addCors(Response.json({ jsonrpc: '2.0', error: { code: -32000, message: 'Method not allowed. Use POST.' }, id: null }, { status: 405 }));
|
|
52
|
+
}
|
|
53
|
+
const botToken = url.searchParams.get('TELEGRAM_BOT_TOKEN') || '';
|
|
54
|
+
const config = botToken ? { botToken } : undefined;
|
|
55
|
+
try {
|
|
56
|
+
const transport = new WebStandardStreamableHTTPServerTransport({
|
|
57
|
+
sessionIdGenerator: undefined,
|
|
58
|
+
enableJsonResponse: true,
|
|
59
|
+
});
|
|
60
|
+
const server = createServer(config);
|
|
61
|
+
await server.connect(transport);
|
|
62
|
+
const response = await transport.handleRequest(request);
|
|
63
|
+
return addCors(response);
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
return addCors(Response.json({ jsonrpc: '2.0', error: { code: -32603, message: error.message || 'Internal server error' }, id: null }, { status: 500 }));
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
};
|
|
70
|
+
//# sourceMappingURL=worker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@node2flow/telegram-bot-mcp",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "MCP server for Telegram Bot API — send messages, manage chats, webhooks, files, and more through 27 tools",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"telegram",
|
|
7
|
+
"bot",
|
|
8
|
+
"mcp",
|
|
9
|
+
"model-context-protocol",
|
|
10
|
+
"ai",
|
|
11
|
+
"claude",
|
|
12
|
+
"cursor",
|
|
13
|
+
"chatbot",
|
|
14
|
+
"messaging"
|
|
15
|
+
],
|
|
16
|
+
"author": "Node2Flow <node2flow@gmail.com>",
|
|
17
|
+
"license": "MIT",
|
|
18
|
+
"homepage": "https://github.com/node2flow-th/telegram-bot-mcp-community",
|
|
19
|
+
"repository": {
|
|
20
|
+
"type": "git",
|
|
21
|
+
"url": "https://github.com/node2flow-th/telegram-bot-mcp-community.git"
|
|
22
|
+
},
|
|
23
|
+
"type": "module",
|
|
24
|
+
"main": "dist/index.js",
|
|
25
|
+
"types": "dist/index.d.ts",
|
|
26
|
+
"bin": {
|
|
27
|
+
"telegram-bot-mcp": "dist/index.js"
|
|
28
|
+
},
|
|
29
|
+
"files": [
|
|
30
|
+
"dist",
|
|
31
|
+
"LICENSE",
|
|
32
|
+
"README.md"
|
|
33
|
+
],
|
|
34
|
+
"scripts": {
|
|
35
|
+
"build": "tsc",
|
|
36
|
+
"start": "node dist/index.js",
|
|
37
|
+
"dev": "tsx src/index.ts",
|
|
38
|
+
"deploy": "wrangler deploy",
|
|
39
|
+
"prepublishOnly": "npm run build"
|
|
40
|
+
},
|
|
41
|
+
"dependencies": {
|
|
42
|
+
"@modelcontextprotocol/sdk": "^1.26.0"
|
|
43
|
+
},
|
|
44
|
+
"devDependencies": {
|
|
45
|
+
"@types/node": "^22.0.0",
|
|
46
|
+
"tsx": "^4.19.0",
|
|
47
|
+
"typescript": "^5.7.0",
|
|
48
|
+
"wrangler": "^4.0.0"
|
|
49
|
+
},
|
|
50
|
+
"engines": {
|
|
51
|
+
"node": ">=18"
|
|
52
|
+
}
|
|
53
|
+
}
|