Skip to main content
Glama
agentrix-ai

Uno MCP Stdio

by agentrix-ai
README.md
# Uno MCP Stdio

[![PyPI version](https://badge.fury.io/py/uno-mcp-stdio.svg)](https://pypi.org/project/uno-mcp-stdio/)
[![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/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

```bash
# 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:

```bash
$ 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:**

```json
{
  "mcpServers": {
    "uno": {
      "command": "uvx",
      "args": ["uno-mcp-stdio"]
    }
  }
}
```

**If installed with pip:**

```json
{
  "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`:

```json
{
  "access_token": "xxx",
  "refresh_token": "xxx",
  "expires_at": 1736345678,
  "token_type": "Bearer"
}
```

### Clear Authentication

```bash
# 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

```bash
# 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

- [English](README.md) (current)
- [δΈ­ζ–‡](README_zh.md)

TDQS

A4.1/5.0

Scored across 8 tools

Disambiguation5/5

Each tool targets a clearly distinct purpose: authentication, credits, tool search, tool execution, server connection, rating, skill search, and skill fetch. The only shared verb 'search' is split cleanly between tools and skills, with no overlap in scope or return types.

Naming Consistency4/5

All tools use the same 'uno_' prefix and snake_case, with most following a verb_noun pattern (e.g., uno_search_tools, uno_call_tool). The outlier is uno_auth, which uses a noun instead of a verb, but it remains readable and consistent in prefix style.

Tool Count5/5

Eight tools is well-scoped for a meta-MCP aggregator, covering discovery, execution, authentication, feedback, and skill management without redundancy. Each tool earns its place in the workflow.

Completeness3/5

The set covers core operations but has notable gaps: the description for uno_connect_server references an 'uno_search_servers' tool that is not present, and uno_auth lacks a logout operation. These omissions could cause agent confusion or dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues