114 lines
3.0 KiB
Python
114 lines
3.0 KiB
Python
from mcp.server.fastmcp import FastMCP
|
||
|
||
mcp = FastMCP('锦恢的 MCP Server', version="11.45.14")
|
||
|
||
@mcp.tool(
|
||
name='add',
|
||
description='对两个数字进行实数域的加法'
|
||
)
|
||
def add(a: int, b: int) -> int:
|
||
return a + b
|
||
|
||
@mcp.resource(
|
||
uri="greeting://{name}",
|
||
name='greeting',
|
||
description='用于演示的一个资源协议'
|
||
)
|
||
def get_greeting(name: str) -> str:
|
||
# 访问处理 greeting://{name} 资源访问协议,然后返回
|
||
# 此处方便起见,直接返回一个 Hello,balabala 了
|
||
return f"Hello, {name}!"
|
||
|
||
@mcp.prompt(
|
||
name='translate',
|
||
description='进行翻译的prompt'
|
||
)
|
||
def translate(message: str) -> str:
|
||
return f'请将下面的话语翻译成中文:\n\n{message}'
|
||
|
||
@mcp.tool(
|
||
name='multiply',
|
||
description='对两个数字进行实数域的乘法运算'
|
||
)
|
||
def multiply(a: float, b: float) -> float:
|
||
"""返回 a 和 b 的乘积"""
|
||
return a * b
|
||
|
||
@mcp.tool(
|
||
name='is_even',
|
||
description='判断一个整数是否为偶数'
|
||
)
|
||
def is_even(number: int) -> bool:
|
||
"""返回 True 如果数字是偶数,否则 False"""
|
||
return number % 2 == 0
|
||
|
||
@mcp.tool(
|
||
name='capitalize',
|
||
description='将字符串首字母大写'
|
||
)
|
||
def capitalize(text: str) -> str:
|
||
"""返回首字母大写的字符串"""
|
||
return text.capitalize()
|
||
|
||
@mcp.resource(
|
||
uri="weather://{city}",
|
||
name='weather',
|
||
description='获取指定城市的天气信息'
|
||
)
|
||
def get_weather(city: str) -> str:
|
||
"""模拟天气查询协议,返回格式化字符串"""
|
||
return f"Weather in {city}: Sunny, 25°C"
|
||
|
||
@mcp.resource(
|
||
uri="user://{user_id}",
|
||
name='user_profile',
|
||
description='获取用户基本信息'
|
||
)
|
||
def get_user_profile(user_id: str) -> dict:
|
||
"""模拟用户协议,返回字典数据"""
|
||
return {
|
||
"id": user_id,
|
||
"name": "张三",
|
||
"role": "developer"
|
||
}
|
||
|
||
@mcp.resource(
|
||
uri="book://{isbn}",
|
||
name='book_info',
|
||
description='通过ISBN查询书籍信息'
|
||
)
|
||
def get_book_info(isbn: str) -> dict:
|
||
"""模拟书籍协议,返回结构化数据"""
|
||
return {
|
||
"isbn": isbn,
|
||
"title": "Python编程:从入门到实践",
|
||
"author": "Eric Matthes"
|
||
}
|
||
|
||
@mcp.prompt(
|
||
name='summarize',
|
||
description='生成文本摘要的提示词模板'
|
||
)
|
||
def summarize(text: str) -> str:
|
||
"""返回摘要生成提示词"""
|
||
return f"请用一句话总结以下内容:\n\n{text}"
|
||
|
||
@mcp.prompt(
|
||
name='code_explanation',
|
||
description='解释代码功能的提示词模板'
|
||
)
|
||
def explain_code(code: str) -> str:
|
||
"""返回代码解释提示词"""
|
||
return f"请解释以下代码的功能:\n```python\n{code}\n```"
|
||
|
||
@mcp.prompt(
|
||
name='email_generator',
|
||
description='生成正式邮件的提示词模板'
|
||
)
|
||
def generate_email(context: str) -> str:
|
||
"""返回邮件生成提示词"""
|
||
return (
|
||
"根据以下需求撰写一封正式邮件:\n"
|
||
f"需求描述:{context}\n"
|
||
"要求:使用礼貌用语,长度不超过200字"
|
||
) |