Skip to main content

Uno MCP Stdio

PyPI version Python 3.11+ License: MIT

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:

  1. Communicates with MCP clients using stdio mode (supported by all clients)
  2. Securely stores OAuth tokens locally
  3. 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)

Source distribution for uno-mcp-stdio 0.2.1
File Size Uploaded
uno_mcp_stdio-0.2.1.tar.gz 22.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for uno-mcp-stdio 0.2.1
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

0.2.1 This release

2 release files

0.2.0

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page