tools_server.py•1.33 kB
from fastmcp import FastMCP
import numexpr
import requests
from langchain_openai.chat_models.azure import AzureChatOpenAI
from langchain import Wikipedia
import os
llm = AzureChatOpenAI(
azure_deployment=os.getenv("AZURE_DEPLOYMENT"),
openai_api_version=os.getenv("OPENAI_API_VERSION"),
temperature=0
)
mcp = FastMCP("AdvancedTools", instructions="Offer math, search, weather, wiki, summarizer tools.")
@mcp.tool()
def calc(expr: str) -> float:
"""Evaluate numeric expression safely."""
return float(numexpr.evaluate(expr))
@mcp.tool()
def search(query: str) -> str:
resp = requests.get(
"https://api.duckduckgo.com/",
params={"q": query, "format": "json"}
)
data = resp.json()
return data.get("AbstractText") or "No summary available"
@mcp.tool()
def weather(city: str) -> str:
res = requests.get(f"https://wttr.in/{city}?format=3", headers={"User-Agent": "curl"})
return res.text.strip()
@mcp.tool()
def wiki(query: str) -> str:
return Wikipedia().run(query)
@mcp.tool()
def summarize(text: str) -> str:
resp = llm.invoke([
{"role": "system", "content": "Please provide a comprehensive but concise summary."},
{"role": "user", "content": text}
])
return resp.content
if __name__ == "__main__":
mcp.run(transport="stdio")