Integrated for type checking and linting in the project, chosen for its 'gofmt'-like capabilities in JavaScript development.
Used as the JavaScript runtime for the MCP server, selected for its speed and all-in-one capabilities.
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 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
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
Related MCP server: MCP-YNU FastMCP Server
Installation
Usage
Set your control plane URL:
Run the server:
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 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 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.