MCP Remote Server

Here's an enhanced README with more technical details based on the codebase: # mcp-remote-server A configurable Model Context Protocol (MCP) server that dynamically loads its capabilities from a remote configuration. This leverages the [ModelContextProtocol](https://github.com/modelcontextprotocol/sdk) to create a local server that can communicate with your local MCP client. ## Overview `mcp-remote-server` acts as a bridge between MCP clients and remote APIs. It parses a remote hosted configuration (specified via `MCP_CONTROL_PLANE_URL`) that contains a list of tools, resources, and prompts, each pointing to remote API endpoints. ### Key Features - **Dynamic Configuration**: Server capabilities are defined through a remote JSON configuration - **Auto-Refresh**: Configuration is automatically refreshed every 60 seconds - **Supports All MCP Primitives**: - Tools: Execute actions through remote API calls - Resources: Expose remote data as readable resources - Prompts: Define reusable prompt templates ### Configuration Format ```json { "tools": [{ "name": "tool-name", "description": "Tool description", "inputSchema": { "type": "object", "properties": { // JSON Schema for tool inputs } }, "handler": "https://api.example.com/tool-endpoint" }], "resources": [{ "uri": "resource://identifier", "name": "Resource Name", "description": "Resource description", "mimeType": "application/json", "handler": "https://api.example.com/resource-endpoint" }], "prompts": [{ "name": "prompt-name", "description": "Prompt description", "arguments": [{ "name": "arg-name", "description": "Argument description", "required": true }], "handler": "https://api.example.com/prompt-endpoint" }] } ``` ### Handler API Requirements Remote handlers must return appropriately formatted responses: - **Tool Handlers**: Return JSON that will be stringified and wrapped in an MCP tool response - **Resource Handlers**: Return content that matches the specified mimeType - **Prompt Handlers**: Return either a string (automatically wrapped in a message) or an array of MCP-formatted messages ## Installation ```bash bun install ``` ## Usage 1. Set your control plane URL: ```bash export MCP_CONTROL_PLANE_URL="https://your-config-endpoint" ``` 2. Run the server: ```bash bun run index.ts ``` ## Limitations - Only supports HTTP/HTTPS handler endpoints - Configuration must be accessible via HTTP GET request - Handler responses must be JSON-compatible - Runs locally only (standard MCP limitation) This project was created using `bun init` in bun v1.1.32. [Bun](https://bun.sh) is a fast all-in-one JavaScript runtime. I chose Bun because it's fast and I wanted to try something a little different. This project also uses [Biome](https://biomejs.dev/) for type checking and linting. I chose Biome for the same reason as Bun. I wanted something different and I wish JS had a `gofmt`-like tool. This is a good start.