summaryrefslogtreecommitdiff
path: root/scripts/calc_server.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/calc_server.py')
-rw-r--r--scripts/calc_server.py39
1 files changed, 39 insertions, 0 deletions
diff --git a/scripts/calc_server.py b/scripts/calc_server.py
new file mode 100644
index 0000000..65e121d
--- /dev/null
+++ b/scripts/calc_server.py
@@ -0,0 +1,39 @@
+"""Test MCP server providing basic math tools.
+
+Usage:
+ python scripts/calc_server.py # stdio transport
+ python scripts/calc_server.py streamable-http # HTTP transport
+"""
+
+from mcp.server.fastmcp import FastMCP
+
+mcp = FastMCP("calc")
+
+
+@mcp.tool()
+def add(a: float, b: float) -> float:
+ """Add two numbers."""
+ return a + b
+
+
+@mcp.tool()
+def multiply(a: float, b: float) -> float:
+ """Multiply two numbers."""
+ return a * b
+
+
+@mcp.tool()
+def sqrt(value: float) -> float:
+ """Return the square root of a non-negative number."""
+ if value < 0:
+ raise ValueError("value must be non-negative")
+ return value**0.5
+
+
+if __name__ == "__main__":
+ import sys
+
+ transport = sys.argv[1] if len(sys.argv) > 1 else "stdio"
+ port = int(sys.argv[2]) if len(sys.argv) > 2 else 9000
+ mcp.settings.port = port
+ mcp.run(transport=transport)