Uno MCP Stdio
Local stdio proxy for Uno MCP Gateway - Provides local proxy for MCP clients that don't support OAuth authentication.
🎯 Problem Solved
Many MCP clients (such as Manus, Cherry Studio) don't support OAuth 2.0 authentication and cannot directly connect to MCP servers that require authentication.
uno-mcp-stdio acts as a local proxy:
- Communicates with MCP clients using stdio mode (supported by all clients)
- Securely stores OAuth tokens locally
- Proxies requests to remote Uno Gateway, automatically attaching authentication information
┌─────────────────┐ stdio ┌─────────────────┐ HTTPS ┌─────────────────┐
│ MCP Client │ ◄────────────► │ uno-mcp-stdio │ ◄────────────► │ Uno Gateway │
│ (No OAuth) │ │ (Local Proxy) │ + Bearer │ (Remote) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
🚀 Quick Start
Installation
# Run directly with uvx (recommended)
uvx uno-mcp-stdio
# Or install with pip
pip install uno-mcp-stdio
uno-mcp-stdio
First Run
OAuth authentication is required on first run:
$ uvx uno-mcp-stdio
🔐 Authentication required
📋 Please open the following link in your browser to complete authentication:
https://mcpmarket.cn/oauth/authorize?...
⏳ Waiting for authentication...
✅ Authentication successful! Token saved
🚀 Uno MCP Stdio is ready
Configure MCP Client
Configure stdio server in your MCP client:
Manus / Cherry Studio Configuration Example:
{
"mcpServers": {
"uno": {
"command": "uvx",
"args": ["uno-mcp-stdio"]
}
}
}
If installed with pip:
{
"mcpServers": {
"uno": {
"command": "uno-mcp-stdio"
}
}
}
⚙️ Configuration
Environment Variables
| Variable | Description | Default |
|---|---|---|
UNO_GATEWAY_URL |
Uno Gateway URL | https://uno.mcpmarket.cn/mcp |
UNO_CREDENTIALS_PATH |
Token storage path | ~/.uno-mcp/credentials.json |
UNO_DEBUG |
Debug mode | false |
Token Storage
Authenticated tokens are stored in ~/.uno-mcp/credentials.json:
{
"access_token": "xxx",
"refresh_token": "xxx",
"expires_at": 1736345678,
"token_type": "Bearer"
}
Clear Authentication
# Delete token file to re-authenticate
rm ~/.uno-mcp/credentials.json
🔐 Authentication Flow
1. Start uno-mcp-stdio
│
▼
2. Check ~/.uno-mcp/credentials.json
│
├─ Valid token → Proxy requests directly
│
└─ No/expired token → Start authentication flow
│
▼
3. Start temporary HTTP server (localhost:random port)
│
▼
4. Generate OAuth URL, display to user
│
▼
5. User completes authorization in browser
│
▼
6. MCPMarket callback to local server
│
▼
7. Exchange token, save to file
│
▼
8. Close temporary server, start proxying
🛠️ Development
# Clone repository
git clone https://github.com/agentrix-ai/uno-mcp-stdio.git
cd uno-mcp-stdio
# Install dependencies
uv sync
# Run
uv run uno-mcp-stdio
# Debug mode
UNO_DEBUG=true uv run uno-mcp-stdio
📄 License
MIT
🌐 Languages
Release files for uno-mcp-stdio 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| uno_mcp_stdio-0.2.1.tar.gz | 22.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| uno_mcp_stdio-0.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 45.3 kB
Release files / uno_mcp_stdio-0.2.1.tar.gz
| Download URL | uno_mcp_stdio-0.2.1.tar.gz |
|---|---|
| Size | 22.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4ad9fc35772ea28a69577890b01e2c0c0ff463c4546aa287acb9f20fcedeaa4e
|
|
BLAKE2b-256 checksum How to use checksums |
352870b9bd3143592fffbc54a5bb565292892c5cb558f2d9e2520075aa602645
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.9
|
Release files / uno_mcp_stdio-0.2.1-py3-none-any.whl
| Download URL | uno_mcp_stdio-0.2.1-py3-none-any.whl |
|---|---|
| Size | 22.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ee75bc6da1364b1e5160211d8bc3b889a1690a9d8bcd634e03cb89d34bdf0f91
|
|
BLAKE2b-256 checksum How to use checksums |
f13d6f5b2732b9e6c104772281ff78dcc1e0b982493c3dcaa9a7046efa9c5509
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.9
|