Skip to main content
Glama
MCP-Server

MCP-Server

AI Makerspace: MCP Session Repo for Session 13

This project is a demonstration of the MCP (Model Context Protocol) server, which utilizes the Tavily API for web search capabilities. The server is designed to run in a standard input/output (stdio) transport mode.

Related MCP server: Web Search MCP Server

Project Overview

The MCP server is set up to handle web search queries using the Tavily API. It is built with the following key components:

  • TavilyClient: A client for interacting with the Tavily API to perform web searches.

Prerequisites

  • Python 3.13 or higher

  • A valid Tavily API key

⚠️NOTE FOR WINDOWS:⚠️

You'll need to install this on the Windows side of your OS.

This will require getting two CLI tool for Powershell, which you can do as follows:

  • winget install astral-sh.uv

  • winget install --id Git.Git -e --source winget

After you have those CLI tools, please open Cursor into Windows.

Then, you can clone the repository using the following command in your Cursor terminal:

git clone https://AI-Maker-Space/AIE7-MCP-Session.git

After that, you can follow from Step 2. below!

Installation

  1. Clone the repository:

    git clone <repository-url>
    cd <repository-directory>
  2. Configure environment variables: Copy the .env.sample to .env and add your Tavily API key:

    TAVILY_API_KEY=your_api_key_here
  3. πŸ—οΈ Add a new tool to your MCP Server πŸ—οΈ

Create a new tool in the server.py file, that's it!

βœ… Answer:

Added Advanced URL Shortener Tool to MCP Server:

  • Function: shorten_url(url: str, custom_alias: str = "")

  • APIs: Dual service support with automatic fallback

    • Primary: TinyURL's free API service

    • Fallback: V.gd service for custom aliases

  • Features:

    • Auto-adds https:// to URLs without protocol

    • Custom alias support with unique generation

    • Service fallback for optimal reliability

    • Comprehensive error handling for all edge cases

    • User-friendly response formatting with service information

    • Automatic alias uniqueness using timestamp-based generation

  • Testing: Comprehensive test suite with test_final_shortener.py

  • Error Handling: Graceful handling of duplicate aliases, invalid URLs, and service failures

Running the MCP Server

To start the MCP server, you will need to add the following to your MCP Profile in Cursor:

NOTE: To get to your MCP config. you can use the Command Pallete (CMD/CTRL+SHIFT+P) and select "View: Open MCP Settings" and replace the contents with the JSON blob below.

{
    "mcpServers":  {
        "mcp-server": {
            "command" : "uv",
            "args" : ["--directory", "/PATH/TO/REPOSITORY", "run", "server.py"]
        }
    }
}

The server will start and listen for commands via standard input/output.

Usage

The server provides a web_search tool that can be used to search the web for information about a given query. This is achieved by calling the web_search function with the desired query string.

Activities:

There are a few activities for this assignment!

πŸ—οΈ Activity #1:

Choose an API that you enjoy using - and build an MCP server for it!

πŸ—οΈ Activity #2:

Build a simple LangGraph application that interacts with your MCP Server.

You can find details here!

βœ… Answer: Enhanced URL Shortener MCP with Smart LangGraph Application

You can find details in the URL_SHORTENER_README.md!

Available Tools

13 tools
check_url_safetyC

Check if a URL is safe and identify potential security risks

Inputs: url (required). Returns: result

create_url_collectionC

Create a new URL collection for organizing shortened URLs

Inputs: name (required), description. Returns: result

expand_urlC

Expand a shortened URL to see its final destination

Inputs: shortened_url (required). Returns: result

generate_qr_codeC

Generate a QR code for a URL and return it as base64 encoded image

Inputs: url (required), size. Returns: result

get_url_metadataB

Extract metadata from a URL including title, description, and other information

Inputs: url (required). Returns: result

list_collectionsB

List all URL collections

Inputs: no named parameters. Returns: result

list_my_urlsB

List saved URLs with optional filtering by collection or tags

Inputs: collection, tags, limit. Returns: result

roll_diceC

Roll the dice with the given notation

Inputs: notation (required), num_rolls. Returns: result

search_urlsB

Search through saved URLs by title, description, or original URL

Inputs: search_term (required), limit. Returns: result

shorten_urlB

Shorten a URL using multiple services. Supports custom aliases and collections.

Inputs: url (required), custom_alias, collection_name, tags. Returns: result

shorten_url_batchC

Shorten multiple URLs at once. Separate URLs with newlines or commas.

Inputs: urls (required), collection_name, tags. Returns: result

validate_urlB

Validate if a URL is properly formatted and reachable

Inputs: url (required). Returns: result

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    C2.9/5.0

    Scored across 13 tools

    Disambiguation3/5

    Most tools have distinct purposes, but 'check_url_safety' and 'validate_url' overlap in URL checking, and 'roll_dice' is entirely unrelated to URL management, causing confusion.

    Naming Consistency5/5

    All tools use a consistent verb_noun pattern in snake_case (e.g., 'shorten_url', 'list_collections'), making the naming predictable and clear.

    Tool Count3/5

    13 tools is slightly high for a URL management server, especially with the inclusion of an irrelevant dice-rolling tool and a generic web search tool that could be considered out of scope.

    Completeness3/5

    The server covers core URL operations like shortening, expanding, and safety checks, but lacks basic CRUD operations such as deleting or updating URLs and collections, leaving notable gaps.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      Not graded
      quality
      D
      maintenance
      Provides web search capabilities using the Tavily API, enabling AI models to search the internet and retrieve up-to-date information.
      -
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables web search using Bing and DuckDuckGo combined, and fetching readable content from web pages, with no API key required.
      9 npm
      2
      MIT
    • A
      license
      A
      quality
      D
      maintenance
      Enables AI agents to perform real-time web searches and extract clean, LLM-readable content from URLs using the Tavily API.
      2
      MIT