MCPico
Facilitates interaction with GitHub's MCP server, enabling management of repositories, issues, pull requests, and other GitHub resources via a proxy that groups tools into subcommands.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCPicoshow available groups"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCPico
MCP proxy that bundles flat tool lists into hierarchical groups with separate discovery and execution.
MCPico (MCP + "ico" = tiny) wraps upstream MCP servers, grouping their tools into discoverable groups. Each group gets a help_<group> discovery tool (auto-generated docs from upstream schemas) and a <group> execution tool. LLM benchmarks show 43–60% fewer conversation tokens while matching flat tool success rates.
The Problem
MCP servers expose tools as a flat list. Every tool costs context tokens. A filesystem server exposes 14+ separate tools — the model sees all of them, all the time, even when it only needs one.
Some clients add "tool search" as a workaround. But searching requires the model to proactively look for tools it doesn't know exist. No structural signal about which tools relate to each other.
Related MCP server: mcp-compressor
MCPico's Solution
Group related tools under a single entry point. The model sees groups instead of raw tools. Discovery is separated from execution:
Model calls: help_postgres → sees available tools
Model calls: postgres_query {"sql":"SELECT ..."} → executesQuantified: 43–60% fewer conversation tokens
See BENCHMARK.md for a full LLM evaluation comparing flat tools (45 tools, 5 servers), MCPico merged mode, and MCPico split mode across Qwen3.5-9B and Qwen3.6-35B.
Key results:
MCPico split matches flat tool success rates on both models (2/3 tasks)
60% token reduction on 9B model (14,027 vs 34,760 tokens across all tasks)
43% token reduction on single-tool tasks with the 35B model
Features
Tool bundling — Groups tools by prefix (configurable separator), collapsing flat tool lists into 10 tools instead of 45+
Split discovery/execution — Separate
help_<group>tools for discovery,<group>tools for execution. LLM-optimized designAuto-generated help —
help_<group>tools dynamically generate rich documentation from upstream schemasMulti-server aggregation — Proxy multiple upstream MCP servers through one interface
Dual upstream transport — Supports both stdio and Streamable HTTP (SSE) upstream servers
Dual listen transport — MCPico itself listens via stdio or HTTP/SSE (configurable port)
Configurable timeouts — Per-server connection timeout with sensible default (30s)
Resource & prompt passthrough — Namespaced to avoid collisions across servers
Authentication — Bearer, custom header, and OAuth2 client_credentials with automatic token refresh
Listen endpoint auth — Protect the SSE endpoint with bearer token validation
Usage
Install
npm install -g mcpicoConfigure
Create mcpico.json:
{
"servers": [
{
"name": "filesystem",
"transport": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/allowed/dir"]
}
}
]
}Run
mcpicoConnect your MCP client
Add MCPico as a server in your MCP client config:
{
"mcpServers": {
"mcpico": {
"command": "mcpico",
"args": ["--config", "/path/to/mcpico.json"]
}
}
}How it works
Connect to upstream MCP servers
Discover their tools (
tools/list)Group tools by prefix (configurable separator, default
_)filesystem_read_file,filesystem_write_file→ groupfilesystem
Register two tools per group:
help_<group>— discovery: lists all subcommands with their parameters<group>— execution: takessubcommand+params, forwards to upstream
Forward tool calls directly to the matching upstream server
Generate help dynamically from original tool schemas
Tool interface
help_postgres ← call with no arguments to discover
postgres ← call with subcommand: "postgres_query", params: {sql: "..."}Multi-server aggregation
MCPico can proxy multiple upstream servers simultaneously:
{
"servers": [
{
"name": "filesystem",
"transport": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"]
}
},
{
"name": "github",
"transport": {
"type": "sse",
"url": "https://mcp-github.example.com/mcp"
}
}
]
}Groups from different servers are merged if they share a prefix. Otherwise each server's tools appear as separate groups.
Configuration
Field | Type | Default | Description |
|
| required | Upstream MCP servers to proxy |
|
|
| Separator for prefix-based tool grouping |
|
|
| Explicit group overrides ( |
|
|
| How MCPico exposes itself to MCP clients |
ListenConfig
Field | Type | Required | Description |
|
| yes | Standard stdio transport |
|
| yes | HTTP/SSE — specify |
// SSE listen mode — MCPico as an HTTP endpoint
{
"servers": [...],
"listen": {
"type": "sse",
"port": 3000
}
}ServerConfig
Field | Type | Required | Description |
|
| yes | Friendly name / group namespace |
|
| yes | How to connect to the upstream server |
|
| no | Connection timeout in ms (default: 30000) |
TransportConfig (stdio)
Field | Type | Required | Description |
|
| yes | Transport type |
|
| yes | Executable to spawn |
|
| no | Command-line arguments |
|
| no | Environment variables |
|
| no | Working directory |
TransportConfig (SSE / Streamable HTTP)
Field | Type | Required | Description |
|
| yes | Transport type |
|
| yes | Full URL to MCP Streamable HTTP endpoint |
Authentication
MCPico supports two layers of authentication:
Layer 1: Protecting the listen endpoint
When MCPico exposes an SSE endpoint, you can require a bearer token from clients:
{
"servers": [...],
"listen": {
"type": "sse",
"port": 3000,
"auth": {
"type": "bearer",
"token": "${MCPICO_API_KEY}"
}
}
}Clients must include Authorization: Bearer <token> in requests. Invalid or missing tokens receive a 401 response.
Layer 2: Authenticating to upstream servers
Upstream servers can require authentication. MCPico supports three methods:
Bearer token — standard Authorization: Bearer <token> header:
{
"servers": [
{
"name": "internal-api",
"transport": {
"type": "sse",
"url": "https://api.internal/mcp"
},
"auth": {
"type": "bearer",
"token": "${INTERNAL_KEY}"
}
}
]
}Custom header — arbitrary headers (e.g. X-API-Key):
{
"auth": {
"type": "header",
"name": "X-API-Key",
"value": "${WIDGET_KEY}"
}
}OAuth 2.0 client credentials — machine-to-machine authentication with automatic token refresh:
{
"auth": {
"type": "oauth",
"grant_type": "client_credentials",
"client_id": "${PROVIDER_CLIENT_ID}",
"client_secret": "${PROVIDER_CLIENT_SECRET}",
"token_url": "https://auth.example.com/oauth/token",
"scopes": ["read", "write"]
}
}MCPico handles the full OAuth flow:
Fetches initial access token on startup
Caches tokens in
~/.mcplico/credentials.jsonAutomatically refreshes before expiry
Retries on 401 with fresh tokens
All auth fields support ${ENV_VAR} interpolation — never hardcode secrets.
Auth config reference
Field | Type | Required | Description |
|
| yes | Auth method |
|
| for | Bearer token value |
|
| for | Header name |
|
| for | Header value |
|
| for | OAuth grant type |
|
| for | OAuth client ID |
|
| for | OAuth client secret |
|
| for | Token endpoint URL |
|
| no | OAuth scopes to request |
|
| no | Auth server URL (if different from token_url issuer) |
Development
Development
npm install
npm run build # TypeScript compilation
npm test # Run tests (138 tests, vitest)
npm run dev # Run directly with tsxLicense
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityDmaintenanceAn MCP-based tool orchestrator that exposes a single execute_task tool to Claude while internally managing 100+ tools through hierarchical navigation with a cheaper LLM, preventing context overflow from loading all tool definitions.Last updatedMIT
- Alicense-qualityAmaintenanceA proxy server that wraps existing MCP servers to significantly reduce token consumption by compressing tool descriptions into a two-step interface. It enables users to integrate extensive toolsets without exceeding context limits or incurring high API costs.Last updated97Apache 2.0
- Alicense-qualityDmaintenanceReduces LLM context window overhead by proxying multiple MCP servers through a few efficient dispatch tools instead of registering hundreds of individual tool schemas. It supports multi-account routing and tool discovery for both CLI-based and persistent MCP server configurations.Last updatedMIT
- Alicense-qualityAmaintenanceAggregates tools from multiple upstream MCP servers and exposes them through 4 meta-tools, enabling LLMs to discover and use hundreds of tools without loading all schemas upfront.Last updated2Apache 2.0
Related MCP Connectors
AI Reasoning Cache & Consensus Layer with 11 MCP tools via Streamable HTTP.
Hosted MCP endpoint with realistic fake data for prototyping agents. 12 tools, no setup.
Agent-native collaboration network: orchestrate a team of long-running agents from any MCP client.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/lxg2it/mcpico'
If you have feedback or need assistance with the MCP directory API, please join our Discord server