Gunakan aliyun mcp-proxy sebagai proxy autentikasi lokal untuk aplikasi AI yang tidak dapat menangani kredensial Alibaba Cloud. Proxy ini mengelola otorisasi OAuth dan penyegaran token secara otomatis.
aliyun mcp-proxy
aliyun mcp-proxy adalah alat CLI yang melakukan proxy permintaan antara aplikasi AI (seperti Dify dan LangChain) dan server OpenAPI MCP. Otorisasi OAuth satu kali diperlukan saat pertama kali dijalankan; proxy ini menangani penyegaran token secara otomatis.
Cara kerjanya: Aplikasi mengirim permintaan ke aliyun mcp-proxy, yang menambahkan kredensial dan meneruskannya ke server OpenAPI MCP.
Setelah menjalankan aliyun mcp-proxy, pengguna mana pun pada mesin host dapat mengakses server MCP melalui port proxy dalam cakupan izin pengguna CLI tersebut. Jalankan proxy hanya di lingkungan tepercaya berpengguna tunggal dan jangan pernah membuka port tersebut ke luar. Gunakan --allowed-servers atau --blocked-servers untuk membatasi server yang dapat diakses. Risiko keamanan dan mitigasinya.
Konfigurasi dan jalankan proxy
Langkah 1: Konfigurasi Alibaba Cloud CLI
-
Instal atau tingkatkan Alibaba Cloud CLI ke versi
3.2.0atau yang lebih baru. Instal atau perbarui Alibaba Cloud CLI. -
Konfigurasikan CLI dengan kredensial Akun Alibaba Cloud atau pengguna RAM yang memiliki izin untuk membuat aplikasi OAuth. Untuk menggunakan aplikasi OAuth yang sudah ada, tentukan
--oauth-app-namepada langkah berikutnya.aliyun configure # Masukkan ID AccessKey, AccessKey Secret, dan wilayah default Anda sesuai prompt.
Langkah 2: Jalankan pertama kali dan otorisasi OAuth
Pada jalankan pertama kali, mcp-proxy memerlukan otorisasi OAuth satu kali untuk mendapatkan token penyegaran.
-
Jalankan proxy di foreground.
-
Di lingkungan GUI, CLI akan membuka browser untuk otorisasi OAuth kecuali jika
--no-browserditentukan. Setelah otorisasi, lanjutkan ke langkah 5.aliyun mcp-proxy --host 127.0.0.1 --port 8088 -
Di lingkungan headless, tambahkan
--no-browser. CLI akan meminta Anda untuk mendapatkan kode otorisasi secara manual.aliyun mcp-proxy --host 127.0.0.1 --port 8088 --no-browser
CatatanUntuk menentukan aplikasi OAuth khusus dengan
--oauth-app-name, aplikasi tersebut harus memenuhi persyaratan berikut:-
OAuth Scope: Harus
/acs/mcp-server. -
Redirect URI: Harus sesuai dengan Redirect URI yang digunakan selama autentikasi
aliyun mcp-proxy. -
Jenis Aplikasi: Harus berupa aplikasi
Native.
-
-
Terminal menampilkan URL otorisasi.
Setting up MCPOAuth profile 'default-mcp'... Opening browser for OAuth login... URL: https://signin.aliyun.com/oauth2/v1/auth?client_id=XXX8&response_type=code&scope=%2Facs%2Fmcp-server&redirect_uri=http://0.0.0.0:8088/callback&code_challenge=XXX&code_challenge_method=S256 Please open the authorization URL on a machine with a browser and complete the sign-in. After authorization, the browser will redirect to a callback URL. Even if the page fails to load (connection error), the authorization code is in the URL. Please copy the value of the `code` parameter from the browser's address bar. Example: If the URL is: http://127.0.0.1:8088/callback?code=abc123xyz&state=... Then copy only: abc123xyz Enter authorization code: <YOUR CODE> -
Buka URL tersebut di browser, masuk, dan selesaikan otorisasi.
-
Setelah otorisasi, halaman akan dialihkan ke URL yang berisi parameter
code, atau menampilkan kode tersebut secara langsung. Salin nilaicode, tempelkan ke terminal, lalu tekan Enter. -
Terminal menampilkan
OAuth login successful!ketika otorisasi berhasil.2025/12/04 19:11:49 Oauth authorization successfully, code received: XXXX 2025/12/04 19:11:49 Start to exchange code for token with PKCE 2025/12/04 19:11:49 Exchange code for token with PKCE successfully OAuth login successful! -
Terminal menampilkan
MCP Proxy Server Startedketika proxy siap digunakan.MCP Profile 'default-mcp' configured for oauth app 'aliyun-cli-mcp-proxy' successfully! MCP Proxy Server Started Listen: 127.0.0.1:8088
Langkah 3: Konfigurasi layanan systemd (CentOS)
Untuk operasi yang stabil, konfigurasikan proxy sebagai layanan systemd yang dimulai saat boot.
-
Buat file layanan
systemdbernama aliyun-mcp-proxy.service.Catatan:
-
Ganti
your-userdengan nama pengguna non-rootaktual yang menjalankan layanan ini. Pengguna ini harus telah mengonfigurasi kredensial menggunakanaliyun configure. -
Pada baris
ExecStart,$(which aliyun)secara otomatis menemukan path ke perintahaliyun. Jika gagal, gantilah secara manual dengan output dari perintahwhich aliyun(misalnya,/usr/local/bin/aliyun).
sudo tee /etc/systemd/system/aliyun-mcp-proxy.service << 'EOF' [Unit] Description=Aliyun CLI MCP Proxy After=network.target [Service] Type=simple User=your-user ExecStart=$(which aliyun) mcp-proxy --host 127.0.0.1 --port 8088 --no-browser Restart=always RestartSec=10 Environment=HOME=/home/your-user [Install] WantedBy=multi-user.target EOF -
-
Muat ulang konfigurasi
systemddan mulai layanan tersebut.# Reload the configuration sudo systemctl daemon-reload # Start the service sudo systemctl start aliyun-mcp-proxy # Enable the service to start on boot sudo systemctl enable aliyun-mcp-proxy
Langkah 4: Verifikasi layanan proxy
Verifikasi bahwa layanan sedang berjalan.
-
Lihat status layanan
Periksa status layanan.
sudo systemctl status aliyun-mcp-proxyJika output berisi
active (running), layanan telah berhasil dimulai. -
Request Proxy Port
Kirim permintaan uji ke port proxy.
curl http://127.0.0.1:8088/Proxy yang berfungsi akan mengembalikan respons error XML dari server MCP, yang mengonfirmasi konektivitas.
<?xml version='1.0' encoding='UTF-8'?><Error><RequestId>B3311876-XXXXX</RequestId><HostId>openapi-mcp.cn-hangzhou.aliyuncs.com</HostId><Code>InvalidAction.NotFound</Code><Message>Specified api is not found, please check your url and method.</Message><Recommend><![CDATA[https://api.aliyun.com/troubleshoot?q=InvalidAction.NotFound&product=OpenAPIExplorer&requestId=B3311876-XXX]]></Recommend></Error>
Integrasi dengan Dify
Contoh ini mengonfigurasi mcp-proxy dengan Dify yang diterapkan melalui Docker Compose pada Instance ECS yang sama.
Langkah 1: Dapatkan IP host dan mulai proxy
Kontainer Dify mengakses mcp-proxy melalui IP Docker bridge mesin host.
-
Dapatkan alamat IP Docker bridge.
ip addr show docker0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1Perintah ini mengembalikan alamat IP seperti
172.17.0.1. -
Jalankan aliyun mcp-proxy di foreground, atau modifikasi perintah startup
systemduntuk menjalankannya sebagai layanan.aliyun mcp-proxy --host 172.17.0.1 --port 8088 --no-browser
Langkah 2: Konfigurasi server MCP di Dify
-
Di Dify, buka halaman konfigurasi Tools > MCP.
-
Klik Add MCP Server (HTTP).
-
Pada bidang server endpoint URL, masukkan alamat proxy MCP Anda.
Temukan Streamable HTTP Endpoint di konsol OpenAPI MCP Service dan ganti host-nya dengan alamat proxy Anda.
Contoh konversi:
-
Endpoint Asli:
https://openapi-mcp.cn-hangzhou.aliyuncs.com/accounts/1234/custom/cli-proxy-test/id/1234/mcp -
Endpoint yang Diproxy: (dengan asumsi proxy berjalan di
172.17.0.1:8088):http://172.17.0.1:8088/accounts/1234/custom/cli-proxy-test/id/1234/mcp
-
-
Lengkapi bidang lainnya dan klik Add & Authorize. Dify akan mengarahkan traffic MCP melalui proxy ini.
Risiko keamanan dan mitigasinya
Setelah menjalankan mcp-proxy, pengguna mana pun pada mesin host dapat mengakses server MCP melalui port proxy dalam cakupan izin pengguna CLI tersebut. Risiko utama:
-
Penyalahgunaan hak istimewa internal: Pengguna lain pada mesin yang sama dapat menggunakan port proxy untuk melakukan tindakan tidak sah, yang menyebabkan penyalahgunaan hak istimewa atau kebocoran data.
-
Eksposur eksternal: Jika proxy mendengarkan pada
0.0.0.0tanpa firewall, siapa pun di jaringan dapat mengakses server MCP melalui port tersebut.
Proxy menggunakan identitas Alibaba Cloud pengguna CLI yang sedang login. Konfigurasikan izin akses dengan hati-hati.
Mitigasi
-
Isolasi lingkungan: Jalankan proxy hanya di lingkungan tepercaya berpengguna tunggal.
-
Kontrol akses jaringan: Ikat
--hostke127.0.0.1(default) atau IP internal tertentu. Gunakan aturan firewall atau grup keamanan untuk membatasi akses ke port proxy. Jangan pernah membuka port tersebut ke internet publik. -
Kontrol akses server: Gunakan
--allowed-servers(allowlist) atau--blocked-servers(blocklist) untuk membatasi server MCP yang dapat diakses. Konfigurasi kontrol akses server. -
Prinsip hak istimewa minimal: Berikan pengguna CLI dan server MCP hanya izin minimum yang diperlukan. Lebih baik gunakan akses read-only.
-
Audit dan pemantauan: Tinjau log akses proxy secara berkala. Permintaan yang diblokir dicatat dalam log.
Konfigurasi kontrol akses server
aliyun mcp-proxy mendukung mode allowlist dan blocklist untuk membatasi server MCP yang dapat diakses.
Aturan prioritas
Kontrol akses dievaluasi dalam urutan berikut:
-
Blocklist terlebih dahulu: Permintaan yang cocok dengan blocklist ditolak segera, bahkan jika juga ada di allowlist.
-
Penyaringan daftar izin: Jika daftar izin dikonfigurasi, hanya server yang tercantum dalam daftar tersebut yang diizinkan.
-
Izinkan secara default: Jika tidak ada daftar yang dikonfigurasi, akses ke semua server diizinkan.
Dapatkan nama dan ID server
Setelah menjalankan aliyun mcp-proxy, terminal mencantumkan server MCP yang tersedia:
Available Servers:
- cloudphone
MCP: http://127.0.0.1:8088/accounts/0000000000000000/system/eds-aic/cloudphone/id/XSkb9v4dXx000000/mcp
SSE: http://127.0.0.1:8088/accounts/0000000000000000/system/eds-aic/cloudphone/id/XSkb9v4dXx000000/sse
- multi_account
MCP: http://127.0.0.1:8088/accounts/0000000000000000/custom/multi_account/id/OV0Qkpxh0Uodx000/mcp
SSE: http://127.0.0.1:8088/accounts/0000000000000000/custom/multi_account/id/OV0Qkpxh0Uodx000/sse
-
Pada output tersebut,
cloudphonedanmulti_accountadalah nilainameserver (biasanya terletak sebelum kata kunciid). -
Pada output tersebut,
XSkb9v4dXx000000danOV0Qkpxh0Uodx000adalah nilaiidserver (biasanya terletak sebelum kata kuncimcp).
Path URL biasanya mengikuti pola berikut:
......./system/eds-aic/$server_name/id/$server_id/mcp
......./custom/$server_name/id/$server_id/mcp
Pola pencocokan
Parameter --allowed-servers dan --blocked-servers mendukung tiga pola pencocokan, yang secara otomatis diidentifikasi berdasarkan format nilainya:
|
Pola pencocokan |
Format |
Contoh |
Deskripsi |
|
Pencocokan Nama Server |
String yang tidak diawali dengan |
|
Cocok persis dengan bidang |
|
Pencocokan ID Server |
String yang tidak diawali dengan |
|
Cocok persis dengan bidang |
|
Pencocokan Awalan Path |
String yang diawali dengan |
|
Cocok dengan awalan path dari URL permintaan. |
Catatan
-
Pencocokan nama dan ID server bersifat eksak.
-
Pencocokan awalan path menggunakan perbandingan awalan. Misalnya,
/acs/mcp-server/ecscocok dengan/acs/mcp-server/ecs/mcpdan/acs/mcp-server/ecs/sse. -
Anda dapat mencampur ketiga pola tersebut dalam parameter yang sama.
Contoh konfigurasi
-
Mode allowlist: Izinkan akses hanya ke server yang ditentukan
aliyun mcp-proxy --allowed-servers "ecs,oss"Hanya
ecsdanossyang dapat diakses. Permintaan ke server lain akan mengembalikan 403 Forbidden. -
Mode blocklist: Tolak akses ke server yang ditentukan
aliyun mcp-proxy --blocked-servers "ram"Semua server kecuali
ramdapat diakses. -
Gunakan pencocokan awalan path
aliyun mcp-proxy --allowed-servers "/acs/mcp-server/ecs,/acs/mcp-server/oss"Memiliki efek yang sama dengan pencocokan berbasis nama, dengan kontrol path yang lebih tepat.
Verifikasi kontrol akses
Setelah menjalankan proxy, terminal menampilkan konfigurasi kontrol akses dan status server:
MCP Proxy Server Started
Listen: 127.0.0.1:8088
Region: CN
Access Control:
Blacklist (blocked servers):
- ram
Whitelist (allowed servers):
- ecs
- oss
Available Servers:
- ecs
MCP: http://127.0.0.1:8088/acs/mcp-server/ecs/mcp
- oss
MCP: http://127.0.0.1:8088/acs/mcp-server/oss/mcp
- ram (blocked)
Permintaan yang diblokir dicatat dalam log proxy untuk troubleshooting.
Respons insiden keamanan
Jika Anda mencurigai token autentikasi proxy telah bocor atau disalahgunakan:
-
Hentikan layanan MCP Proxy.
-
Hapus file konfigurasi lokal:
rm ~/.aliyun/.mcpproxy_config. -
Cabut otorisasi OAuth di konsol Alibaba Cloud.
-
Periksa log panggilan API untuk mengidentifikasi operasi abnormal.
-
Konfigurasi ulang MCP Proxy dan hasilkan token baru.
Parameter
Perintah aliyun mcp-proxy mendukung parameter-parameter berikut.
|
Parameter |
Deskripsi |
Default |
|
|
Alamat pendengar proxy. |
|
|
|
Port pendengar proxy. |
|
|
|
Menonaktifkan pembukaan browser otomatis untuk otorisasi OAuth. Di lingkungan headless, CLI mencetak URL otorisasi ke terminal. |
Tidak diaktifkan |
|
|
Nama aplikasi OAuth yang sudah ada. Melewati pembuatan aplikasi otomatis. |
|
|
|
Situs layanan untuk server OpenAPI MCP. Nilai yang valid: |
|
|
|
Menimpa alamat default server OpenAPI MCP upstream. |
Situs Tiongkok: |
|
|
Daftar putih server MCP yang dapat diakses (dipisahkan koma). Mendukung nama server, ID, atau awalan path. Jika tidak ditentukan, semua server diizinkan. Konfigurasi kontrol akses server. |
Tidak diaktifkan |
|
|
Daftar hitam server MCP yang tidak dapat diakses (dipisahkan koma). Mendukung nama server, ID, atau awalan path. Memiliki prioritas lebih tinggi daripada daftar putih. Konfigurasi kontrol akses server. |
Tidak diaktifkan |
FAQ
Setelah menjalankan aliyun mcp-proxy untuk autentikasi OAuth, saya mendapatkan error "ERROR: OAuth flow returned empty RefreshToken". Mengapa hal ini terjadi?
Hal ini biasanya menunjukkan jenis atau identitas aplikasi OAuth yang salah. Verifikasi:
-
Jenis aplikasi OAuth yang digunakan adalah Native.
-
Anda melakukan autentikasi dengan Akun Alibaba Cloud atau pengguna RAM. Mengasumsikan Peran RAM tidak mendukung pemerolehan token penyegaran.
Error Connection Refused atau Timeout di Dify
Periksa konfigurasi berikut:
-
Tetapkan
--hostke IP Docker bridge atau IP internal host agar kontainer dapat mengakses layananmcp-proxy. -
Grup keamanan ECS atau firewall host harus mengizinkan traffic TCP dari kontainer Docker ke port proxy (misalnya,
8088).
Bagaimana cara melihat log mcp-proxy?
Untuk deployment systemd, lihat log waktu nyata dengan:
sudo journalctl -u aliyun-mcp-proxy -f