secondme-api / mcp /mcp_local.py
Gemini
feat: add detailed logging
01d5a5d
raw
history blame
1.7 kB
from typing import Any
from mcp.server.fastmcp import FastMCP
import http.client
import json
mindv = FastMCP("mindverse")
url = "localhost:8002"
path = "/api/kernel2/chat"
messages =[]
@mindv.tool()
async def get_response(query:str) -> str | None | Any:
"""
Received a response based on local secondme model.
Args:
query (str): Questions raised by users regarding the secondme model
"""
headers = {
"Content-Type": "application/json",
"Accept": "text/event-stream"
}
messages.append({"role": "user", "content": query})
data={
"messages": messages,
"stream": True
}
conn = http.client.HTTPConnection(url)
# Send the POST request
conn.request("POST", path, body=json.dumps(data), headers=headers)
# Get the response
response = conn.getresponse()
full_content=""
for line in response:
if line:
decoded_line = line.decode('utf-8').strip()
if decoded_line == 'data: [DONE]':
break
if decoded_line.startswith('data: '):
try:
json_str = decoded_line[6:]
chunk = json.loads(json_str)
content = chunk['choices'][0]['delta'].get('content', '')
if content:
full_content+=content
except json.JSONDecodeError:
pass
conn.close()
if full_content:
messages.append({"role": "system", "content": full_content})
return full_content
else:
return None
if __name__ == "__main__":
# Initialize and run the server
mindv.run(transport='stdio')