TgWitness / ডকুমেন্টেশন

তথ্যসূত্র / আর্কাইভ ও ইন্টিগ্রেশনসমূহ

শুধুমাত্র-পঠন MCP

নির্বাচিত ওয়ার্কস্পেস এবং চ্যাটে মেয়াদোত্তীর্ণ, প্রত্যাহারযোগ্য অ্যাক্সেস সহ একটি MCP ক্লায়েন্ট সংযুক্ত করুন।

একটি অ্যানালিস্ট ক্লায়েন্টকে নির্বাচিত ওয়ার্কস্পেস এবং চ্যাটগুলোর সাথে সংযুক্ত করুন। TgWitness প্যানেল প্রসেসের /mcp-এ Streamable HTTP সার্ভ করে। প্রতিটি সংযোগের নিজস্ব টোকেন, মেয়াদ শেষ হওয়ার সময় এবং অনুমোদিত টুলস থাকে। MCP কোনো Telegram মেসেজ পাঠাতে, সেটিংস পরিবর্তন করতে বা স্বাক্ষরিত জার্নাল মডিফাই করতে পারে না।

ওয়ার্কফ্লো গাইড · উইকি

ইনস্টল এবং যাচাই#

প্যানেলটি যে Python এনভায়রনমেন্টে চলে সেটি ব্যবহার করুন। সোর্স চেকআউট থেকে:

# Windows PowerShell
& .\.venv\Scripts\python.exe -m pip install -c deploy/constraints-mcp.txt -e '.[mcp]'
& .\.venv\Scripts\python.exe start.py --check
# Linux / macOS
.venv/bin/python -m pip install -c deploy/constraints-mcp.txt -e '.[mcp]'
.venv/bin/python start.py --check

ইনস্টলেশনের পর প্যানেলটি তার স্বাভাবিক ডেটা ডিরেক্টরি এবং লঞ্চ আর্গুমেন্টসহ রিস্টার্ট করুন। রেডিনেস স্ট্যাটাসে [PASS] mcp: streamable-http available থাকা উচিত। Integrations → MCP রানটাইম স্ট্যাটাস এবং সেই সার্ভারের প্রকৃত Python এক্সিকিউটেবল ব্যবহার করে একটি ইনস্টলেশন কমান্ড দেখায়। Re-check পেজ রিলোড না করেই এই স্ট্যাটাস রিফ্রেশ করে; এটি কোনো প্যাকেজ ইনস্টল করে না বা সার্ভার রিস্টার্ট করে না।

MCP এক্সট্রা অফিশিয়াল MCP Python SDK ব্যবহার করে। deploy/constraints-mcp.txt পরীক্ষিত SDK এবং ডিপেন্ডেন্সিগুলো পিন করে রাখে। এই ফিচারগুলোর জন্য বর্তমান সোর্স কোড প্রয়োজন; 0.7.0 পোর্টেবল প্রিভিউটি এগুলোর আগের সংস্করণ।

একটি সংযোগ তৈরি করুন#

  1. একটি লেবেল দিন এবং ক্লায়েন্ট যেসব ওয়ার্কস্পেস ও চ্যাট পড়তে পারবে সেগুলো নির্বাচন করুন।
  2. টুলগুলো আলাদাভাবে নির্বাচন করুন অথবা একটি প্রিসেট ব্যবহার করুন। শুধুমাত্র ইমপ্লিমেন্ট করা টুলগুলোই অফার করা হয়।
  3. ১, ৭, ৩০ বা ৯০ দিন, অথবা এক মিনিট থেকে ৯০ দিনের মধ্যে একটি কাস্টম মেয়াদ নির্বাচন করুন।
  4. Create connection চাপুন। ক্লায়েন্ট কনফিগারেশনের পাশে টোকেনটি একবারের জন্য দেখা যাবে।
  5. টোকেন এবং কনফিগ কপি করুন, তারপর Check connection রান করুন। এটি MCP ইনিশিয়ালাইজ করে এবং অনুমোদিত টুলগুলোর তালিকা দেখায়; এতে কোনো মেসেজ পড়া হয় না। ফলাফলে প্রোটোকল ভার্সন, টুলগুলোর নাম, সংখ্যা এবং অতিবাহিত সময় দেখানো হয়।
  6. ক্রেডেনশিয়াল সেভ করা হয়ে গেলে Done চাপুন। পোলিং করার সময় ফর্ম এবং একবার দেখানো কার্ডটি অক্ষুণ্ণ থাকে। প্যানেল লক করলে প্রদর্শিত সিক্রেটগুলো মুছে যায়।

তালিকায় সাম্প্রতিক ব্যবহার, সর্বশেষ ব্যবহৃত টুল, অ্যাড্রেস এবং শেষ এক মিনিটের রিকোয়েস্ট সংখ্যা দেখানো হয়। Revoke অ্যাক্সেস বন্ধ করে দেয়। Rotate token পুরনো ক্রেডেনশিয়াল বাতিল করে এবং একই স্কোপ, টুল ও মেয়াদসহ একটি নতুন টোকেন ইস্যু করে; নতুন টোকেনটি একবারই কপি করে রাখুন। প্যানেল লগইন টোকেন এবং Telegram ক্রেডেনশিয়াল MCP টোকেন হিসেবে কাজ করে না।

আপনার ক্লায়েন্ট সংযুক্ত করুন#

প্যানেলে ক্লায়েন্ট নির্বাচন করুন এবং জেনারেট হওয়া কনফিগারেশনটি কপি করুন। কনফিগগুলোতে সিক্রেট রেফারেন্স বা স্পষ্ট প্লেসহোল্ডার ব্যবহার করা হয়; টোকেনটি আলাদাভাবে কপি করতে হয়।

ক্লায়েন্ট কনফিগারেশন সংযোগ
Claude Code .mcp.json HTTP, type: "http", বেয়ারার হেডার
Claude Desktop claude_desktop_config.json লোকাল stdio ব্রিজ
Cursor .cursor/mcp.json এনভায়রনমেন্ট-ভেরিয়েবল হেডারসহ HTTP
VS Code Local .vscode/mcp.json পাসওয়ার্ড promptString ইনপুটসহ HTTP
Windsurf mcp_config.json বেয়ারার-হেডার প্লেসহোল্ডারসহ HTTP
অন্যান্য ক্লায়েন্ট URL এবং Authorization হেডার Streamable HTTP

TgWitness কোনো OAuth ডিসকভারি ছাড়াই বেয়ারার টোকেন ব্যবহার করে। যেসব ক্লায়েন্টের রিমোট কানেক্টরের জন্য OAuth প্রয়োজন হয়, সেগুলোর ক্ষেত্রে লোকাল stdio ব্রিজ ব্যবহার করুন। VS Code-এর ক্ষেত্রে, ইনপুট ভেরিয়েবলগুলো Local হারনেসে প্রযোজ্য হয় এবং Copilot সেশনে ফরোয়ার্ড করা হয় না। কনফিগারেশন রেফারেন্স: Claude Code, Cursor, VS Code।

লোকাল ব্রিজের জন্য আদর্শ এন্ট্রি পয়েন্ট হলো:

python -m tgwitness.mcp_server --url https://your-panel.example/mcp

ক্লায়েন্টের যে লোকাল Python-এ MCP এক্সট্রা ইনস্টল করা আছে সেটি ব্যবহার করুন। এর সুরক্ষিত এনভায়রনমেন্টে TGWITNESS_MCP_TOKEN সেট করুন। কমান্ড আর্গুমেন্ট এবং URL থেকে ক্রেডেনশিয়াল দূরে রাখুন। tgwitness-mcp একই এন্ট্রি পয়েন্ট হিসেবে কাজ করে। পুরনো tgwitness.mcp_bridge মডিউল এবং TGWITNESS_ARCHIVE_TOKEN নামটি একটি সতর্কবার্তাসহ কম্প্যাটিবিলিটি পাথ হিসেবে রয়ে গেছে; নতুন কনফিগারেশনে mcp_server এবং TGWITNESS_MCP_TOKEN ব্যবহৃত হয়।

Cloudflare Tunnel#

প্যানেলের /mcp রাউট ফরোয়ার্ড করুন এবং বেয়ারার হেডারটি অক্ষুণ্ণ রাখুন। অ্যাডমিনিস্ট্রেটর হিসেবে MCP সেটিংস ওপেন করলে তা এই রানের জন্য প্যানেলের বর্তমান অরিজিনকে নিবন্ধিত করে। রিস্টার্টের পরপরই একটি স্থায়ী অ্যাড্রেস পাওয়ার জন্য, প্যানেল চালু করার আগে প্যানেলের HTTPS অরিজিন দিয়ে TGWITNESS_PUBLIC_URL কনফিগার করুন। যেকোনো সাধারণ Host এবং ফরোয়ার্ড করা হেডার কোনো ট্রাস্টেড অ্যাড্রেস নিবন্ধন করে না। Host এবং Origin চেকগুলো অপ্রাসঙ্গিক ব্রাউজার অরিজিন প্রত্যাখ্যান করে। রেসপন্সগুলোতে Cache-Control: no-store ব্যবহৃত হয়; অথরাইজেশন ভ্যালু কখনোই লগ করা হয় না।

একটি *.trycloudflare.com অ্যাড্রেস অস্থায়ী হয়। টানেল রিস্টার্টের ফলে হোস্টনেম পরিবর্তিত হলে, কনফিগার করা পাবলিক URL এবং প্রতিটি ক্লায়েন্টের MCP URL আপডেট করুন। সেভ করা ক্লায়েন্ট কনফিগারেশনের জন্য একটি স্থায়ী হোস্টনেম ব্যবহার করুন।

টুলস এবং সীমাবদ্ধতা#

টুল যা পড়ে
list_workspaces অনুমোদিত ওয়ার্কস্পেসসমূহ
list_chats অনুমোদিত চ্যাটসমূহ
search_messages নির্বাচিত সময়ের মধ্যে সেভ করা মেসেজ টেক্সট
get_message_versions ক্যাপচার করা ভার্সন এবং ডিলিট সংক্রান্ত পর্যবেক্ষণ
get_message_context কাছাকাছি ক্যাপচার করা মেসেজ আইডিগুলো
get_journal_event সোর্স রেফারেন্সসহ একটি স্যানিটাইজড রেকর্ড
get_capture_status কালেকশন স্টেট এবং অনুমোদিত কভারেজ রেকর্ডসমূহ

tools/list শুধুমাত্র সেই সংযোগে অনুমোদিত টুলগুলোই রিটার্ন করে। অন্য টুলগুলোতে কল করা হলে তা প্রত্যাখ্যান করা হয়। এই বিল্ডে গ্রুপ-কনটেক্সট, এপিসোড, টার্মিনোলজি এবং রিপ্লাই-চেইন টুলগুলো অফার করা হয়নি; এগুলোর জন্য আলাদা কনটেক্সট-প্যাক ব্যাকএন্ড এতে অন্তর্ভুক্ত নেই।

প্রতিটি রিড অপারেশনে টোকেন, টুল এবং ওয়ার্কস্পেস/চ্যাট স্কোপ যাচাই করা হয়, এমনকি ডেটাবেসের কাজ শেষ হওয়ার পরেও। এর সীমাগুলো হলো প্রতি মিনিটে ৬০টি রিকোয়েস্ট, প্রতি পেজে ৫০টি রেকর্ড, প্রতি ফলাফলে 64 KiB এবং আট-সেকেন্ডের আর্কাইভ ডেডলাইন। কোনো MCP কল টাইম-আউট হলে তা একটি টুল এরর রিটার্ন করে এবং আরও ছোট সময়সীমা বা কম লিমিট ব্যবহারের অনুরোধ জানায়।

মেসেজের ফলাফলে untrusted_content: true, ওয়ার্কস্পেস/চ্যাট/মেসেজ আইডি, ইভেন্ট সিকোয়েন্স, সেভ করা হ্যাশ এবং একটি প্যানেল লিংক থাকে। কাঁচা (Raw) Telegram অবজেক্ট, অ্যাক্সেস হ্যাশ, সেশন এবং কী (keys) বাদ দেওয়া হয়। টেক্সট সংক্ষিপ্ত (truncation) করা হলে তা চিহ্নিত করা থাকে। এডিট, ডিলিট নোটিশ এবং missing_on_recheck হলো আলাদা আলাদা পর্যবেক্ষণ। রেকর্ড অনুপস্থিত থাকা মানে এই নয় যে ইভেন্টটি কখনোই ঘটেনি।

ক্যাপচার করা মেসেজের ভেতরের নির্দেশাবলীকে সর্বদা প্রমাণ (evidence) হিসেবে গণ্য করুন, কখনোই ক্লায়েন্টের নির্দেশ হিসেবে নয়। শুধুমাত্র-পড়ার (Read-only) অ্যাক্সেস আর্কাইভের পরিবর্তন রোধ করে; তবে ক্লায়েন্টকে যা পড়ার অনুমতি দেওয়া হয়েছে সেই কন্টেন্ট সে সংরক্ষণ করে রাখতে পারে। হ্যাশগুলো সেভ করা রেকর্ড শনাক্ত করে এবং ইন্টিগ্রিটি যাচাইয়ে সহায়তা করে; তবে সেগুলো Telegram-এর প্রকৃত প্রেরক বা সম্পূর্ণ ক্যাপচার প্রমাণ করে না।