Skip to main content
Glama

SampleMCP

A simple Python project demonstrating how to build and connect MCP servers using FastMCP, LangChain MCP adapters, LangGraph, and OpenAI.

Features

  • Math MCP server using stdio

  • Weather MCP server using streamable-http

  • LangChain MCP client connecting to multiple MCP servers

  • LangGraph ReAct agent using MCP tools

  • Example tool calls for math and weather queries

Project Structure

SampleMCP/
├── client.py          # MCP client + LangGraph agent
├── mathserver.py      # Math MCP server with add/multiply tools
├── weather.py         # Weather MCP server using streamable HTTP
├── main.py            # Basic sample entry point
├── pyproject.toml     # Project metadata and dependencies
├── requirements.txt   # Python dependencies
└── README.md

Requirements

  • Python 3.12+

  • OpenAI API key

  • Optional: Groq API key

Installation

Clone the repository:

git clone https://github.com/JayantPrakash/SampleMCP.git
cd SampleMCP

Install dependencies:

pip install -r requirements.txt

Or using uv:

uv sync

Environment Variables

Create a .env file in the project root:

OPENAI_API_KEY=your_openai_api_key
GROQ_API_KEY=your_groq_api_key

Running the MCP Servers

1. Start the Weather Server

The weather server uses streamable-http.

python weather.py

By default, it exposes the MCP endpoint at:

http://localhost:8000/mcp

2. Math Server

The math server uses stdio and is started automatically by the client through:

"command": "python",
"args": ["mathserver.py"],
"transport": "stdio"

Running the Client

In a separate terminal, run:

python client.py

The client connects to:

  • mathserver.py through stdio

  • weather.py through streamable_http

It then creates a LangGraph ReAct agent and asks:

what's (3 + 5) x 12?

and:

what is the weather in California?

MCP Tools

Math Server

Defined in mathserver.py.

add(a: int, b: int) -> int

Adds two numbers.

multiple(a: int, b: int) -> int

Multiplies two numbers.

Weather Server

Defined in weather.py.

get_weather(location: str) -> str

Returns a sample weather response for a given location.

Notes

  • mathserver.py uses transport="stdio".

  • weather.py uses transport="streamable-http".

  • In client.py, the streamable HTTP transport is configured as streamable_http.

  • Make sure the weather server is running before executing client.py.

Example Output

Math response: 96
Weather response: It's always raining in California
F
license - not found
-
quality - not tested
C
maintenance

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/JayantPrakash/SampleMCP'

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