diff --git a/mcp-gateway/OPENAI_INTEGRATION.md b/mcp-gateway/OPENAI_INTEGRATION.md deleted file mode 100644 index 4efd9d1..0000000 --- a/mcp-gateway/OPENAI_INTEGRATION.md +++ /dev/null @@ -1,159 +0,0 @@ -# OpenAI-Compatible Integration for MCP Gateway - -This guide shows how to add OpenAI-compatible endpoints to your MCP Gateway so Open-UI and other OpenAI clients can use your MCP tools. - -## Quick Setup (2 steps) - -### Step 1: Import the OpenAI routes in `gateway-proxy/gateway_proxy.py` - -At the top of the file, add: - -```python -from openai_routes import chat_completions, list_models -``` - -### Step 2: Add the routes to your Starlette app - -In the `app = Starlette(routes=[...])` section, add these routes before the closing bracket: - -```python - # OpenAI-compatible endpoints - Route("/v1/models", list_models, methods=["GET"]), - Route("/v1/chat/completions", chat_completions, methods=["POST"]), -``` - -So your routes section should look like: - -```python -app = Starlette( - routes=[ - # Well-known discovery (Claude tries both with and without /mcp suffix) - Route("/.well-known/oauth-protected-resource", well_known_protected_resource, methods=["GET"]), - Route("/.well-known/oauth-protected-resource/mcp", well_known_protected_resource, methods=["GET"]), - Route("/.well-known/oauth-authorization-server", well_known_oauth_authorization_server, methods=["GET"]), - Route("/.well-known/oauth-authorization-server/mcp", well_known_oauth_authorization_server, methods=["GET"]), - Route("/.well-known/openid-configuration", well_known_oauth_authorization_server, methods=["GET"]), - - # OAuth endpoints at /oauth/* (spec-standard) - Route("/oauth/register", oauth_register, methods=["POST"]), - Route("/oauth/authorize", oauth_authorize, methods=["GET", "POST"]), - Route("/oauth/token", oauth_token, methods=["POST"]), - - # OAuth endpoints at root (Claude may construct these from base URL) - Route("/register", oauth_register, methods=["POST"]), - Route("/authorize", oauth_authorize, methods=["GET", "POST"]), - Route("/token", oauth_token, methods=["POST"]), - - # MCP endpoint (OAuth-protected) - Route("/mcp", handle_mcp, methods=["GET", "HEAD", "POST", "DELETE"]), - - # OpenAI-compatible endpoints - Route("/v1/models", list_models, methods=["GET"]), - Route("/v1/chat/completions", chat_completions, methods=["POST"]), - - # Monitoring - Route("/health", health, methods=["GET"]), - Route("/status", status, methods=["GET"]), - ], - lifespan=lifespan, -) -``` - -## Configuration - -Update the route handler to pass required parameters. In `gateway_proxy.py`, modify the route definitions: - -```python -from functools import partial - -# Near the top where other routes are defined: -chat_completions_handler = partial( - chat_completions, - mcp_gateway_url="http://localhost:4444/mcp", - access_tokens=ACCESS_TOKENS -) - -list_models_handler = partial( - list_models, - gateway_config={"backends": BACKENDS} -) -``` - -Then update the routes: - -```python - Route("/v1/models", list_models_handler, methods=["GET"]), - Route("/v1/chat/completions", chat_completions_handler, methods=["POST"]), -``` - -## Using with Open-UI - -Once integrated and running: - -1. **Gateway URL**: `https://mcp.wilddragon.net` (or your gateway URL) -2. **API Base URL in Open-UI**: `https://mcp.wilddragon.net/v1` -3. **Model**: `mcp-gateway` -4. **Bearer Token**: Use your generated token - -### In Open-UI Admin Panel: - -1. Go to Admin → Settings → Connections -2. Scroll to "Direct Connections" -3. Add new direct connection: - - **API Base URL**: `https://mcp.wilddragon.net/v1` - - **API Key**: Your bearer token - -## API Endpoints - -### `GET /v1/models` -List available models. Returns the MCP Gateway as a model option. - -**Example:** -```bash -curl -H "Authorization: Bearer YOUR_TOKEN" \ - https://mcp.wilddragon.net/v1/models -``` - -### `POST /v1/chat/completions` -OpenAI-compatible chat completions endpoint. - -**Example:** -```bash -curl -X POST \ - -H "Authorization: Bearer YOUR_TOKEN" \ - -H "Content-Type: application/json" \ - -d '{ - "model": "mcp-gateway", - "messages": [ - {"role": "user", "content": "What tools are available?"} - ] - }' \ - https://mcp.wilddragon.net/v1/chat/completions -``` - -## What's Currently Supported - -✅ **Available tools listing** - Shows all available MCP tools -✅ **Bearer token authentication** - Uses your existing OAuth tokens -✅ **Streaming responses** - OpenAI-compatible streaming format -✅ **Standard OpenAI request/response format** - -## Next Steps (Optional Enhancements) - -1. **Tool Calling**: Implement actual tool execution via MCP -2. **System Prompts**: Add custom system prompts for tool use -3. **Session Management**: Preserve MCP session state across requests -4. **Error Handling**: More detailed error messages for tool failures - -## Troubleshooting - -**"Unauthorized" error**: Make sure your bearer token is valid. Check that it's in `ACCESS_TOKENS` on the gateway. - -**"No user message found"**: Ensure the request includes at least one message with role `"user"`. - -**Tools not showing**: Check that your MCP backends are initialized and responding to `tools/list` requests. - -## Files - -- `gateway-proxy/openai_routes.py` - OpenAI-compatible route handlers -- `openai_adapter.py` - Adapter class (optional, for more advanced usage)