MCP-YNU FastMCP Server

by ynu

Integrations

  • Used for server configuration with environment variables. It appears in the debugging section where users need to update 'MCP_TRANSPORT_TYPE' in a .env file before starting the server.

  • The server is built on Python (version 3.10 or higher) and uses the FastMCP Python SDK to provide a dynamic MCP server implementation.

MCP-YNU - FastMCP Server

A dynamic MCP server implementation using FastMCP that automatically loads tools, resources, and prompts from respective directories.

Features

  • Dynamic loading of modules from tools/, resources/, and prompts/ directories
  • Automatic discovery and registration of modules
  • Simple configuration and extensibility
  • Type hints for better code clarity and static analysis
  • Comprehensive logging for monitoring server activity

Recent Updates

  • Added type hints throughout the codebase
  • Improved MCP instance handling
  • Added logging functionality
  • Added MIT license
  • Updated documentation with reference links

Directory Structure

mcp-ynu/ ├── tools/ # Directory for tool modules │ ├── __init__.py │ ├── example.py ├── resources/ # Directory for resource modules │ ├── __init__.py │ ├── example.py ├── prompts/ # Directory for prompt modules │ ├── __init__.py │ ├── example.py ├── logger.py # Logger implementation ├── main.py # Main implementation ├── mcp_server.py # MCP server implementation ├── README.md # Project documentation ├── LICENSE # MIT License └── pyproject.toml # Project configuration

Usage

  1. Create modules in the appropriate directories
  2. Import mcp via from mcp_server import mcp
  3. Run the server:
python main.py

Example Modules

Tools Module Example (tools/example.py)

from mcp_server import mcp import httpx @mcp.tool() def calculate_bmi(weight_kg: float, height_m: float) -> float: """Calculate BMI given weight in kg and height in meters""" return weight_kg / (height_m**2) @mcp.tool() async def fetch_weather(city: str) -> str: """Fetch current weather for a city""" async with httpx.AsyncClient() as client: response = await client.get(f"https://api.weather.com/{city}") return response.text

Resources Module Example (resources/example.py)

from mcp_server import mcp @mcp.resource("config://app") def get_config() -> str: """Static configuration data""" return "App configuration here" @mcp.resource("users://{user_id}/profile") def get_user_profile(user_id: str) -> str: """Dynamic user data""" return f"Profile data for user {user_id}"

Prompts Module Example (prompts/example.py)

from mcp_server import mcp from mcp.server.fastmcp.prompts import base @mcp.prompt() def review_code(code: str) -> str: return f"Please review this code:\n\n{code}" @mcp.prompt() def debug_error(error: str) -> list[base.Message]: return [ base.UserMessage("I'm seeing this error:"), base.UserMessage(error), base.AssistantMessage("I'll help debug that. What have you tried so far?"), ]

Debugging

  1. Update MCP_TRANSPORT_TYPE in .env, Execute python main.py to start the mcp server
  2. Execute npx @modelcontextprotocol/inspector to open the inspect.
  3. Choose SSE Transport Type with URL http://localhost:<mcp_server_port>/sse or Choose STDIO Transport Type with Command python and Arguments /path/to/main.py

Requirements

  • Python >= 3.10
  • FastMCP

License

This project is licensed under the MIT License - see the LICENSE file for details.

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

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

A dynamic MCP server implementation that automatically loads tools, resources, and prompts from their respective directories, allowing for easy extension and configuration.

  1. Features
    1. Recent Updates
      1. Directory Structure
        1. Usage
          1. Example Modules
            1. Tools Module Example (tools/example.py)
            2. Resources Module Example (resources/example.py)
            3. Prompts Module Example (prompts/example.py)
          2. Debugging
            1. Requirements
              1. Reference Links
                1. License

                  Related MCP Servers

                  • A
                    security
                    A
                    license
                    A
                    quality
                    An MCP server to run commands.
                    Last updated -
                    2
                    556
                    133
                    TypeScript
                    MIT License
                    • Apple
                  • A
                    security
                    A
                    license
                    A
                    quality
                    MCP server that builds itself by creating new tools as needed based on user requests (Requires restart of Claude Desktop to use newly created tools).
                    Last updated -
                    4
                    13
                    Python
                    The Unlicense
                  • -
                    security
                    F
                    license
                    -
                    quality
                    A configurable MCP server that dynamically loads capabilities from a remote configuration to bridge MCP clients with remote APIs for executing actions, accessing resources, and utilizing prompt templates.
                    Last updated -
                    1,261
                    4
                    TypeScript
                  • A
                    security
                    A
                    license
                    A
                    quality
                    A tool that dynamically generates and configures MCP servers by automatically creating necessary directories and files according to user specifications.
                    Last updated -
                    1
                    9
                    9
                    JavaScript
                    MIT License

                  View all related MCP servers

                  ID: 0i0w71u7vf