stdio-to-http mcp protocol bridging with transparent request forwarding
Implements a bidirectional Model Context Protocol proxy that accepts stdio connections from local MCP clients (Claude Desktop, Cursor, etc.) and transparently forwards all tool calls over Streamable HTTP to a remote OP.GG MCP endpoint at https://mcp-api.op.gg/mcp. Uses StdioServerTransport for local consumer communication and StreamableHTTPClientTransport for outbound HTTP, with dynamic capability discovery at startup to mirror remote tools into the local server's tool registry without hardcoding tool definitions.
Unique: Uses dynamic capability discovery at startup (reads serverCapabilities from remote endpoint) and conditionally registers request/notification handlers on the local MCP Server, enabling the proxy to work with any remote MCP endpoint without hardcoding tool definitions. This contrasts with static tool registries that require rebuilding when upstream tools change.
vs alternatives: Simpler than building custom HTTP client integrations in each AI framework because it leverages standard MCP protocol, making it compatible with any stdio-based MCP client without modification.
league of legends champion and summoner data querying with field-level filtering
Exposes 15 tools for querying League of Legends game data including champion statistics, summoner profiles, match history, resource guides, pro player stats, and esports schedules. Each tool accepts a desired_output_fields parameter to filter response payloads at the API level, reducing bandwidth and token consumption by excluding unnecessary fields. Tools are prefixed with 'lol_' and cover champion analytics, summoner rank/win rates, match timelines, and competitive esports data.
Unique: Implements field-level response filtering via desired_output_fields parameter, allowing clients to specify exactly which data fields to return. This reduces payload size by excluding unnecessary fields at the API level rather than post-processing, which is particularly valuable for token-constrained LLM contexts where every byte matters.
vs alternatives: More efficient than generic League APIs (Riot's official API, third-party REST endpoints) because it provides pre-computed meta analytics (win rates, pick rates, build recommendations) rather than raw match data, reducing the computation burden on the client side.
installation and deployment via smithery, npm, or docker
Supports three deployment methods: (1) Smithery configuration via smithery.yaml for automated process spawning, (2) manual npm/npx invocation (npx opgg-mcp or node dist/index.js), and (3) Docker deployment for containerized environments. All methods ultimately execute dist/index.js as a local stdio MCP server process. Enables flexible deployment across different environments (local development, CI/CD pipelines, containerized infrastructure) without code changes.
Unique: Supports three distinct deployment methods (Smithery, npm/npx, Docker) from a single codebase, enabling flexible deployment across different environments and use cases. This multi-method approach reduces friction for different deployment scenarios compared to single-method-only tools.
vs alternatives: More flexible than tools supporting only one deployment method because it accommodates Smithery-based orchestration, manual npm invocation, and containerized deployments without code changes.
teamfight tactics meta composition and augment analysis with play style filtering
Provides 6 tools for querying Teamfight Tactics (TFT) game data including meta deck compositions, item builds, augment recommendations, and play style classifications. Tools are prefixed with 'tft_' and return structured data about optimal team compositions for the current TFT set, itemization strategies, and augment synergies. Supports filtering by play style (e.g., 'aggressive', 'control', 'economy') and rank tier to surface meta-relevant recommendations.
Unique: Organizes meta data by play style (aggressive, control, economy) rather than just raw win rates, enabling AI agents to recommend compositions that match player preferences and game state. This contextual filtering is rarely exposed in generic TFT APIs, which typically return only statistical aggregates.
vs alternatives: Provides pre-computed meta compositions and augment synergies rather than requiring clients to aggregate raw match data, making it significantly faster for real-time coaching use cases compared to building custom analytics on top of raw TFT match APIs.
valorant agent, map, and leaderboard data retrieval with region-specific filtering
Exposes 6 tools for querying Valorant competitive data including agent statistics (pick rates, win rates, ban rates), map-specific meta, leaderboard rankings, and player match history. Tools are prefixed with 'valorant_' and support filtering by region (NA, EU, APAC, etc.) and rank tier to surface region-specific meta variations. Returns structured data about agent viability, map-specific strategies, and competitive player rankings.
Unique: Supports region-specific meta filtering (NA, EU, APAC, etc.), recognizing that Valorant competitive scenes have distinct agent preferences and strategies by region. This regional decomposition is rarely exposed in generic Valorant APIs, which typically aggregate global data.
vs alternatives: Provides pre-computed agent meta and leaderboard rankings rather than requiring clients to aggregate raw match data, making it significantly faster for competitive analysis compared to building custom analytics on top of raw Valorant match APIs.
esports schedule and tournament data aggregation across multiple games
Aggregates esports schedule, team roster, and tournament data across League of Legends, Teamfight Tactics, and Valorant competitive scenes. Returns structured data about upcoming matches, team information, player rosters, tournament brackets, and historical match results. Supports filtering by game title, region, and tournament tier (e.g., regional leagues, international events). Data is updated periodically as tournaments progress.
Unique: Aggregates esports data across three distinct games (League of Legends, TFT, Valorant) under a unified tool interface, allowing single queries to span multiple competitive scenes. Most esports APIs are game-specific; this unified approach reduces integration complexity for multi-game esports platforms.
vs alternatives: Consolidates esports schedules and rosters from multiple games into a single MCP interface, eliminating the need to integrate separate APIs for each game's esports data.
dynamic mcp capability discovery and tool registry mirroring at startup
At startup, the proxy fetches serverCapabilities from the remote OP.GG MCP endpoint and dynamically registers corresponding request/notification handlers on the local MCP Server. This enables the proxy to work with any remote MCP endpoint without hardcoding tool definitions. When the remote endpoint adds, removes, or modifies tools, the local proxy automatically reflects these changes on the next startup without code changes. Implementation reads capabilities once at initialization and conditionally registers handlers based on what the remote server advertises.
Unique: Uses dynamic capability discovery at startup (reads serverCapabilities from remote endpoint) and conditionally registers handlers, eliminating the need for hardcoded tool definitions. This contrasts with static tool registries that require code changes when upstream tools change. Implementation in src/proxy-server.ts reads capabilities once and registers handlers based on what the remote server advertises.
vs alternatives: More maintainable than static tool registries because upstream tool changes are automatically reflected without proxy code modifications, reducing synchronization burden compared to manually-maintained tool definitions.
response payload optimization via field-level filtering at api boundary
All 27 tools across League of Legends, Teamfight Tactics, and Valorant support a desired_output_fields parameter that filters response payloads at the remote API level. Clients specify which fields to include in the response (e.g., ['winRate', 'pickRate', 'banRate']), and the remote endpoint returns only those fields, reducing payload size and token consumption. This filtering happens server-side before the response is transmitted back through the proxy, minimizing bandwidth usage and LLM context overhead.
Unique: Implements server-side field filtering at the remote API boundary, allowing clients to specify exactly which response fields to include. This reduces payload size before transmission, contrasting with client-side filtering that requires transmitting the full response and then discarding unwanted fields.
vs alternatives: More efficient than client-side filtering because it reduces payload size at the source, saving bandwidth and token consumption compared to receiving full responses and filtering locally.
+3 more capabilities