chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
# Running this sample
|
||||
|
||||
You're recommended to install `uv` but it's not a must, see [instructions](https://docs.astral.sh/uv/#highlights)
|
||||
|
||||
## -0- Create a virtual environment
|
||||
|
||||
```bash
|
||||
python -m venv venv
|
||||
```
|
||||
|
||||
## -1- Activate the virtual environment
|
||||
|
||||
```bash
|
||||
venv\Scrips\activate
|
||||
```
|
||||
|
||||
## -2- Install the dependencies
|
||||
|
||||
```bash
|
||||
pip install "mcp[cli]"
|
||||
```
|
||||
|
||||
## -3- Run the sample
|
||||
|
||||
|
||||
```bash
|
||||
python client.py
|
||||
```
|
||||
|
||||
You should see an output similar to:
|
||||
|
||||
```text
|
||||
LISTING RESOURCES
|
||||
Resource: ('meta', None)
|
||||
Resource: ('nextCursor', None)
|
||||
Resource: ('resources', [])
|
||||
INFO Processing request of type ListToolsRequest server.py:534
|
||||
LISTING TOOLS
|
||||
Tool: add
|
||||
READING RESOURCE
|
||||
INFO Processing request of type ReadResourceRequest server.py:534
|
||||
CALL TOOL
|
||||
INFO Processing request of type CallToolRequest server.py:534
|
||||
[TextContent(type='text', text='8', annotations=None)]
|
||||
```
|
||||
@@ -0,0 +1,44 @@
|
||||
from mcp import ClientSession, StdioServerParameters, types
|
||||
from mcp.client.stdio import stdio_client
|
||||
|
||||
# Create server parameters for stdio connection
|
||||
server_params = StdioServerParameters(
|
||||
command="mcp", # Executable
|
||||
args=["run", "server.py"], # Optional command line arguments
|
||||
env=None, # Optional environment variables
|
||||
)
|
||||
|
||||
async def run():
|
||||
async with stdio_client(server_params) as (read, write):
|
||||
async with ClientSession(
|
||||
read, write
|
||||
) as session:
|
||||
# Initialize the connection
|
||||
await session.initialize()
|
||||
|
||||
# List available resources
|
||||
resources = await session.list_resources()
|
||||
print("LISTING RESOURCES")
|
||||
for resource in resources:
|
||||
print("Resource: ", resource)
|
||||
|
||||
# List available tools
|
||||
tools = await session.list_tools()
|
||||
print("LISTING TOOLS")
|
||||
for tool in tools.tools:
|
||||
print("Tool: ", tool.name)
|
||||
|
||||
# Read a resource
|
||||
print("READING RESOURCE")
|
||||
content, mime_type = await session.read_resource("greeting://hello")
|
||||
|
||||
# Call a tool
|
||||
print("CALL TOOL")
|
||||
result = await session.call_tool("add", arguments={"a": 1, "b": 7})
|
||||
print(result.content)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
import asyncio
|
||||
|
||||
asyncio.run(run())
|
||||
@@ -0,0 +1,20 @@
|
||||
# server.py
|
||||
from mcp.server.fastmcp import FastMCP
|
||||
|
||||
# Create an MCP server
|
||||
mcp = FastMCP("Demo")
|
||||
|
||||
|
||||
# Add an addition tool
|
||||
@mcp.tool()
|
||||
def add(a: int, b: int) -> int:
|
||||
"""Add two numbers"""
|
||||
return a + b
|
||||
|
||||
|
||||
# Add a dynamic greeting resource
|
||||
@mcp.resource("greeting://{name}")
|
||||
def get_greeting(name: str) -> str:
|
||||
"""Get a personalized greeting"""
|
||||
return f"Hello, {name}!"
|
||||
|
||||
Reference in New Issue
Block a user