|
1 | 1 | import { Hono } from 'hono';
|
| 2 | +import axios from 'axios'; |
2 | 3 | import { createSupabaseMcpServer } from '../server.js';
|
3 | 4 | import { StatelessHttpServerTransport } from '@supabase/mcp-utils';
|
4 | 5 | import { serve } from '@hono/node-server';
|
@@ -85,42 +86,19 @@ app.delete('/mcp', async (c) => {
|
85 | 86 | );
|
86 | 87 | });
|
87 | 88 |
|
88 |
| -const oauthMetadata = { |
89 |
| - issuer: `${managementApiUrl}`, |
90 |
| - authorization_endpoint: `${managementApiUrl}/v1/oauth/authorize`, |
91 |
| - token_endpoint: `${managementApiUrl}/v1/oauth/token`, |
92 |
| - registration_endpoint: `${managementApiUrl}/platform/oauth/apps/register`, |
93 |
| - token_endpoint_auth_methods_supported: ['client_secret_post'], |
94 |
| - scopes_supported: [ |
95 |
| - 'analytics:read', |
96 |
| - 'analytics:write', |
97 |
| - 'auth:read', |
98 |
| - 'auth:write', |
99 |
| - 'database:read', |
100 |
| - 'database:write', |
101 |
| - 'domains:read', |
102 |
| - 'domains:write', |
103 |
| - 'edge_functions:read', |
104 |
| - 'edge_functions:write', |
105 |
| - 'environment:read', |
106 |
| - 'environment:write', |
107 |
| - 'organizations:read', |
108 |
| - 'organizations:write', |
109 |
| - 'projects:read', |
110 |
| - 'projects:write', |
111 |
| - 'rest:read', |
112 |
| - 'rest:write', |
113 |
| - 'secrets:read', |
114 |
| - 'secrets:write', |
115 |
| - 'storage:read', |
116 |
| - 'storage:write', |
117 |
| - ], |
118 |
| - response_types_supported: ['code'], |
119 |
| - response_modes_supported: ['query'], |
120 |
| - grant_types_supported: ['authorization_code', 'refresh_token'], |
121 |
| - code_challenge_methods_supported: ['S256'], |
| 89 | +const fetchOauthMetadata = async () => { |
| 90 | + const response = await axios.get( |
| 91 | + `${managementApiUrl}/.well-known/oauth-authorization-server` |
| 92 | + ); |
| 93 | + if (response.status != 200) { |
| 94 | + throw new Error('Failed to fetch OAuth metadata'); |
| 95 | + } |
| 96 | + |
| 97 | + return response.data; |
122 | 98 | };
|
123 | 99 |
|
| 100 | +const oauthMetadata = await fetchOauthMetadata(); |
| 101 | + |
124 | 102 | const protectedResourceMetadata = {
|
125 | 103 | resource: `http://localhost:${port}`, // "https://api.supabase.io/mcp",
|
126 | 104 | authorization_servers: [oauthMetadata.issuer],
|
|
0 commit comments