From 5385f8b10ed22beb356a8727e6c2b85f12886163 Mon Sep 17 00:00:00 2001 From: Dmitry Pimenov Date: Tue, 25 Mar 2025 16:52:52 -0700 Subject: [PATCH] added readme, fixed typo --- examples/mcp/filesystem_example/README.md | 2 +- examples/mcp/git_example/README.md | 25 +++++++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 examples/mcp/git_example/README.md diff --git a/examples/mcp/filesystem_example/README.md b/examples/mcp/filesystem_example/README.md index 682afc8..1b6b183 100644 --- a/examples/mcp/filesystem_example/README.md +++ b/examples/mcp/filesystem_example/README.md @@ -1,6 +1,6 @@ # MCP Filesystem Example -This example uses the [fileystem MCP server](https://github.com/modelcontextprotocol/servers/tree/main/src/filesystem), running locally via `npx`. +This example uses the [filesystem MCP server](https://github.com/modelcontextprotocol/servers/tree/main/src/filesystem), running locally via `npx`. Run it via: diff --git a/examples/mcp/git_example/README.md b/examples/mcp/git_example/README.md new file mode 100644 index 0000000..35ff7cd --- /dev/null +++ b/examples/mcp/git_example/README.md @@ -0,0 +1,25 @@ +# MCP Git Example + +This example uses the [git MCP server](https://github.com/modelcontextprotocol/servers/tree/main/src/git), running locally via `uvx`. + +Run it via: + +``` +uv run python examples/mcp/git_example/main.py +``` + +## Details + +The example uses the `MCPServerStdio` class from `agents`, with the command: + +```bash +uvx mcp-server-git +``` +Prior to running the agent, the user is prompted to provide a local directory path to their git repo. Using that, the Agent can invoke Git MCP tools like `git_log` to inspect the git commit log. + +Under the hood: + +1. The server is spun up in a subprocess, and exposes a bunch of tools like `git_log()` +2. We add the server instance to the Agent via `mcp_agents`. +3. Each time the agent runs, we call out to the MCP server to fetch the list of tools via `server.list_tools()`. The result is cached. +4. If the LLM chooses to use an MCP tool, we call the MCP server to run the tool via `server.run_tool()`.