Uno MCP Stdio
# Uno MCP Stdio
[](https://pypi.org/project/uno-mcp-stdio/)
[](https://www.python.org/downloads/)
[](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
Scored across 8 tools
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.
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.
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.
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.