Skip to content

Commit e7d4a28

Browse files
committed
mime type fix for resource addition via mcp server
Signed-off-by: Satya <[email protected]>
1 parent bc5b9d4 commit e7d4a28

File tree

1 file changed

+18
-12
lines changed

1 file changed

+18
-12
lines changed

mcpgateway/services/gateway_service.py

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
import asyncio
4242
from datetime import datetime, timezone
4343
import logging
44+
import mimetypes
4445
import os
4546
import tempfile
4647
import time
@@ -621,24 +622,29 @@ async def register_gateway(
621622
# Create resource DB models
622623
db_resources = [
623624
DbResource(
624-
uri=resource.uri,
625-
name=resource.name,
626-
description=resource.description,
627-
mime_type=resource.mime_type,
628-
template=resource.template,
629-
# Federation metadata
625+
uri=r.uri,
626+
name=r.name,
627+
description=r.description,
628+
mime_type=(mime_type := (mimetypes.guess_type(r.uri)[0] or ("text/plain" if isinstance(r.content, str) else "application/octet-stream"))),
629+
template=r.template,
630+
text_content=r.content if (mime_type.startswith("text/") or isinstance(r.content, str)) and isinstance(r.content, str) else None,
631+
binary_content=(
632+
r.content.encode() if (mime_type.startswith("text/") or isinstance(r.content, str)) and isinstance(r.content, str) else r.content if isinstance(r.content, bytes) else None
633+
),
634+
size=len(r.content) if r.content else 0,
635+
tags=getattr(r, "tags", []) or [],
630636
created_by=created_by or "system",
631637
created_from_ip=created_from_ip,
632-
created_via="federation", # These are federated resources
638+
created_via="federation",
633639
created_user_agent=created_user_agent,
640+
import_batch_id=None,
634641
federation_source=gateway.name,
635642
version=1,
636-
# Inherit team assignment from gateway
637-
team_id=team_id,
638-
owner_email=owner_email,
639-
visibility=visibility,
643+
team_id=getattr(r, "team_id", None) or team_id,
644+
owner_email=getattr(r, "owner_email", None) or owner_email or created_by,
645+
visibility=getattr(r, "visibility", None) or visibility,
640646
)
641-
for resource in resources
647+
for r in resources
642648
]
643649

644650
# Create prompt DB models

0 commit comments

Comments
 (0)