NikonMCP
NikonMCP هو وحدة كاميرا Nikon لخادم MCP المحلي للتطبيق. إنه يكشف عن حالة الكاميرا المختارة وإجراءات الكاميرا لعميل MCP.
استخدم NikonMCP عندما يحتاج مساعد AI أو أداة مختبر أو عميل قابل للبرمجة أو جهاز تحكم خارجي إلى فحص حالة كاميرا Nikon المتصلة أو طلب مجموعة صغيرة من إجراءات الكاميرا. استخدم واجهة التطبيق العادية عندما تحتاج إلى التحكم اليدوي الكامل أو الإعداد أو تصفح الصور أو مراجعة البيانات الوصفية أو تحرير سير العمل.
قبل أن تبدأ
- افتح خادم MCP.
- قم بتمكين بطاقة وحدة NikonMCP.
- أكد نقطة النهاية ورمز الحامل.
- ابدأ خادم MCP.
- قم بتكوين عميل MCP الخاص بك باستخدام نقطة النهاية والرمز.
- في العميل، قم بإدراج الأدوات وتأكيد ظهور أدوات Nikon.
يجب أن يستخدم العميل قائمة أدوات MCP التي يتلقاها من الخادم كمصدر للحقائق. يمكن أن تكشف إصدارات التطبيق المختلفة عن أدوات NikonMCP مختلفة.
حالة الكاميرا
nikon_camera_get_state يعيد لقطة حالة Nikon الحالية. تعيد الأدوات المتغيرة أيضًا لقطة حالة عند الاقتضاء.
حقول حالة كاميرا NikonMCP الأولى هي:
canCapture: صحيح عندما يسمح التطبيق حاليًا بطلب التقاط بدون AF.statusMessage: نفس رسالة حالة الكاميرا القصيرة المعروضة في التطبيق.canConfigureConnection: صحيح عندما يمكن تغيير إعدادات الاتصال.isConnected: صحيح عندما تكون جسم Nikon المحدد متصلًا.isLiveViewEnabled: صحيح عندما يكون العرض المباشر مفعلًا حاليًا.lastCapturedImagePath: أحدث مسار الصورة المحفوظة النهائية عندما يكون معروفًا.lastCapturedImagePaths: جميع المسارات النهائية من الالتقاط الأخير عندما تم حفظ أكثر من ملف واحد.
lastCapturedImagePath مفيد للعملاء الذين يلتقطون صورة ثم يفحصون ذلك الملف المحفوظ باستخدام أداة صورة أو رؤية منفصلة. بالنسبة لوضع RAW بالإضافة إلى JPEG أو أوضاع متعددة الملفات الأخرى، استخدم lastCapturedImagePaths عندما يحتاج العميل إلى كل ملف محفوظ.
أدوات NikonMCP
nikon_hello
يتحقق من أن NikonMCP مفعل ويمكن الوصول إليه. لا يصل إلى الكاميرا.
nikon_camera_get_state
يقرأ لقطة حالة Nikon الحالية. هذه هي أول مكالمة آمنة بعد توصيل عميل. استخدمها قبل طلب الالتقاط أو العرض المباشر أو التركيز حتى يتمكن العميل من رؤية ما إذا كانت الكاميرا جاهزة.
nikon_camera_toggle_connection
يطلب نفس سلوك تبديل الاتصال مثل التحكم في اتصال الكاميرا في التطبيق. إذا كانت الجسم مفصولًا، يبدأ التطبيق الاتصال. إذا كانت الجسم متصلًا، يبدأ التطبيق فصل الاتصال.
النتيجة عادةً هي accepted, لأن الاتصال والفصل يجريان عبر مسار الاتصال بالكاميرا في التطبيق وقد لا يزالان قيد التقدم بعد عودة استجابة MCP.
nikon_camera_capture
يطلب نفس مسار الالتقاط بدون AF مثل زر التصوير في التطبيق. تتحقق الأداة من canCapture مباشرة قبل طلب الالتقاط.
النتيجة عادةً هي accepted, لأن الالتقاط والنقل وتوليد المسار النهائي والبيانات الوصفية وعمل حفظ الملف يمكن أن تستمر بعد عودة استجابة MCP. اتصل بـ nikon_camera_get_state لاحقًا لفحص رسالة الحالة المحدثة وآخر مسار صورة محفوظ.
nikon_camera_toggle_live_view
يطلب عرض مباشر للتبديل على أو إيقاف. يجب أن تكون الكاميرا متصلة. إذا لم يكن العرض المباشر مدعومًا أو لا يمكن تغييره في حالة الكاميرا الحالية، يتم رفض الأداة.
nikon_camera_contrast_af
يطلب التركيز التلقائي بالكونتراست أثناء تفعيل العرض المباشر. يجب أن تكون الكاميرا متصلة، ويجب أن يكون العرض المباشر مفعلًا، ويجب أن يكون التركيز التلقائي بالكونتراست متاحًا في حالة الكاميرا الحالية.
حالات النتائج
تستخدم نتائج أدوات NikonMCP شكل نتيجة هيكلية مستقرة:
ok: صحيح للطلبات الناجحة أو المقبولة، خطأ للرفض أو الخطأ.status:ok,accepted,rejected, أوerror.reasonCode: رمز ثابت عندما يكونokخطأ.message: تفسير قصير.state: لقطة حالة Nikon الحالية عند توفرها.operation: تفاصيل العملية المستقبلية عندما تضيف نسخة لاحقة تتبع العمليات الطويلة.
الحالات المعتادة هي:
ok: أكملت الأداة على الفور، مثلnikon_camera_get_stateأوnikon_hello.accepted: قبل التطبيق طلب كاميرا وبدأت العمل أو صفته.rejected: تم فهم الطلب، لكن حالة الكاميرا أو التطبيق الحالية لا تسمح بذلك.error: حدث فشل غير متوقع في التنفيذ أو وقت التشغيل.
تكون مشاكل حالة الكاميرا المتوقعة عادةً rejected, وليس أخطاء البروتوكول. على سبيل المثال، يجب أن تعيد الالتقاط أثناء عدم جاهزية الكاميرا رفضًا هيكليًا بدلاً من استجابة MCP معطلة.
رموز أسباب الرفض
تشمل رموز الرفض الشائعة لـ NikonMCP ما يلي:
camera_not_connected: الأداة المطلوبة تحتاج إلى كاميرا متصلة.camera_connecting: الكاميرا متصلة بالفعل أو تفصل.capture_unavailable: الالتقاط غير مسموح به حاليًا.live_view_unavailable: لا يمكن تبديل العرض المباشر في الحالة الحالية.contrast_af_unavailable: لا يمكن تشغيل التركيز التلقائي بالكونتراست في الحالة الحالية.camera_busy: الكاميرا أو التطبيق مشغول.user_policy_disabled: سياسة الملف الشخصي أو الوحدة تمنع الطلب.license_unavailable: حالة الترخيص الحالية لا تسمح بالإجراء المطلوب.
أمثلة على استدعاءات الأدوات
قم بإدراج الأدوات أولاً:
{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}
احصل على حالة الكاميرا:
{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"nikon_camera_get_state","arguments":{}}}
التقاط صورة:
{"jsonrpc":"2.0","id":4,"method":"tools/call","params":{"name":"nikon_camera_capture","arguments":{}}}
تبديل العرض المباشر:
{"jsonrpc":"2.0","id":5,"method":"tools/call","params":{"name":"nikon_camera_toggle_live_view","arguments":{}}}
تشغيل التركيز التلقائي بالكونتراست:
{"jsonrpc":"2.0","id":6,"method":"tools/call","params":{"name":"nikon_camera_contrast_af","arguments":{}}}
تقوم معظم عملاء MCP بإنشاء رسائل JSON-RPC هذه لك. استخدم هذه الأمثلة عند تصحيح عميل مخصص أو التحقق من أسماء الطلبات.
سير العمل العملي
- ابدأ خادم MCP مع تمكين NikonMCP.
- قم بتوصيل عميل MCP.
- اتصل بـ
nikon_camera_get_state. - إذا كان
isConnectedخطأ، اطلبnikon_camera_toggle_connection. - انتظر حتى تبلغ الحالة
isConnectedصحيح. - أكد أن
canCaptureصحيح. - اطلب
nikon_camera_capture. - استمر في الاستطلاع
nikon_camera_get_stateحتى يتم تحديث الحالة وآخر مسار تم التقاطه.
لتركيز العرض المباشر:
- أكد أن
isConnectedصحيح. - اطلب
nikon_camera_toggle_live_viewإذا كان العرض المباشر مغلقًا. - انتظر حتى يصبح
isLiveViewEnabledصحيحًا. - اطلب
nikon_camera_contrast_af.
ما لا يفعله NikonMCP
NikonMCP ليس بديلاً عن واجهة التطبيق الكاملة. لا تكشف هذه الواجهة الأولى للكاميرا عن كل إعدادات الكاميرا، أو كل سير العمل، أو بث صور العرض المباشر، أو تصفح الصور، أو تحرير الملفات الشخصية، أو التنقل العام في التطبيق.
تتحكم MCP في حالة الطلبات وإجراءاتها. يجب استخدام البيانات الكبيرة أو المستمرة من خلال ميزات التطبيق أو قناة جانبية مستقبلية مصممة لهذا الغرض.
استكشاف الأخطاء وإصلاحها
إذا لم يظهر NikonMCP في العميل:
- أكد أن بطاقة وحدة NikonMCP مفعل على صفحة خادم MCP.
- أوقف وابدأ خادم MCP بعد تمكين الوحدة.
- أعد الاتصال أو قم بتحديث العميل.
- أكد أن العميل متصل بنقطة النهاية والرمز الصحيحين.
إذا تم رفض nikon_camera_capture:
- اتصل بـ
nikon_camera_get_stateوتحقق منcanCapture. - أكد أن الكاميرا متصلة.
- أكد أن الكاميرا ليست مشغولة، أو تسجل، أو تكتب، أو في سير عمل آخر.
- أكد أن التطبيق يمكنه الالتقاط من زر التصوير العادي.
إذا تم رفض تبديل الاتصال أو لم يكتمل:
- أكد أن الجسم المحدد يتطابق مع كاميرا Nikon الفعلية.
- أكد أن الكاميرا مشغلة ومتصلة عبر USB.
- أكد أنه لا يوجد تطبيق آخر يستخدم كاميرا Nikon.
- راقب رسالة حالة التطبيق وسجل خادم MCP.
- استخدم مساعدة الاتصال بالجسم العادية إذا لم تتمكن الكاميرا من الاتصال.
إذا تم رفض تبديل العرض المباشر:
- أكد أن الكاميرا متصلة.
- أكد أن طراز الكاميرا والوضع الحالي يدعمان العرض المباشر عن بُعد.
- أكد أن الكاميرا ليست مشغولة بالتقاط أو حفظ.
- حاول تبديل العرض المباشر من واجهة التطبيق لتأكيد حالة الكاميرا.
إذا تم رفض التركيز التلقائي بالكونتراست:
- أكد أن العرض المباشر مفعل.
- أكد أن العدسة ووضع تركيز الكاميرا يدعمان التركيز التلقائي.
- أكد أن الكاميرا ليست بالفعل في وضع التركيز، أو الالتقاط، أو التسجيل، أو مشغولة.
- حاول التركيز التلقائي بالكونتراست من واجهة التطبيق لتأكيد حالة الكاميرا.
إذا لم يتم تحديث lastCapturedImagePath:
- انتظر حتى يكتمل نقل الالتقاط والحفظ النهائي.
- أكد أن وجهة الالتقاط ترسل الملفات إلى الكمبيوتر عندما تتوقع مسارًا على جانب الكمبيوتر.
- تحقق من إعدادات المسار ورسالة حالة التطبيق.
- بالنسبة لعمليات الالتقاط متعددة الملفات، افحص
lastCapturedImagePaths. - تحقق من سجل التطبيق لأخطاء حفظ الالتقاط.
الإعدادات ذات الصلة
استخدم خادم MCP لإعداد نقطة النهاية والرمز والوحدة. استخدم أدوات الجسم للاتصال العادي بكاميرا Nikon والتحكم في الالتقاط. استخدم العرض المباشر لإعداد العرض المباشر وسلوك العرض المباشر على جانب الكاميرا. استخدم المسار للمجلد النهائي واسم الملف المستخدم بواسطة الصور المحفوظة.