Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 15 additions & 5 deletions backend/routers/mcp.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,19 @@
import aiohttp
from fastapi import APIRouter, Request, Depends
from fastapi.responses import Response, JSONResponse
from fastapi import APIRouter, Body, Depends
from fastapi.responses import JSONResponse, Response
from backend.middleware.auth import require_auth
from backend.services.mcp_service import mcp_proxy, list_mcp_servers
from backend.services.mcp_service import list_mcp_servers, mcp_proxy

router = APIRouter()

EXAMPLE_TOOLS_LIST = {"jsonrpc": "2.0", "id": 1, "method": "tools/list", "params": {}}
EXAMPLE_TOOL_CALL = {
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {"name": "add", "arguments": {"a": 7, "b": 13}},
}


@router.get("/v1/mcp")
async def get_mcp_servers(token: str = Depends(require_auth)):
Expand All @@ -16,10 +24,12 @@ async def get_mcp_servers(token: str = Depends(require_auth)):
async def mcp_endpoint(
owner: str,
repo: str,
request: Request,
payload: dict = Body(..., examples=[EXAMPLE_TOOLS_LIST, EXAMPLE_TOOL_CALL]),
token: str = Depends(require_auth),
):
body = await request.body()
import json

body = json.dumps(payload).encode()
try:
data, status = await mcp_proxy(owner, repo, body)
return Response(
Expand Down
Loading