Skip to main content

Add your description here

Project description

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

@modelcontextprotocol/inspector

Requirements

  • Python >= 3.10
  • FastMCP

Reference Links

License

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mseep_mcp_ynu-0.1.0.tar.gz (6.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mseep_mcp_ynu-0.1.0-py3-none-any.whl (7.9 kB view details)

Uploaded Python 3

File details

Details for the file mseep_mcp_ynu-0.1.0.tar.gz.

File metadata

  • Download URL: mseep_mcp_ynu-0.1.0.tar.gz
  • Upload date:
  • Size: 6.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.12

File hashes

Hashes for mseep_mcp_ynu-0.1.0.tar.gz
Algorithm Hash digest
SHA256 31dfc8106688551458281e0fae97394617a65335295bcd8d353d670c95ac44f9
MD5 c878ea7c09f511f92c048ffca6486785
BLAKE2b-256 d63c38ddabd6fc12172d7e7ba29b0fff2098db2a3b85ac4481cdc592b7a0578f

See more details on using hashes here.

File details

Details for the file mseep_mcp_ynu-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: mseep_mcp_ynu-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 7.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.12

File hashes

Hashes for mseep_mcp_ynu-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 491420d5ae5b4f9238b3a24c5ea201dbb737944cc73d8fe9e78399c17f78fd90
MD5 58ea8acda348b8c92251404a58f8d83f
BLAKE2b-256 d616eb1fe7e5ffa82907bfc107383942e5a9729c8b59fd7439c2aa11bbd25962

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page