
Yowes একটি পোর্টেবল Python অ্যাপ্লিকেশন, যা শিক্ষক-সম্পর্কিত নথি উচ্চ-রেজোলিউশনের PNG ফাইল হিসেবে তৈরি করে। এর হেডলেস Model Context Protocol (MCP) সার্ভার stdio-এর মাধ্যমে নথি তৈরি করার সুবিধা দেয়, ফলে এটি Claude Desktop, Hermes এবং অন্যান্য MCP ক্লায়েন্টের মতো এজেন্ট রানটাইম থেকে ব্যবহার করা যায়।
প্রকল্পটি ১৩টি দেশ, দেশভিত্তিক নথির ধরন, প্যাকেজের সঙ্গে থাকা ফন্ট ও প্রোফাইল ছবি এবং ঠিকানা ও যোগাযোগের তথ্যসহ স্কুলের ডেটা সমর্থন করে। এই টিউটোরিয়ালে ইনস্টলেশন, সার্ভার সেটআপ, MCP টুল ব্যবহার, Python ইন্টিগ্রেশন এবং সম্প্রসারণের বিকল্পগুলো দেখানো হয়েছে।
Yowes কী করে
Yowes একজন শিক্ষকের প্রোফাইল এবং নির্বাচিত স্কুলের তথ্য থেকে স্থানীয়করণ করা শিক্ষক-সংক্রান্ত নথি তৈরি করে। দেশভেদে পাওয়া আউটপুটের মধ্যে রয়েছে চাকরির চিঠি, শিক্ষক পরিচয়পত্র, শিক্ষকতার লাইসেন্স, বেতন স্লিপ, স্কুল পরিচয়পত্র, চুক্তিপত্র, সনদপত্র এবং অন্যান্য নথির ধরন।
তৈরি করা ফাইলগুলো PNG ছবি হিসেবে সংরক্ষিত হয়। অ্যাপ্লিকেশনটির প্যাকেজে DejaVu Sans ফন্ট এবং প্রোফাইল ছবি অন্তর্ভুক্ত রয়েছে, তাই রানটাইমে এটি সিস্টেম ফন্ট বা বাহ্যিক ছবির ওপর নির্ভর করে না।
সমর্থিত দেশ
উপলভ্য দেশের কোড এবং নথির ধরনগুলো হলো:
- যুক্তরাজ্য: চাকরির চিঠি, শিক্ষক পরিচয়পত্র এবং শিক্ষকতার লাইসেন্স।
- যুক্তরাষ্ট্র: চাকরির চিঠি, শিক্ষক পরিচয়পত্র এবং শিক্ষকতার লাইসেন্স।
- ফ্রান্স: কর্মস্থলে যোগদানের বিবৃতি, iProf-এর স্ক্রিনশট, বিধিমালার উদ্ধৃতি এবং শিক্ষকতার সনদ।
- নেদারল্যান্ডস: চাকরির চুক্তিপত্র, শিক্ষক নিবন্ধন, DUO ঘোষণাপত্র এবং স্কুল পরিচয়পত্র।
- ইন্দোনেশিয়া: বেতন স্লিপ, শিক্ষকতার অভিজ্ঞতার চিঠি, NUPTK কার্ড এবং নিয়োগপত্র।
- অস্ট্রেলিয়া: স্বাক্ষরিত স্কুলের চিঠি, স্কুল পরিচয়পত্র এবং শিক্ষকতার লাইসেন্স।
- কানাডা: OCT কার্ড, শিক্ষকতার লাইসেন্স এবং স্বাক্ষরিত স্কুলের চিঠি।
- স্পেন: শিক্ষক পরিচয়পত্র, স্বাক্ষরিত স্কুলের চিঠি এবং চাকরির চুক্তিপত্র।
- আর্জেন্টিনা: বেতন স্লিপ, চাকরির সনদ এবং স্বাক্ষরিত স্কুলের চিঠি।
- স্লোভাকিয়া: বেতন স্লিপ, চাকরির চিঠি এবং স্বাক্ষরিত স্কুলের চিঠি।
- মেক্সিকো: শিক্ষক পরিচয়পত্র, স্বাক্ষরিত স্কুলের চিঠি এবং চাকরির সনদ।
- ফিলিপাইন: শিক্ষক পরিচয়পত্র, চাকরির সনদ এবং শিক্ষকতার লাইসেন্স।
- থাইল্যান্ড: বেতন স্লিপ এবং চাকরির চিঠি।
এই নথিগুলো কেবল বৈধ পরীক্ষা, প্রদর্শনী বা অনুমোদিত প্রশাসনিক কার্যপ্রবাহের জন্য ব্যবহার করুন। সংশ্লিষ্ট প্রতিষ্ঠান নথি জারি ও যাচাই না করা পর্যন্ত তৈরি করা নথিগুলোকে সরকারি স্বীকৃতিপত্র হিসেবে উপস্থাপন করা উচিত নয়।
প্রয়োজনীয়তা
Yowes-এর জন্য Python 3.10 বা পরবর্তী সংস্করণ প্রয়োজন। এর প্রধান নির্ভরতা Pillow এবং mcp প্যাকেজ ইনস্টল করার সময় স্বয়ংক্রিয়ভাবে ইনস্টল হয়।
প্রকল্পটি Windows, Linux এবং macOS সমর্থন করে। ফন্ট ও ছবি প্যাকেজের সঙ্গে থাকায় প্যাকেজ করা অ্যাপ্লিকেশনটি পোর্টেবল হিসেবে তৈরি করা হয়েছে।
Yowes ইনস্টল করুন
wheel থেকে ইনস্টল
dist ডিরেক্টরিতে তৈরি করা wheel থাকলে এটি দিয়ে ইনস্টল করুন:

pip install dist/yowes_doc_generator-0.1.0-py3-none-any.whlসোর্স থেকে ইনস্টল
ডেভেলপমেন্ট বা স্থানীয় পরীক্ষার জন্য প্রকল্পটি editable মোডে ইনস্টল করুন:
pip install -e .uv দিয়ে চালান
uv-এর মাধ্যমেও প্রকল্পটি চালু করতে পারেন:
uvx --from . yowes-mcpপ্যাকেজের সঙ্গে থাকা সম্পদ যাচাই
ইনস্টলেশনের পর প্যাকেজের সঙ্গে থাকা ফন্ট ও প্রোফাইল-ছবির সহায়ক ফাংশনগুলো সঠিকভাবে কাজ করছে কি না পরীক্ষা করুন:
python -c "from countries.utils import load_font, get_profile_photo; print(load_font(30).getname()); print(get_profile_photo((280,340), person_id='x', gender='Male') is not None)"সফলভাবে চালালে DejaVu Sans ফন্টের তথ্য দেখাবে এবং প্যাকেজের সঙ্গে থাকা প্রোফাইল ছবির জন্য True ফেরত দেবে।
MCP সার্ভারের সঙ্গে সংযোগ করুন
Yowes stdio ব্যবহার করে MCP-এর মাধ্যমে যোগাযোগ করে। ইনস্টল করা কমান্ডটি এভাবে চালু করুন:
yowes-mcpসোর্স ট্রি থেকে সরাসরি কাজ করার সময় বিকল্প হিসেবে চালান:

python mcp_server.pyপ্রক্রিয়াটি স্ট্যান্ডার্ড ইনপুটে MCP অনুরোধের অপেক্ষা করে এবং স্ট্যান্ডার্ড আউটপুটে উত্তর লিখে। এটি ইন্টার্যাক্টিভ টার্মিনাল অ্যাপ্লিকেশন হিসেবে কাজ করার জন্য তৈরি নয়।
MCP ক্লায়েন্টে Yowes নিবন্ধন
আপনার MCP-সামঞ্জস্যপূর্ণ এজেন্ট রানটাইমকে এক্সিকিউটেবলের দিকে নির্দেশ করুন:
{
"mcpServers": {
"yowes": {
"command": "yowes-mcp",
"args": []
}
}
}আপনার PATH-এ কমান্ডটি উপলভ্য না থাকলে Python-এর সম্পূর্ণ পাথ ব্যবহার করে সার্ভার মডিউল চালু করুন:
{
"mcpServers": {
"yowes": {
"command": "/path/to/python",
"args": ["-m", "mcp_server"]
}
}
}উপলভ্য MCP টুলগুলো দেখুন
সার্ভারটি তিনটি প্রধান টুল সরবরাহ করে:
list_countries_toolদেশের কোড, প্রদর্শন নাম এবং নথির ধরন তালিকাভুক্ত করে।list_schools(country)নির্বাচিত দেশের স্কুলগুলোর তালিকা দেখায়।generate_documents(...)এক বা একাধিক নথি রেন্ডার করে এবং সেগুলোর ফাইল পাথ ফেরত দেয়।
দেশের তালিকা দেখুন
কোনো আর্গুমেন্ট ছাড়াই list_countries_tool কল করুন। উত্তরে প্রতিটি দেশের জন্য একটি করে ফলাফল আইটেম থাকে, যেখানে code, name এবং document_types-এর মতো মান থাকে। তালিকাটি একাধিক MCP কনটেন্ট আইটেমে বিভক্ত হওয়ায় প্রতিটি দেশ দেখতে ফেরত আসা content সংগ্রহের ওপর iterate করুন।
স্কুলের তালিকা দেখুন
list_schools-এ একটি দেশের কোড পাঠান:
{
"country": "us"
}
প্রতিটি স্কুলের ফলাফলে এর নাম, ঠিকানা, শহর, পোস্টকোড, রাজ্য, ফোন নম্বর এবং স্থানীয় শিক্ষা কর্তৃপক্ষের তথ্য থাকতে পারে। নথি তৈরি করার সময় এই টুলের দেওয়া সঠিক বা আংশিক স্কুলের নাম ব্যবহার করুন।
নথি তৈরি করুন
generate_documents টুলটির জন্য দেশ, শিক্ষকের নাম, স্কুল, পদ এবং জন্মতারিখ প্রয়োজন। চাইলে লিঙ্গ, নথির ধরন এবং আউটপুট ডিরেক্টরি নির্বাচন করতে পারেন।
অনুরোধের উদাহরণ
{
"country": "us",
"first_name": "John",
"last_name": "Smith",
"school_name": "Valley High",
"position": "Head of Science Department",
"date_of_birth": "12/05/1988",
"gender": "Male",
"document_types": ["employment_letter", "teacher_id"],
"output_dir": "output"
}gender-এর মান Random, Male অথবা Female হতে পারে। এটি বান্ডেল করা প্রোফাইল-ছবির পুল থেকে ছবি বাছাই নিয়ন্ত্রণ করে। document_types বাদ দিলে, নির্বাচিত দেশের জন্য উপলভ্য সব ধরনের নথি Yowes তৈরি করে। ডিফল্ট আউটপুট ডিরেক্টরি হলো output/।
সফল প্রতিক্রিয়ায় নির্বাচিত দেশ ও স্কুল, নথির ধরন, তৈরি করা ফাইলের পথ, সংখ্যা এবং আউটপুট ডিরেক্টরি থাকে। ফেরত দেওয়া PNG-এর পথগুলো পরম পথ।
উদাহরণস্বরূপ, তৈরি করা US নথিগুলো নিচের নমুনা আউটপুটগুলোর মতো হতে পারে:


Python থেকে Yowes ব্যবহার
অ্যাপ্লিকেশনগুলো MCP সার্ভার চালু করে Python MCP ক্লায়েন্টের মাধ্যমে এর টুলগুলো কল করতে পারে। প্রয়োজনে ক্লায়েন্ট নির্ভরতা ইনস্টল করুন:
pip install mcpনিচের উদাহরণটি একটি stdio সেশন চালু করে, দেশের তালিকা দেখায় এবং US-এর নথি তৈরি করে:
import asyncio
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client
async def main():
params = StdioServerParameters(command="yowes-mcp", args=[])
async with stdio_client(params) as (read, write):
async with ClientSession(read, write) as session:
await session.initialize()
countries = await session.call_tool(
"list_countries_tool", {}
)
for item in countries.content:
print(item.text)
result = await session.call_tool(
"generate_documents",
{
"country": "us",
"first_name": "John",
"last_name": "Smith",
"school_name": "Valley High",
"position": "Head of Science Department",
"date_of_birth": "12/05/1988",
"gender": "Male"
}
)
print(result.content[0].text)
asyncio.run(main())তালিকার প্রতিক্রিয়াগুলো পৃথক কনটেন্ট আইটেমে ভাগ করা থাকে। তাই পুরো তালিকা একটি প্রতিক্রিয়া মানে আছে ধরে না নিয়ে countries.content-এর প্রতিটি আইটেম পরীক্ষা করুন।
একটি ব্যবহারিক এজেন্ট কর্মপ্রবাহ

- বৈধ দেশের কোড এবং নথির ধরন খুঁজে পেতে
list_countries_toolকল করুন। - নির্বাচিত দেশের কোড দিয়ে
list_schoolsকল করুন। - ফেরত দেওয়া তথ্য থেকে একটি স্কুল বেছে নিন।
- অনুমোদিত শিক্ষক ও স্কুলের তথ্য দিয়ে
generate_documentsকল করুন। - ফেরত দেওয়া PNG-এর পথ পড়ুন এবং আপনার অ্যাপ্লিকেশনে ফাইলগুলো প্রক্রিয়া করুন।
এই ক্রম অনুসরণ করলে দেশের কোড, স্কুলের নাম বা নথির ধরনের শনাক্তকারী অনুমান করতে হয় না।
উন্নত টিপস
শুধু প্রয়োজনীয় আউটপুট নির্বাচন করুন
কোনো দেশের উপলভ্য নথির একটি অংশ প্রয়োজন হলে document_types অ্যারে পাঠান। এতে অপ্রয়োজনীয় রেন্ডারিং কমে এবং আউটপুট ডিরেক্টরিতে শুধু অনুরোধ করা ফাইলগুলো থাকে।
একটি স্থিতিশীল প্রোফাইল ছবি বেছে নিন
একই ব্যক্তির জন্য প্রোফাইল ছবি সামঞ্জস্যপূর্ণ রাখতে Yowes হ্যাশ-ভিত্তিক নির্বাচন ব্যবহার করে। স্থিতিশীল ব্যক্তিগত পরিচয় এবং নির্দিষ্ট লিঙ্গ দিলে উপযুক্ত বান্ডেল করা ছবির পুল থেকে পূর্বানুমানযোগ্য ফল পাওয়া যায়।
কাস্টম আউটপুট ডিরেক্টরি ব্যবহার করুন
প্রকল্প, টেস্ট রান বা দেশ অনুযায়ী তৈরি করা ছবিগুলো সাজাতে output_dir নির্ধারণ করুন। আপেক্ষিক পথগুলো MCP সার্ভারের কার্যকরী ডিরেক্টরি থেকে নির্ধারিত হয়।
প্রয়োজনে পুরোনো GUI চালান
প্রকল্পটিতে একটি ঐচ্ছিক CustomTkinter ইন্টারফেসও রয়েছে, যা মূল নথি তৈরির লজিক ব্যবহার করে:
python main_gui.pyWindows-এ রিপোজিটরিতে run.bat ফাইলও রয়েছে, যা TCL_LIBRARY সেট করে। MCP সার্ভারই প্রধান হেডলেস ইন্টারফেস এবং এটি GUI-এর ওপর নির্ভরশীল নয়।
নতুন দেশ দিয়ে Yowes সম্প্রসারণ
কোনো দেশ যোগ করতে countries/<code>/__init__.py তৈরি করুন এবং countries.base.CountryGenerator থেকে উত্তরাধিকারী একটি ক্লাস সংজ্ঞায়িত করুন। প্রয়োজনীয় পদ্ধতিগুলো বাস্তবায়ন করুন:
get_country_nameget_country_codeget_schools_dataget_first_namesget_last_namesget_positionsget_document_typesgenerate_document
countries/__init__.py-তে register_country("<code>", <Name>Generator) দিয়ে জেনারেটরটি নিবন্ধন করুন। নিবন্ধনের পর MCP-এর দেশ ও স্কুলের টুলগুলো স্বয়ংক্রিয়ভাবে এটি খুঁজে পাবে। GUI-তে কাস্টম লেবেল দেখাতে হলে main_gui.py-তে দেশের তালিকা এবং দেশ পরিবর্তনের লজিক আপডেট করুন।
উপসংহার
Yowes দেশভিত্তিক ডকুমেন্ট জেনারেটর, বান্ডেল করা অ্যাসেট এবং একটি MCP stdio সার্ভারকে একটি বহনযোগ্য ওয়ার্কফ্লোতে একত্র করে। Python দিয়ে এটি ইনস্টল করুন, MCP-এর মাধ্যমে উপলভ্য দেশ ও স্কুল খুঁজে দেখুন, নির্বাচিত PNG আউটপুট তৈরি করুন এবং প্রক্রিয়াটি কোনো এজেন্ট বা Python অ্যাপ্লিকেশনে সংযুক্ত করুন। বৈধ ডেভেলপমেন্ট ও পরীক্ষার জন্য, এর দেশ নিবন্ধন প্যাটার্ন নতুন জেনারেটর যোগ করার একটি সুস্পষ্ট পথও প্রদান করে।
