Documents
Home>Documents>AI>Agent>Xgen

MCP Station: Building a Centralized MCP Server Management Platform

7 min readOct 13, 2025Feb 22, 2026

MCP Station: Building a Unified MCP Server Management Platform

Overview

MCP Station is a platform for centrally managing MCP (Model Context Protocol) servers. It handles multiple MCP servers as discrete sessions, communicates via the JSON-RPC protocol, and is deployable with Docker.

Background

As the LLM ecosystem expanded, running multiple MCP servers simultaneously (GitHub, Slack, DB, etc.) became increasingly common. Managing each server independently was inefficient, and a centralized session manager was the obvious solution.

Architecture

┌─────────────┐     ┌──────────────────────────────────┐
│   클라이언트    │────▶│          MCP Station              │
│  (LLM Agent)  │     │  ┌────────────┐  ┌────────────┐  │
└─────────────┘     │  │ Session    │  │  Process   │  │
                     │  │ Manager    │  │  Manager   │  │
                     │  └────────────┘  └────────────┘  │
                     │  ┌────────────┐  ┌────────────┐  │
                     │  │ JSON-RPC   │  │  Config    │  │
                     │  │ Router     │  │  Manager   │  │
                     │  └────────────┘  └────────────┘  │
                     └──────────────────────────────────┘
                              │         │         │
                     ┌────────┴─┐  ┌───┴───┐  ┌──┴──────┐
                     │ MCP      │  │ MCP   │  │ MCP     │
                     │ GitHub   │  │ Slack │  │ Custom  │
                     └──────────┘  └───────┘  └─────────┘

Core Components

Session Manager: Manages the lifecycle of each MCP server session. Sessions are identified by session_name, with operations for creation, deletion, and lookup.

class SessionManager:
    def create_session(self, session_name: str, config: dict) -> SessionInfo:
        """새 MCP 세션 생성"""
        process = MCPProcess(session_name=session_name, config=config)
        process.start()
        return SessionInfo(session_name=session_name, status="running")
    
    def get_session(self, session_name: str) -> SessionInfo:
        """세션 상태 조회"""
        ...

Process Manager: Handles starting, stopping, and monitoring of the actual MCP server processes. Includes automatic restart logic on abnormal termination.

JSON-RPC Router: The MCP protocol is built on JSON-RPC 2.0. This component routes incoming client requests to the appropriate MCP server.

Commit Timeline

DateDescription
2025-09-30Project initialization, FastAPI-based architecture design
2025-10-06Session Manager implementation, JSON-RPC router added
2025-10-09Process Manager implementation, Docker Compose configuration
2025-10-13Added session_name field, session management improvements

Tech Stack

  • FastAPI: REST API server
  • JSON-RPC 2.0: MCP protocol communication
  • Docker Compose: Multi-service orchestration
  • Python asyncio: Asynchronous process management

Retrospective

It was a short project — just five commits — but it became the foundation for the MCP auto-loading feature in the subsequent Claude Control project. It gave me a much deeper understanding of the MCP protocol, and the JSON-RPC-based session management pattern in particular has been reused across several other projects.

Tags
MCPModelContextProtocolserver managementAgentPython