From 3a9e8e18df4c596360da54000f65e1bebc6039c2 Mon Sep 17 00:00:00 2001 From: tanaka takashi Date: Fri, 26 Jun 2026 23:54:17 +0900 Subject: MCP機能追加 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/persona_server.py | 48 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 scripts/persona_server.py (limited to 'scripts/persona_server.py') diff --git a/scripts/persona_server.py b/scripts/persona_server.py new file mode 100644 index 0000000..2706669 --- /dev/null +++ b/scripts/persona_server.py @@ -0,0 +1,48 @@ +"""Test MCP server that pretends to be different assistants. + +Usage: + python scripts/persona_server.py # stdio transport + python scripts/persona_server.py streamable-http # HTTP transport +""" + +from mcp.server.fastmcp import FastMCP + +mcp = FastMCP("persona") + +_PERSONAS: dict[str, str] = { + "pirate": "Arr! Yer askin' a salty sea dog.", + "robot": "Beep boop. Processing query with logic circuits.", + "poet": "Hark, thy words dance like petals on the wind.", + "chef": "Mamma mia! Let's cook up an answer.", +} + + +@mcp.tool() +def list_personas() -> list[str]: + """Return available persona names.""" + return list(_PERSONAS.keys()) + + +@mcp.tool() +def chat_as_persona(persona: str, message: str) -> str: + """Respond to a message in the style of the chosen persona.""" + greeting = _PERSONAS.get(persona.lower(), "Hello.") + return f"[{persona}] {greeting} You said: {message}" + + +@mcp.tool() +def explain_style(persona: str) -> str: + """Describe how the chosen persona speaks.""" + return _PERSONAS.get( + persona.lower(), + "This persona has no special style.", + ) + + +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) -- cgit v1.2.3