mcp-sentiment / app.py
翟宇翔
提交app.py和requirements.txt
dcef9d0
import gradio as gr
from textblob import TextBlob
# 此段函数接受文本输入并返回一个字典,包含三项信息:极性(polarity)、主观性(subjectivity)、评价(assessment)
def sentiment_analysis(text: str) -> dict:
#以下字符串非常重要,该字符串协助Gradio生成MCP工具模式
"""
Perform sentiment analysis on input text using TextBlob library.
The function calculates polarity (sentiment score from -1 to 1) and subjectivity
(how opinionated the text is from 0 to 1), then provides a human-readable assessment.
Args:
text (str): Input text to be analyzed for sentiment. Should be in English for best results.
Returns:
dict: Dictionary containing three keys:
- polarity (float): Sentiment score between -1.0 (negative) and 1.0 (positive)
- subjectivity (float): Score between 0.0 (objective) and 1.0 (subjective)
- assessment (str): Categorical classification ('positive', 'negative', or 'neutral')
"""
# 使用TextBlob分析文本情感
blob = TextBlob(text)
sentiment = blob.sentiment
# Format and return sentiment analysis results
return {
"polarity": round(sentiment.polarity, 2), # -1 (negative) to 1 (positive)
"subjectivity": round(sentiment.subjectivity, 2), # 0 (objective) to 1 (subjective)
"assessment": "positive" if sentiment.polarity > 0 else "negative" if sentiment.polarity < 0 else "neutral"
}
# gr.Interface 同时创建网页用户界面和 MCP 服务器
demo = gr.Interface(
fn=sentiment_analysis, # 调用前面定义的sentiment_analysis方法
inputs=gr.Textbox(placeholder="Enter text to analyze..."), # 输入和输出组件定义工具的模式
outputs=gr.JSON(), # JSON 输出组件确保正确的序列化
title="Text Sentiment Analysis", # Interface title
description="Analyze the sentiment of text using TextBlob" # Description below title
)
# Launch the web interface when script is run directly
if __name__ == "__main__":
# 置 mcp_server=True 启用 MCP 服务器
demo.launch(mcp_server=True)