@digitalsamba/embedded-api-mcp-server
Version:
Digital Samba Embedded API MCP Server - Model Context Protocol server for Digital Samba's Embedded API
84 lines • 4.04 kB
JavaScript
/**
* Recordings Resource Adapter
* Temporary adapter to bridge old and new patterns
*/
export function registerRecordingResources() {
return [
{
uri: "digitalsamba://recordings",
name: "recordings",
description: '[Recording Data - RESOURCE] List all recordings in your account. Use to access: "show all recordings", "list recordings", "show recordings", "list videos", "recording directory", "meeting recordings", "video library". NOT for listing rooms - use digitalsamba://rooms instead. Returns array of recording objects with status, duration, room info, and download availability.',
mimeType: "application/json",
},
{
uri: "digitalsamba://recordings/{recordingId}",
name: "recording",
description: '[Recording Data] Get detailed information about a specific recording. Use to access: "recording details", "video info", "recording metadata", "recording status", "video details". Requires recordingId. Returns complete recording data including name, duration, status, and download URLs.',
mimeType: "application/json",
},
{
uri: "digitalsamba://recordings/archived",
name: "archived-recordings",
description: '[Recording Data] List all archived recordings. Use to access: "archived recordings", "old recordings", "archived videos", "stored recordings", "recording archive". Returns recordings in archived status for long-term storage. Archived recordings may need to be unarchived before downloading.',
mimeType: "application/json",
},
{
uri: "digitalsamba://rooms/{roomId}/recordings",
name: "room-recordings",
description: '[Recording Data] List all recordings for a specific room. Use to access: "room recordings", "recordings for this room", "room video history", "meeting recordings for room", "videos from room". Requires roomId. Returns recordings filtered to that specific room with session details.',
mimeType: "application/json",
},
];
}
export async function handleRecordingResource(uri, client) {
const parts = uri.split("/");
// Handle room recordings: digitalsamba://rooms/{roomId}/recordings
if (uri.includes("/rooms/") && uri.endsWith("/recordings")) {
const roomId = parts[3];
const recordings = await client.listRecordings({ room_id: roomId });
return {
contents: recordings.data.map((rec) => ({
uri: `digitalsamba://recordings/${rec.id}`,
text: JSON.stringify(rec, null, 2),
mimeType: "application/json",
})),
};
}
// Handle archived recordings: digitalsamba://recordings/archived
if (uri.endsWith("/archived")) {
const recordings = await client.listArchivedRecordings();
return {
contents: recordings.data.map((rec) => ({
uri: `digitalsamba://recordings/${rec.id}`,
text: JSON.stringify(rec, null, 2),
mimeType: "application/json",
})),
};
}
const recordingId = parts[3];
// Handle specific recording: digitalsamba://recordings/{recordingId}
if (recordingId) {
const recording = await client.getRecording(recordingId);
return {
contents: [
{
uri: uri,
text: JSON.stringify(recording, null, 2),
mimeType: "application/json",
},
],
};
}
// Handle all recordings: digitalsamba://recordings
else {
const recordings = await client.listRecordings();
return {
contents: recordings.data.map((rec) => ({
uri: `digitalsamba://recordings/${rec.id}`,
text: JSON.stringify(rec, null, 2),
mimeType: "application/json",
})),
};
}
}
//# sourceMappingURL=recordings-adapter.js.map