Skip to main content
Glama
ranit532

MCP Server POC

by ranit532

MCP Server POC

A cutting-edge Proof of Concept (POC) implementation of a Model Context Protocol (MCP) server using Python and modern technologies. This server provides tools and resources that can be accessed by AI assistants and other MCP clients.

๐Ÿ—๏ธ Architecture

The MCP Server follows a modular architecture with clear separation of concerns:

graph TB
    subgraph "Client Layer"
        AI[AI Assistant/Client]
        CLI[CLI Client]
    end
    
    subgraph "Transport Layer"
        STDIO[STDIO Transport]
        HTTP[HTTP Transport - Future]
    end
    
    subgraph "MCP Server Core"
        SERVER[MCP Server Instance]
        HANDLER[Request Handler]
        TOOLS[Tools Registry]
        RESOURCES[Resources Registry]
    end
    
    subgraph "Tool Implementations"
        CALC[Calculate Tool]
        FETCH[Fetch URL Tool]
        SYSINFO[System Info Tool]
        PROCESS[Process Data Tool]
        FILE[File Operations Tool]
    end
    
    subgraph "Resource Providers"
        FILE_RES[File Resources]
        CONFIG_RES[Config Resources]
    end
    
    subgraph "External Services"
        HTTP_API[HTTP APIs]
        FILE_SYS[File System]
    end
    
    AI --> STDIO
    CLI --> STDIO
    STDIO --> SERVER
    SERVER --> HANDLER
    HANDLER --> TOOLS
    HANDLER --> RESOURCES
    TOOLS --> CALC
    TOOLS --> FETCH
    TOOLS --> SYSINFO
    TOOLS --> PROCESS
    TOOLS --> FILE
    RESOURCES --> FILE_RES
    RESOURCES --> CONFIG_RES
    FETCH --> HTTP_API
    FILE --> FILE_SYS
    FILE_RES --> FILE_SYS

Workflow Diagram

sequenceDiagram
    participant Client
    participant Transport
    participant Server
    participant Tool
    participant Resource
    
    Client->>Transport: Initialize Connection
    Transport->>Server: Connection Established
    Client->>Server: List Tools Request
    Server->>Client: Tools List Response
    Client->>Server: List Resources Request
    Server->>Client: Resources List Response
    Client->>Server: Call Tool Request
    Server->>Tool: Execute Tool
    Tool->>Server: Tool Result
    Server->>Client: Tool Response
    Client->>Server: Read Resource Request
    Server->>Resource: Fetch Resource
    Resource->>Server: Resource Data
    Server->>Client: Resource Response

๐Ÿš€ Features

  • Modern Python Stack: Built with Python 3.10+ and async/await patterns

  • Type Safety: Full type hints with Pydantic models

  • High Performance: Uses uvloop for enhanced async performance

  • Comprehensive Tools: Multiple example tools demonstrating various capabilities

  • Resource Management: File and configuration resource providers

  • Testing: Complete test suite with pytest

  • Configuration: Environment-based configuration management

๐Ÿ“‹ Prerequisites

  • Python 3.10 or higher

  • pip or poetry for package management

  • Git (for cloning the repository)

๐Ÿ› ๏ธ Installation

Step 1: Clone the Repository

git clone <repository-url>
cd MCP-server

Step 2: Create Virtual Environment

# Using venv
python3 -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Or using conda
conda create -n mcp-server python=3.10
conda activate mcp-server

Step 3: Install Dependencies

# Using pip
pip install -r requirements.txt

# For development (includes testing tools)
pip install -r requirements-dev.txt

# Or using poetry (if you prefer)
poetry install

Step 4: Configure Environment

# Copy example environment file
cp .env.example .env

# Edit .env file with your settings (optional)
# nano .env

๐Ÿงช Testing

Run All Tests

pytest

Run Tests with Coverage

pytest --cov=src --cov-report=html

Run Specific Test

pytest tests/test_server.py::test_calculate_tool -v

๐ŸŽฏ Usage

Running the Server

Method 1: Direct Python Execution

python -m src.server

Method 2: Using the Script

python scripts/run_server.py

Method 3: As a Module

python -m src.server

Example Client Usage

Run the example client to see the server in action:

python examples/example_client.py

Available Tools

The server provides the following tools:

  1. calculate: Perform mathematical calculations

    • Input: {"expression": "2 + 2"}

    • Output: Calculation result

  2. fetch_url: Fetch content from URLs

    • Input: {"url": "https://example.com", "method": "GET"}

    • Output: HTTP response content

  3. get_system_info: Get system information

    • Input: {}

    • Output: System details and environment variables

  4. process_data: Process and transform data

    • Input: {"data": "hello", "operation": "uppercase"}

    • Operations: reverse, uppercase, lowercase, count

  5. write_file: Write content to files

    • Input: {"filepath": "output.txt", "content": "Hello World"}

    • Output: Confirmation message

Available Resources

  1. Example File: file://example.txt - Example file resource

  2. Server Configuration: config://server-config - Current server configuration

๐Ÿ“ Project Structure

MCP-server/
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ __init__.py          # Package initialization
โ”‚   โ”œโ”€โ”€ server.py            # Main MCP server implementation
โ”‚   โ””โ”€โ”€ config.py            # Configuration management
โ”œโ”€โ”€ tests/
โ”‚   โ”œโ”€โ”€ __init__.py
โ”‚   โ””โ”€โ”€ test_server.py       # Unit tests
โ”œโ”€โ”€ examples/
โ”‚   โ””โ”€โ”€ example_client.py    # Example client implementation
โ”œโ”€โ”€ scripts/
โ”‚   โ””โ”€โ”€ run_server.py        # Server runner script
โ”œโ”€โ”€ .env.example             # Example environment configuration
โ”œโ”€โ”€ .gitignore               # Git ignore rules
โ”œโ”€โ”€ pyproject.toml           # Project metadata and dependencies
โ”œโ”€โ”€ pytest.ini              # Pytest configuration
โ”œโ”€โ”€ requirements.txt         # Production dependencies
โ”œโ”€โ”€ requirements-dev.txt     # Development dependencies
โ””โ”€โ”€ README.md               # This file

๐Ÿ”ง Configuration

The server can be configured using environment variables:

  • MCP_SERVER_NAME: Server name (default: mcp-server-poc)

  • MCP_SERVER_VERSION: Server version (default: 0.1.0)

  • LOG_LEVEL: Logging level (default: INFO)

  • ENABLE_METRICS: Enable metrics collection (default: true)

๐Ÿงฉ Technology Stack

  • MCP SDK: Official Model Context Protocol SDK for Python

  • Pydantic: Data validation and settings management

  • httpx: Modern async HTTP client

  • aiofiles: Async file operations

  • uvloop: High-performance event loop

  • pytest: Testing framework

  • python-dotenv: Environment variable management

๐Ÿ” Development

Code Formatting

# Format code with black
black src/ tests/ examples/

# Lint with ruff
ruff check src/ tests/

# Type checking with mypy
mypy src/

Adding New Tools

  1. Add tool definition in list_tools() function

  2. Implement tool logic in call_tool() function

  3. Add tests in tests/test_server.py

Example:

# In list_tools()
Tool(
    name="my_new_tool",
    description="Description of my tool",
    inputSchema={
        "type": "object",
        "properties": {
            "param": {"type": "string"}
        },
        "required": ["param"]
    }
)

# In call_tool()
elif name == "my_new_tool":
    param = arguments.get("param")
    # Your tool logic here
    return [TextContent(type="text", text=f"Result: {result}")]

๐Ÿ› Troubleshooting

Common Issues

  1. Import Errors: Ensure all dependencies are installed

    pip install -r requirements.txt
  2. Python Version: Ensure Python 3.10+ is being used

    python --version
  3. Virtual Environment: Make sure virtual environment is activated

    source venv/bin/activate
  4. Permission Errors: Check file permissions for write operations

๐Ÿ“ License

See LICENSE file for details.

๐Ÿค Contributing

  1. Fork the repository

  2. Create a feature branch

  3. Make your changes

  4. Add tests

  5. Submit a pull request

๐Ÿ“š Additional Resources

๐ŸŽ‰ Next Steps

  • Add more sophisticated tools (database queries, API integrations)

  • Implement authentication and authorization

  • Add metrics and monitoring

  • Support for streaming responses

  • WebSocket transport support

  • Resource caching and optimization


Note: This is a POC project. For production use, consider adding:

  • Proper error handling and logging

  • Security measures (authentication, input validation)

  • Rate limiting

  • Comprehensive monitoring

  • Documentation generation

  • CI/CD pipelines

-
security - not tested
A
license - permissive license
-
quality - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

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/ranit532/MCP-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server