File size: 998 Bytes
7498f2c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
from __future__ import annotations
import asyncio
from typing import Callable, Awaitable

from mcp.server import Server

from services.web_research import get_role_guidelines
from services.llm import llm


def create_common_tools(server: Server) -> None:
    @server.tool()
    async def research_guidelines(role_title: str, job_description: str) -> str:
        """Fetch latest best-practice guidance for a role (uses Tavily if configured)."""
        return get_role_guidelines(role_title, job_description)

    @server.tool()
    async def llm_refine(system_prompt: str, user_prompt: str, max_tokens: int = 800) -> str:
        """Refine a text snippet using the configured LLM provider (OpenAI/Anthropic/Gemini)."""
        return llm.generate(system_prompt, user_prompt, max_tokens=max_tokens)


def run_server(server: Server, host: str = "127.0.0.1", port: int = 8765) -> None:
    # Minimal run loop for development embedding
    asyncio.run(server.run_stdio_async())