Spaces:
Running
Running
#!/usr/bin/env python3 | |
""" | |
Simplified MCP Server for HuggingFace Hub Operations using FastMCP | |
""" | |
import os | |
from fastmcp import FastMCP | |
from huggingface_hub import comment_discussion, InferenceClient | |
from dotenv import load_dotenv | |
load_dotenv() | |
# Configuration | |
HF_TOKEN = os.getenv("HF_TOKEN") | |
DEFAULT_MODEL = os.getenv("HF_MODEL", "Qwen/Qwen2.5-72B-Instruct") | |
# Initialize HF client | |
inference_client = ( | |
InferenceClient(model=DEFAULT_MODEL, token=HF_TOKEN) if HF_TOKEN else None | |
) | |
# Create the FastMCP server | |
mcp = FastMCP("hf-discussion-bot") | |
def generate_discussion_response( | |
discussion_title: str, comment_content: str, repo_name: str | |
) -> str: | |
"""Generate AI response for a HuggingFace discussion comment""" | |
if not inference_client: | |
return "Error: HF token not configured for inference" | |
prompt = f""" | |
Discussion: {discussion_title} | |
Repository: {repo_name} | |
Comment: {comment_content} | |
Provide a helpful response to this comment. | |
""" | |
try: | |
messages = [ | |
{ | |
"role": "system", | |
"content": ("You are a helpful AI assistant for ML discussions."), | |
}, | |
{"role": "user", "content": prompt}, | |
] | |
response = inference_client.chat_completion(messages=messages, max_tokens=150) | |
content = response.choices[0].message.content | |
ai_response = content.strip() if content else "No response generated" | |
return ai_response | |
except Exception as e: | |
return f"Error generating response: {str(e)}" | |
def post_discussion_comment(repo_id: str, discussion_num: int, comment: str) -> str: | |
"""Post a comment to a HuggingFace discussion""" | |
if not HF_TOKEN: | |
return "Error: HF token not configured" | |
try: | |
comment_discussion( | |
repo_id=repo_id, | |
discussion_num=discussion_num, | |
comment=comment, | |
token=HF_TOKEN, | |
) | |
success_msg = f"Successfully posted comment to discussion #{discussion_num}" | |
return success_msg | |
except Exception as e: | |
return f"Error posting comment: {str(e)}" | |
if __name__ == "__main__": | |
mcp.run() | |