lucadipalma
adding files
aa2d45f
import logging
import os
from langchain_core.messages import ToolMessage
from langgraph.types import Command
from mcp.server.fastmcp import FastMCP
from support.tools.general import convert_to_string
from typing import Union, Any, List, Dict
from uuid import uuid4
os.makedirs("logs", exist_ok=True)
logging.basicConfig(
filename='logs/boss_server.log', # Log file name
filemode='a', # 'a' for append, 'w' to overwrite
level=logging.INFO, # Minimum level to log
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
datefmt='%Y-%m-%d %H:%M:%S'
)
logger = logging.getLogger(__name__)
mcp = FastMCP("BossServer")
@mcp.tool()
async def ChooseWord(
clue_number: int,
clue: Union[str, Dict, List, Any],
):
"""Use this tool if you think that some of the informations are missing.
Args:
clue_number: the number of word of your team that can be linked to the word.
clue: a single word that can be linked to {clue_number} words on the board."""
clue = convert_to_string(clue)
logger.info(f"Chosen clue: {clue} for number: {clue_number}")
return Command(
# goto=f"{team_color}_captain",
update={
"clue_number": clue_number,
"clue": clue,
"messages": [ToolMessage(
content=f"{clue}, {clue_number}",
name="ChooseWord",
tool_call_id=str(uuid4())
)],
}
)
def start_boss_server():
mcp.settings.port = 8000
mcp.run(transport="stdio")
if __name__ == "__main__":
start_boss_server()