MCP Access Point
About
Turn a web server into an MCP server in one click without making any code changes.
Details
- License
- MIT
Explore
- Protocol Conversion: Seamless conversion between HTTP and MCP protocols
- Zero-Intrusive Integration: Full compatibility with existing HTTP services
- Client Empowerment: Enables MCP clients to directly call standard HTTP services
- Lightweight Proxy: Minimalist architecture with efficient protocol conversion
- Multi-tenancy: Independent configuration and endpoints for each tenant
- Runtime Configuration Management: Dynamic configuration updates without service restart
- Admin API: RESTful API for real-time configuration management
- Real-time Configuration Updates: Modify upstreams, services, routes, and other resources on-the-fly
- Dependency Validation: Automatic validation of resource dependencies before changes
- Batch Operations: Execute multiple configuration changes atomically
- Configuration Validation: Dry-run mode to validate changes before applying
- Resource Statistics: Monitor and track configuration state
Setting up with Highlight
This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
MCP Access PointCommand (node, npx, python, etc.)Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
git clone https://github.com/sxhxliang/mcp-access-point.git
cd mcp-access-point
cargo run -- -c config.yaml
mcps:
- id: service-1 # Access via /api/service-1/sse or /api/service-1/mcp
... # Service configuration
- id: service-2 # Access via /api/service-2/sse or /api/service-2/mcp
... # Service configuration
- id: service-3 # Access via /api/service-3/sse or /api/service-3/mcp
... # Service configuration
To access all services simultaneously, use:
-
0.0.0.0:8080/mcp (Streamable HTTP)-
0.0.0.0:8080/sse (SSE)
1. -c config.yaml
- -c (or --config) specifies the configuration file path (config.yaml).
- This file defines the APIs that the MCP Access Point will proxy and convert.
The configuration file supports multi-tenancy, allowing independent configuration of upstream services and routing rules for each MCP service. Key configuration items include:
1. mcps - MCP service list
- id: Unique service identifier used to generate access paths
- upstream_id: Associated upstream service ID
- path: OpenAPI specification file path. Supports local files (e.g., config/openapi.json) and remote HTTP/HTTPS URLs (e.g., https://petstore.swagger.io/v2/swagger.json). Both JSON and YAML formats are supported.
- routes: Custom routing configuration (optional)
- upstream: Upstream service specific configuration (optional)
2. upstreams - Upstream service configuration
- id: Upstream service ID
- nodes: Backend node addresses and weights
- type: Load balancing algorithm (roundrobin/random/ip_hash)
- scheme: Upstream protocol (http/https)
- pass_host: HTTP Host header handling
- upstream_host: Override Host header value
Complete configuration example:
bash
docker run -d --name mcp-access-point --rm \
-p 8080:8080 \
-e port=8080 \
-v /path/to/your/config.yaml:/app/config/config.yaml \
ghcr.io/sxhxliang/mcp-access-point:main
- port: MCP Access Point listening port (default: 8080)
The MCP Access Point now supports dynamic configuration management through a RESTful Admin API, allowing you to update configurations without restarting the service.
Add the following to your config.yaml to enable the Admin API:
yamlaccess_point:
admin:
address: "127.0.0.1:8081" # Admin API listening address
api_key: "your-api-key" # Optional API key for authentication
bash
curl -X POST http://localhost:8081/admin/reload/config \
-H "Content-Type: application/json" \
-H "x-api-key: your-api-key"
curl -X POST http://localhost:8081/admin/reload/config \
-H "Content-Type: application/json" \
-H "x-api-key: your-api-key" \
-d '{"config_path": "./config.yaml"}'
```
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"mcp access point": {
"mcp-access-point": {
"command": "npx",
"args": [
"@modelcontextprotocol/inspector",
"node",
"build/index.js"
]
}
}
}
}
McpServers
{
"mcp-access-point": {
"command": "npx",
"args": [
"@modelcontextprotocol/inspector",
"node",
"build/index.js"
]
}
}
MCP Access Point is a lightweight protocol conversion gateway tool designed to establish a communication bridge between traditional HTTP services and MCP (Model Context Protocol) clients. It enables MCP clients to interact directly with existing HTTP services without requiring any server-side interface modifications.
<p align="center">
<a href="./README.md">
Introduction
This project is built onPingora - an ultra-high performance gateway proxy library capable of supporting massive-scale request proxy services. Pingora has been used to build services that handle core traffic for the Cloudflare platform, consistently serving over 40 million requests per second across the internet for years. It has become the technical cornerstone supporting a significant proportion of traffic on the Cloudflare platform.
HTTP to MCP
This mode allows clients likeCursor Desktop to communicate with remote HTTP servers through SSE, even when the servers themselves don't support the SSE protocol.
- Example setup includes two services:
- Service 1 runs locally at 127.0.0.1:8090
- Service 2 runs remotely at api.example.com
- Through the MCP Access Point, both services can be converted to MCP services without any code modifications.
- Clients communicate with Service 1 and Service 2 via the MCP protocol. The MCP Access Point automatically distinguishes MCP requests and forwards them to the appropriate backend services.
``mermaid
graph LR
A["Cursor Desktop"] <--> |SSE| B["MCP Access Point"]
A2["Other Desktop"] <--> |Streamable Http| B["MCP Access Point"]
B <--> |http 127.0.0.1:8090| C1["Existing API Server"]
B <--> |https//api.example.com| C2["Existing API Server"]
style A2 fill:#ffe6f9,stroke:#333,color:black,stroke-width:2px
style A fill:#ffe6f9,stroke:#333,color:black,stroke-width:2px
style B fill:#e6e6af,stroke:#333,color:black,stroke-width:2px
style C1 fill:#e6ffe6,stroke:#333,color:black,stroke-width:2px
style C2 fill:#e6ffd6,stroke:#333,color:black,stroke-width:2px
`
Transport Type (Specification)
Currently supports SSE and Streamable HTTP protocols:
- ✅ Streamable HTTP (stateless) 2025-03-26
- All services: ip:port/mcp
- Single service: ip:port/api/{service_id}/mcp
- ✅ SSE 2024-11-05
- All services: ip:port/sse
- Single service: ip:port/api/{service_id}/sse
use IP:PORT/sse for SSE
use IP:PORT/mcp for Streamable HTTP
Supported MCP clients
- ✅ MCP Inspector
- ✅ Cursor Desktop
- ✅ Windsurf
- ✅ VS Code
- ✅ Trae
Core Features
- Protocol Conversion: Seamless conversion between HTTP and MCP protocols
- Zero-Intrusive Integration: Full compatibility with existing HTTP services
- Client Empowerment: Enables MCP clients to directly call standard HTTP services
- Lightweight Proxy: Minimalist architecture with efficient protocol conversion
- Multi-tenancy: Independent configuration and endpoints for each tenant
- Runtime Configuration Management: Dynamic configuration updates without service restart
- Admin API: RESTful API for real-time configuration management
Quick Start
Installation
``bashSign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.



