Skip to main content
Glama
Greeter MCP Server

Greeter MCP Server

by jrmlhermitte

MCP Example

Quick and simple repo to demonstrate the very basics MCP and Gemini CLI. Nothing more.

Related MCP server: Hello World MCP Server

Quick Setup

Quick setup of a new project (using uv):

  1. Install UV

curl -LsSf https://astral.sh/uv/install.sh | sh

(linux and mac)

  1. Clone project and initialize virtualenv

git clone https://github.com/jrmlhermitte/gemini-mcp-example.git 
cd gemini-mcp-example
uv sync
source .venv/bin/activate

Write MCP Server And Test

  1. The file we'll run is in gemini-mcp-example/main.py and already defined. Take a look at it. The main components are

# ...
mcp = FastMCP("greeter")
# ...
@mcp.tool()
def greet(name: str) -> str:
    return f'Hello {name}!'
# ...
if __name__ == "__main__":
    # NOTE: stdio is the default.
    mcp.run(transport='stdio')
  1. Run file

(Don't forget to activate your virtual env source .venv/bin/activate)

python gemini-mcp-example/main.py
  1. Init communication

We're going to initialize the 2024-11-05 protocol version using stdin/stdout (the stdio protocol which we setup our fast MCP server to use).

Paste this exactly into your shell:

{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{"roots":{"listChanged":true},"tools":{"listChanged":true},"sampling":{},"elicitation":{}},"clientInfo":{"name":"ExampleClient","title":"ExampleClientDisplayName","version":"1.0.0"}}}

You should see:

{"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2024-11-05","capabilities":{"experimental":{},"prompts":{"listChanged":false},"resources":{"subscribe":false,"listChanged":false},"tools":{"listChanged":false}},"serverInfo":{"name":"greeter","version":"1.10.1"}}}

NOTE: The json commands here and below must be pasted as is. You cannot have newlines in between. If the formatting is incorrect, the server will just ignore your requests.

When you do, paste this to start the connection:

{"jsonrpc":"2.0","method":"notifications/initialized"}

Now type this to list available tools:

{"jsonrpc":"2.0","method":"tools/list","id":1}

you should see something like this (you may see additional logging):

{"jsonrpc":"2.0","id":1,"result":{"tools":[{"name":"greet","description":"","inputSchema":{"properties":{"name":{"title":"Name","type":"string"}},"required":["name"],"title":"greetArguments","type":"object"},"outputSchema":{"properties":{"result":{"title":"Result","type":"string"}},"required":["result"],"title":"greetOutput","type":"object"}}]}}

Congratulations! You have successfully started a Stdio connection with an MCP server! Now test calling your tool:

{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"greet","arguments":{"name":"Teal'c"}}}

you should then see:

{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"Hello Teal'c!"}],"structuredContent":{"result":"Hello Teal'c!"},"isError":false}}

This is how you're going to setup an MCP server with Gemini.

Gemini CLI will run your server as a child process and send commands to stdin and receive responses from stdout using the stdio protocol.

Gemini CLI

Integrating with Gemini CLI.

  1. Install node

  2. Install Gemini CLI:

npm install -g @google/gemini-cli
  1. Add the Gemini extension from here (docs):

(NOTE: This should be run from the root of this github repo)

mkdir -p ~/gemini/extensions
ln -s $PWD/gemini-mcp-example ~/.gemini/extensions
  1. Start gemini and list mcp servers

gemini

Then type:

/mcp

You should see this: mcp

NOTE: You must start gemini from the code folder. The reason is that the extension runs python ./gemini-mcp-example/main.py. If you want to make this runnable from everywhere, you'll need to make sure your base python environment contains the fastmcp library and that the gemini-extension.json refers to an absolute path. NOTE: If this is your first time setting up Gemini CLI, you will also see some easy to follow setup steps.

  1. Give it your name. It will likely try to call your tools.

Input something like:

My name is Teal'c

Gemini should figure that it might want to call the greeting tool, given you've introduced yourself. You should get a request to call the tool: confirmation

And it should hopefully have called the tool. tool_called

Troubleshooting

Running into problems? Try running the mcp server yourself to see if it's able to start up:

source .venv/bin/activate
python gemini-extension/main.py

(Also don't forget to run source .venv/bin/activate before starting gemini; We're running this in a local virtual environment here.)

Where to go from here?

This demonstrates how easy it is to setup an MCP server and integrate it with Gemini. You should be able to have a basic enough understanding to integrate it with your own tools now!

Available Tools

1 tool
greetD

Inputs: name (required). Returns: result

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    D1.7/5.0

    Scored across 1 tool

    Disambiguation5/5

    With only one tool, there is no possibility of ambiguity or overlap between tools. The single tool 'greet' has a clear and distinct purpose that cannot be confused with any other tool in this set.

    Naming Consistency5/5

    The naming is trivially consistent because there is only one tool. The tool name 'greet' follows a simple verb pattern, and with no other tools to compare against, there are no inconsistencies in naming conventions.

    Tool Count2/5

    A single tool is generally too few for most server purposes, as it limits functionality and can feel thin. For a 'Greeter' server, while a single greeting tool might suffice for basic use, it lacks depth and may not support varied interactions or extended features that agents might expect.

    Completeness1/5

    The server is severely incomplete for a greeter domain. With only a 'greet' tool, there are obvious gaps such as no ability to customize greetings, handle different languages, manage user preferences, or provide follow-up interactions. This minimal surface will likely cause agent failures in more complex scenarios.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      Not graded
      quality
      Not graded
      maintenance
      A simple demonstration MCP server that provides basic greeting functionality and server information. Enables users to generate hello messages and retrieve server details through tools and resources.
      -
    • -
      license
      C
      quality
      Not graded
      maintenance
      A simple boilerplate MCP server that provides a basic greeting tool for demonstration purposes. Serves as a starting template for developers to quickly create and deploy custom MCP servers.
      1
      10 npm
      -
    • A
      license
      C
      quality
      D
      maintenance
      A simple MCP server that provides a basic greeting tool for saying hello with customizable names. Serves as a boilerplate template for developers to quickly create and deploy new MCP servers.
      1
      10 npm
      MIT
    • F
      license
      D
      quality
      D
      maintenance
      A demonstration MCP server built with fastmcp that provides basic utility tools including number addition and greeting functionality. Integrates with Gemini CLI to enable natural language interaction with simple mathematical and greeting operations.
      2
      -