mcp_server.py•1.51 kB
#!/usr/bin/env python3
"""
Simple MCP server following the exact documentation format
"""
import asyncio
from mcp.server import Server, NotificationOptions
from mcp.server.stdio import stdio_server
from mcp.server.models import InitializationOptions
from mcp.types import Tool
# Create server instance
server = Server("simple-fixed")
@server.list_tools()
async def handle_list_tools() -> list[Tool]:
"""List available tools."""
return [
Tool(
name="hello",
description="Say hello",
inputSchema={
"type": "object",
"properties": {},
"required": []
}
)
]
@server.call_tool()
async def handle_call_tool(name: str, arguments: dict) -> list[dict]:
"""Handle tool calls."""
if name == "hello":
return [{"type": "text", "text": "Hello from MCP server!"}]
else:
return [{"type": "text", "text": f"Unknown tool: {name}"}]
async def main():
async with stdio_server() as (read_stream, write_stream):
await server.run(
read_stream,
write_stream,
InitializationOptions(
server_name="simple-fixed",
server_version="1.0.0",
capabilities=server.get_capabilities(
notification_options=NotificationOptions(),
experimental_capabilities={}
)
)
)
if __name__ == "__main__":
asyncio.run(main())