Αναφορά
Σύνδεσμοι AI (MCP), σύντομα
Σύντομα. Οι σύνδεσμοι AI δεν είναι ακόμη διαθέσιμοι· αυτή η σελίδα περιγράφει πώς θα λειτουργούν. Ο απομακρυσμένος διακομιστής Model Context Protocol του Citron επιτρέπει σε ένα εργαλείο AI να λειτουργεί σε έναν χώρο εργασίας ως ένα μέλος, με τα δικαιώματα αυτού του μέλους.
Σημείο πρόσβασης#
Ο διακομιστής βρίσκεται στο https://api.console.citronos.com/mcp. Όπως και στο /graphql, η διαδρομή δεν έχει /v1. Χρησιμοποιεί την έκδοση πρωτοκόλλου 2025-11-25 μέσω streamable HTTP και δεν διατηρεί κατάσταση: κάθε POST λαμβάνει απάντηση JSON, δεν υπάρχουν συνεδρίες και τα GET και DELETE απαντούν 405.
Οι σύνδεσμοι AI είναι λειτουργική μονάδα που ενεργοποιεί ένας διαχειριστής για τον χώρο εργασίας. Όσο είναι απενεργοποιημένη, το /mcp απαντά 403 στα token αυτού του χώρου εργασίας. Τα μέλη χρειάζονται το δικαίωμα mcp.use για να συνδεθούν· το mcp.manage επιτρέπει σε έναν διαχειριστή να βλέπει και να ανακαλεί τις συνδέσεις όλων.
Μετά την κυκλοφορία θα μπορούν να συνδεθούν το Claude (claude.ai, Claude Desktop και Claude Code), το ChatGPT, το Cursor, το VS Code και οποιοδήποτε άλλο πρόγραμμα-πελάτης MCP. Όσα υποστηρίζουν OAuth συνδέονται μόνα τους· τα υπόλοιπα χρησιμοποιούν ένα προσωπικό token.
Σύνδεση προγράμματος-πελάτη#
Claude Code#
Προσθέστε τον διακομιστή, έπειτα εκτελέστε /mcp στο Claude Code και επιλέξτε Authenticate. Ανοίγει ένα πρόγραμμα περιήγησης στην οθόνη συναίνεσης του Citron. Για να παρακάμψετε το OAuth, περάστε αντί γι’ αυτό ένα προσωπικό token ως κεφαλίδα.
claude mcp add --transport http citron https://api.console.citronos.com/mcp
# then, inside Claude Code: /mcp → citron → Authenticateclaude mcp add --transport http citron https://api.console.citronos.com/mcp \
--header "Authorization: Bearer cmcp_pat_…"Claude Desktop και claude.ai#
Ανοίξτε Settings → Connectors → Add custom connector, εισαγάγετε https://api.console.citronos.com/mcp ως URL και επιλέξτε Connect, έπειτα εγκρίνετε τη σύνδεση στο Citron. Για να το εκτελέσετε τοπικά με προσωπικό token, προσθέστε τα εξής στο claude_desktop_config.json:
{
"mcpServers": {
"citron": {
"command": "citron-mcp",
"args": ["--base-url", "https://api.console.citronos.com"],
"env": { "CITRON_MCP_TOKEN": "cmcp_pat_…" }
}
}
}Cursor#
Προσθέστε τον διακομιστή στο ~/.cursor/mcp.json. Παραλείψτε τα headers για να συνδεθείτε με OAuth αντί για token.
{
"mcpServers": {
"citron": {
"url": "https://api.console.citronos.com/mcp",
"headers": { "Authorization": "Bearer cmcp_pat_…" }
}
}
}ChatGPT#
Ανοίξτε Settings → Apps & Connectors → Advanced settings, ενεργοποιήστε το Developer mode και έπειτα επιλέξτε Create connector. Εισαγάγετε https://api.console.citronos.com/mcp ως URL του διακομιστή MCP και επιλέξτε OAuth για τον έλεγχο ταυτότητας.
Προγράμματα-πελάτες που εκτελούν μόνο τοπικούς διακομιστές#
Ένας μικρός τοπικός διακομιστής stdio, ο citron-mcp, προωθεί κάθε κλήση στο απομακρυσμένο σημείο πρόσβασης. Δεν υπάρχει ακόμη στο npm, οπότε ζητήστε μας το αρχείο του πακέτου και μην εγκαθιστάτε ποτέ πακέτο με αυτό το όνομα από αλλού. Δέχεται προσωπικό token μέσω --token ή στο CITRON_MCP_TOKEN και το βασικό URL μέσω --base-url ή στο CITRON_BASE_URL. Απαιτεί Node 20 ή νεότερη έκδοση.
# Node 20+. Not on npm yet: install the package file we send you
npm install -g ./citron-mcp-0.1.0.tgz
citron-mcp --base-url https://api.console.citronos.com --token cmcp_pat_…
# or with environment variables
CITRON_BASE_URL=https://api.console.citronos.com CITRON_MCP_TOKEN=cmcp_pat_… citron-mcpΈλεγχος ταυτότητας#
Υπάρχουν δύο είδη διαπιστευτηρίων. Το OAuth συνιστάται για τα προγράμματα-πελάτες που το υποστηρίζουν. Τα προσωπικά token λειτουργούν σε όλες τις άλλες περιπτώσεις.
OAuth 2.1#
Το πρόγραμμα-πελάτης ανακαλύπτει τα πάντα μόνο του. Μια αίτηση χωρίς token λαμβάνει 401 με κεφαλίδα WWW-Authenticate που παραπέμπει στα μεταδεδομένα του προστατευμένου πόρου.
POST /mcp HTTP/1.1
Host: api.console.citronos.com
Content-Type: application/json
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer resource_metadata="https://api.console.citronos.com/.well-known/oauth-protected-resource/mcp"| Διαδρομή | Τι κάνει |
|---|---|
GET /.well-known/oauth-protected-resource/mcp | Μεταδεδομένα προστατευμένου πόρου (RFC 9728). |
GET /.well-known/oauth-authorization-server | Μεταδεδομένα διακομιστή εξουσιοδότησης (RFC 8414). Ο εκδότης είναι https://api.console.citronos.com. |
POST /mcp/oauth/register | Δυναμική εγγραφή προγραμμάτων-πελατών (RFC 7591). |
GET /mcp/oauth/authorize | Ξεκινά τη ροή κωδικού εξουσιοδότησης. |
POST /mcp/oauth/token | Εκδίδει token για authorization_code και refresh_token. |
POST /mcp/oauth/revoke | Ανάκληση token (RFC 7009). |
- Κωδικός εξουσιοδότησης με PKCE. Γίνεται δεκτή μόνο η μέθοδος
S256. - Τα εγγεγραμμένα προγράμματα-πελάτες είναι δημόσια από προεπιλογή. Υποστηρίζονται επίσης τα
client_secret_postκαιclient_secret_basic. - Ένα έγγραφο μεταδεδομένων προγράμματος-πελάτη (ένα https URL ως
client_id) λειτουργεί αντί για την εγγραφή. - Στείλτε τον δείκτη πόρου (RFC 8707)
resource=https://api.console.citronos.com/mcp. - Τα URI ανακατεύθυνσης πρέπει να είναι https. Το απλό http επιτρέπεται μόνο σε
localhost,127.0.0.1ή[::1], σε οποιαδήποτε θύρα. Επιτρέπονται επίσης σχήματα εφαρμογών όπως τοcursor://…. - Τα εύρη (scopes) είναι
mcp:readκαιmcp:write. Το δικαίωμα εγγραφής περιλαμβάνει και την ανάγνωση. - Τα token πρόσβασης (
cmcp_oat_…) ισχύουν 1 ώρα. Τα token ανανέωσης (cmcp_ort_…) ισχύουν 30 ημέρες και αντικαθίστανται σε κάθε χρήση. - Ένας κωδικός εξουσιοδότησης που χρησιμοποιείται δύο φορές ανακαλεί όλα όσα εξέδωσε.
Ο χρήστης εγκρίνει τη σύνδεση σε μια οθόνη συναίνεσης στην κονσόλα του Citron (/admin/connect/mcp), συνδεδεμένος με την κανονική του συνεδρία. Εκεί επιλέγει τον χώρο εργασίας και Read only ή Read & write.
Προσωπικά token#
- Δημιουργήστε το tokenΣτην κονσόλα, ανοίξτε Settings → Developers → AI connectors και επιλέξτε New token.
- Επιλέξτε όνομα, πρόσβαση και λήξηΗ πρόσβαση είναι Read only ή Read & write. Το token λήγει μετά από 7, 30 ή 90 ημέρες, μετά από 1 έτος ή ποτέ.
- Αντιγράψτε το μία φοράΤο token (
cmcp_pat_…) εμφανίζεται μόνο μία φορά. Το Citron αποθηκεύει μόνο το hash SHA-256 του. Στείλτε το ωςAuthorization: Bearer cmcp_pat_….
Η λίστα των token δείχνει πότε χρησιμοποιήθηκε τελευταία φορά το καθένα. Μπορείτε να ανακαλέσετε οποιοδήποτε από αυτά ανά πάσα στιγμή.
Εκ μέρους ποιου ενεργεί η σύνδεση#
Και τα δύο είδη διαπιστευτηρίων ενεργούν ως το μέλος που τα δημιούργησε ή τα ενέκρινε, μόνο σε αυτόν τον χώρο εργασίας. Χρησιμοποιούν τα τρέχοντα δικαιώματα του μέλους: η αλλαγή του ρόλου του ή η αφαίρεσή του από την ομάδα ισχύει αμέσως. Το επίπεδο πρόσβασης του token περιορίζει όσα θα μπορούσε διαφορετικά να κάνει το μέλος.
Οι πολιτικές εγγραφών (κανόνες πεδίων και εγγραφών), οι περιορισμοί πρόσβασης σε συλλογές και οι ενεργοποιημένες μονάδες εφαρμόζονται ακριβώς όπως στην κονσόλα.
Εργαλεία#
Τα εργαλεία είναι ίδια με εκείνα του βοηθού AI της κονσόλας. Καλύπτουν τα εισερχόμενα και τα αιτήματα, τις φόρμες, τις κρατήσεις, τις συλλογές και τις εγγραφές περιεχομένου, τα πολυμέσα, το CRM, τους αυτοματισμούς, τους πίνακες ελέγχου και άλλα. Τι βλέπει ένα πρόγραμμα-πελάτης εξαρτάται από τα δικαιώματα του μέλους, τις μονάδες του χώρου εργασίας και την πρόσβαση του token.
- Τα εργαλεία ανάγνωσης (αναζήτηση, ανάγνωση, σύνοψη, εκτέλεση ερωτήματος πίνακα ελέγχου) λειτουργούν με οποιοδήποτε token.
- Τα εργαλεία εγγραφής εμφανίζονται και εκτελούνται μόνο με token Read & write. Μέσω MCP μια αλλαγή εφαρμόζεται αμέσως, χωρίς βήμα επιβεβαίωσης στην κονσόλα. Περνά από τις ίδιες μεθόδους υπηρεσιών με την κονσόλα, καταγράφεται στο αρχείο ελέγχου και επιστρέφει ένα
actionId. Όταν η αλλαγή μπορεί να αναιρεθεί, το εργαλείοundo_changeτην αναιρεί. - Τα καταστροφικά εργαλεία (διαγραφή, αρχειοθέτηση, ανάκληση) απαιτούν επιπλέον το όρισμα
confirm: true. Χωρίς αυτό, η κλήση επιστρέφειCONFIRMATION_REQUIREDκαι δεν συμβαίνει τίποτα. Το AI πρέπει να το περνά μόνο αφού συμφωνήσει ο χρήστης. - Οι αλλαγές ασφαλείας (ρόλοι, μέλη, κλειδιά API, SSO, τομείς) απαιτούν πρόσφατη σύνδεση, γι’ αυτό δεν είναι ποτέ διαθέσιμες μέσω MCP και επιστρέφουν
UNAVAILABLE_OVER_MCP. Τα εργαλεία που απλώς πλοηγούν στην κονσόλα δεν εμφανίζονται. - Τα αποτελέσματα των εργαλείων επισημαίνουν τα δεδομένα των εγγραφών ως μη αξιόπιστα. Ισχύουν οι κανόνες ελαχιστοποίησης δεδομένων του βοηθού: χωρίς διευθύνσεις e-mail ή αριθμούς τηλεφώνου, ενώ ονόματα και κείμενο μηνυμάτων μόνο όταν ο χώρος εργασίας επιτρέπει στο AI να διαβάζει το περιεχόμενο των εισερχομένων και του CRM (Settings → AI).
- Τα εργαλεία φέρουν τις επισημάνσεις
readOnlyHintκαιdestructiveHint.
Σφάλματα εργαλείων#
Ένα εργαλείο που αποτυγχάνει επιστρέφει αποτέλεσμα με isError: true. Το κείμενό του ξεκινά με έναν από αυτούς τους κωδικούς.
{
"content": [{ "type": "text", "text": "CONFIRMATION_REQUIRED: …" }],
"isError": true
}| Κωδικός | Πότε |
|---|---|
READ_ONLY_TOKEN | Κλήθηκε εργαλείο εγγραφής με token μόνο ανάγνωσης. |
CONFIRMATION_REQUIRED | Κλήθηκε καταστροφικό εργαλείο χωρίς confirm: true. Δεν άλλαξε τίποτα. |
UNAVAILABLE_OVER_MCP | Το εργαλείο αλλάζει ρυθμίσεις ασφαλείας και λειτουργεί μόνο στην κονσόλα. |
PERMISSION_DENIED | Ο ρόλος του μέλους δεν το επιτρέπει. |
MODULE_OFF | Η μονάδα στην οποία ανήκει το εργαλείο είναι απενεργοποιημένη. |
NOT_FOUND | Η εγγραφή δεν υπάρχει. |
INVALID_INPUT | Τα ορίσματα δεν ταιριάζουν με το σχήμα του εργαλείου. |
LIMIT_REACHED | Εξαντλήθηκε ένα όριο. |
UNKNOWN_TOOL | Δεν υπάρχει διαθέσιμο εργαλείο με αυτό το όνομα για αυτή τη σύνδεση. |
Πόροι#
| URI | Περιεχόμενα |
|---|---|
citron://workspace/summary | Ο χώρος εργασίας, εσείς, αυτή η σύνδεση, τα νούμερα της εβδομάδας, οι συλλογές και οι περιοχές εργαλείων. |
citron://collections/schema | Οι συλλογές που μπορείτε να διαβάσετε, με τα πεδία τους. |
citron://collections/{slug}/entries | Οι πρώτες 50 δημοσιευμένες εγγραφές, ακριβώς όπως τις επιστρέφει το REST API παράδοσης. |
citron://inbox/recent | Τα 25 πιο πρόσφατα αιτήματα, με ελαχιστοποιημένα δεδομένα. |
Προτροπές#
| Προτροπή | Ορίσματα | Τι κάνει |
|---|---|---|
triage_inbox | days | Ταξινομεί τα πρόσφατα αιτήματα κατά προτεραιότητα. |
draft_reply | enquiryId, tone, language (bg ή en) | Συντάσσει πρόχειρη απάντηση σε ένα αίτημα. Δεν τη στέλνει ποτέ. |
build_collection | description | Σχεδιάζει μια συλλογή περιεχομένου από μια περιγραφή. |
Σφάλματα HTTP και όρια αιτήσεων#
| Κατάσταση | Πότε |
|---|---|
401 | Δεν υπάρχει χρησιμοποιήσιμο token: MCP_TOKEN_REQUIRED, MCP_TOKEN_INVALID, MCP_TOKEN_EXPIRED, MCP_TOKEN_REVOKED ή MCP_TOKEN_INACTIVE. Η απάντηση φέρει WWW-Authenticate. |
403 | Η μονάδα συνδέσμων AI είναι απενεργοποιημένη για τον χώρο εργασίας. |
405 | GET ή DELETE στο /mcp. |
429 | Πάνω από 120 αιτήσεις το λεπτό για ένα token. Η απάντηση φέρει Retry-After: 60. |
503 | Το MCP είναι απενεργοποιημένο για ολόκληρη την πλατφόρμα. |
Τα σημεία πρόσβασης OAuth επιστρέφουν σφάλματα σε μορφή RFC, { "error", "error_description" }. Τα σφάλματα του δημόσιου API περιγράφονται στα σφάλματα και όρια αιτήσεων.
Καταγραφή ελέγχου και ανάκληση πρόσβασης#
Κάθε κλήση εργαλείου γράφει μία γραμμή mcp.tool.call στο αρχείο ελέγχου: το εργαλείο, αν πέτυχε ή τον κωδικό σφάλματος, το id του token, το πρόγραμμα-πελάτη OAuth, το επίπεδο πρόσβασης και τα ονόματα των ορισμάτων. Οι τιμές των ορισμάτων δεν καταγράφονται ποτέ.
Η δημιουργία και η ανάκληση token και οι εγκρίσεις OAuth καταγράφονται επίσης, ως mcp.token.create, mcp.token.revoke, mcp.oauth.approve, mcp.oauth.deny και mcp.oauth.grant.
Ανακαλέστε ένα token ή μια συνδεδεμένη εφαρμογή ανά πάσα στιγμή από Settings → Developers → AI connectors. Η ανάκληση μιας εφαρμογής OAuth τερματίζει και το token ανανέωσής της.
Αυτή η αναφορά καλύπτει μόνο το δημόσιο API και ακολουθεί τη σύμβαση συμβατότητας του API: οι δημόσιες αποκρίσεις μόνο αποκτούν νέα πεδία. Η περιγραφή OpenAPI αυτών των διαδρομών βρίσκεται στο /developers/openapi.json.