Enables cloud-based AI services to access local Stdio based MCP servers
███╗ ███╗ ██████╗██████╗ ██████╗ ██████╗ ███╗ ██╗███╗ ██╗███████╗ ██████╗████████╗
████╗ ████║██╔════╝██╔══██╗ ██╔════╝██╔═══██╗████╗ ██║████╗ ██║██╔════╝██╔════╝╚══██╔══╝
██╔████╔██║██║ ██████╔╝ ██║ ██║ ██║██╔██╗ ██║██╔██╗ ██║█████╗ ██║ ██║
██║╚██╔╝██║██║ ██╔═══╝ ██║ ██║ ██║██║╚██╗██║██║╚██╗██║██╔══╝ ██║ ██║
██║ ╚═╝ ██║╚██████╗██║ ╚██████╗╚██████╔╝██║ ╚████║██║ ╚████║███████╗╚██████╗ ██║
╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═══╝╚═╝ ╚═══╝╚══════╝ ╚═════╝ ╚═╝
The Model Context Protocol (MCP) introduced by Anthropic is cool. However, most MCP servers are built on Stdio transport, which, while excellent for accessing local resources, limits their use in cloud-based applications.
MCP Connect is a tiny tool that is created to solve this problem:
By bridging this gap, we can leverage the full potential of local MCP tools in cloud-based AI applications without compromising on security.
+-----------------+ HTTPS/SSE +------------------+ stdio +------------------+
| | | | | |
| Cloud AI tools | <---------------> | Node.js Bridge | <------------> | MCP Server |
| (Remote) | Tunnels | (Local) | | (Local) |
| | | | | |
+-----------------+ +------------------+ +------------------+
git clone https://github.com/EvalsOne/MCP-connect.git
and enter the directory
cd MCP-connect
.env.example
to .env
and configure the port and auth_token:
cp .env.example .env
npm install
# build MCP Connect
npm run build
# run MCP Connect
npm run start
# or, run in dev mode (supports hot reloading by nodemon)
npm run dev
Now MCP connect should be running on http://localhost:3000/bridge
.
Note:
MCP Connect has built-in support for Ngrok tunnel. To run the bridge with a public URL using Ngrok:
NGROK_AUTH_TOKEN=your_ngrok_auth_token
# Production mode with tunnel
npm run start:tunnel
# Development mode with tunnel
npm run dev:tunnel
After MCP Connect is running, you can see the MCP bridge URL in the console.
After MCP Connect is running, there are two endpoints exposed:
GET /health
: Health check endpointPOST /bridge
: Main bridge endpoint for receiving requests from the cloudFor example, the following is a configuration of the official GitHub MCP:
{
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-github"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "<your_github_personal_access_token>"
}
}
You can send a request to the bridge as the following to list the tools of the MCP server and call a specific tool.
Listing tools:
curl -X POST http://localhost:3000/bridge \
-d '{
"method": "tools/list",
"serverPath": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-github"
],
"params": {},
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "<your_github_personal_access_token>"
}
}'
Calling a tool:
Using the search_repositories tool to search for repositories related to modelcontextprotocol
curl -X POST http://localhost:3000/bridge \
-d '{
"method": "tools/call",
"serverPath": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-github"
],
"params": {
"name": "search_repositories",
"arguments": {
"query": "modelcontextprotocol"
},
},
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "<your_github_personal_access_token>"
}
}'
MCP Connect uses a simple token-based authentication system. The token is stored in the .env
file. If the token is set, MCP Connect will use it to authenticate the request.
Sample request with token:
curl -X POST http://localhost:3000/bridge \
-H "Authorization: Bearer <your_auth_token>" \
-d '{
"method": "tools/list",
"serverPath": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-github"
],
"params": {},
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "<your_github_personal_access_token>"
}
}'
Required environment variables:
AUTH_TOKEN
: Authentication token for the bridge API (Optional)PORT
: HTTP server port (default: 3000, required)LOG_LEVEL
: Logging level (default: info, required)NGROK_AUTH_TOKEN
: Ngrok auth token (Optional)The following is a demo of using MCP Connect to access a local MCP Server on ConsoleX AI:
MIT License