MCP CLI
Run an interactive CLI chat loop against a GitHub MCP server agent.
Show how to run an interactive CLI to interact with an agent equipped with MCP tools.
This example starts the retired npm GitHub MCP server. The source excerpt is preserved from the linked Agno revision. Replace that command in the saved file with GitHub's maintained MCP server before running it.
"""Show how to run an interactive CLI to interact with an agent equipped with MCP tools.
This example uses the MCP GitHub Agent. Example prompts to try:
- "List open issues in the repository"
- "Show me recent pull requests"
- "What are the repository statistics?"
- "Find issues labeled as bugs"
- "Show me contributor activity"
Run: `uv pip install agno mcp openai` to install the dependencies
"""
import asyncio
from textwrap import dedent
from agno.agent import Agent
from agno.tools.mcp import MCPTools
# ---------------------------------------------------------------------------
# Create Agent
# ---------------------------------------------------------------------------
async def run_agent(message: str) -> None:
"""Run an interactive CLI for the GitHub agent with the given message."""
# Create a client session to connect to the MCP server
async with MCPTools("npx -y @modelcontextprotocol/server-github") as mcp_tools:
agent = Agent(
tools=[mcp_tools],
instructions=dedent("""\
You are a GitHub assistant. Help users explore repositories and their activity.
- Use headings to organize your responses
- Be concise and focus on relevant information\
"""),
markdown=True,
)
# Run an interactive command-line interface to interact with the agent.
await agent.acli_app(input=message, stream=True)
# ---------------------------------------------------------------------------
# Run Agent
# ---------------------------------------------------------------------------
if __name__ == "__main__":
# Pull request example
asyncio.run(
run_agent(
"Tell me about Agno. Github repo: https://github.com/agno-agi/agno. You can read the README for more information."
)
)Run the Example
Set up your virtual environment
uv venv --python 3.12
source .venv/bin/activateInstall dependencies
uv pip install -U "agno[mcp]" openaiExport environment variables
export GITHUB_PERSONAL_ACCESS_TOKEN="your_github_personal_access_token_here"
export OPENAI_API_KEY="your_openai_api_key_here"Use GitHub's maintained MCP server
Install and start Docker. Use a GitHub personal access token with access to the repositories you want to read. The archived npm server is replaced by GitHub's maintained MCP server.
Add these imports to the saved file:
from os import environ
from mcp import StdioServerParametersInside run_agent, replace the old server configuration with:
server_params = StdioServerParameters(
command="docker",
args=[
"run", "-i", "--rm",
"-e", "GITHUB_PERSONAL_ACCESS_TOKEN",
"-e", "GITHUB_READ_ONLY=1",
"ghcr.io/github/github-mcp-server",
],
env={"GITHUB_PERSONAL_ACCESS_TOKEN": environ["GITHUB_PERSONAL_ACCESS_TOKEN"]},
)Use async with MCPTools(server_params=server_params) as mcp_tools: around the existing Agent and response code. The explicit env mapping forwards the token into the child process; exporting it in the parent shell alone does not do that.
Run the example
Save the code above as cli.py, then run:
python cli.pyFull source: cookbook/91_tools/mcp/cli.py