在我的上一篇文章中,我建立了一个本地MCP服务器,并给服务器增加了一些工具。在这篇文章里,让我们给这个MCP服务器添加一些提示。
这和之前的博客中的文件结构一样。但在这一篇中,我在这一篇中创建了两个新文件。
.
├── 📁 venv/
├── 📄 helpers.py
├── 📄 server.py
├── 📄 prompts.py 新添加的文件
├── 📄 prompt_builder.py 新添加的文件
└── 📄 tools.py
如果没有设置环境,请按照我之前博客里提到的方法设置开发环境。设置完成后,您可以从这里继续往下走。在这个教程里,我创建了两个提示信息,并将它们添加到MCP服务器,并在Claude Desktop里使用它们。
1. 编写提示语我要创建一个用于修复代码中bug的提示,另一个用于改进文本的提示。先来看一个MCP提示的样本,以理解其结构。
从 mcp.server.fastmcp.prompts 导入 Prompt
从 mcp.server.fastmcp.prompts.base 导入 PromptArgument
example_prompt = Prompt(
name="PROMPT_NAME",
description="PROMPT_DESCRIPTION",
arguments=[
PromptArgument(
name="ARGUMENT_NAME",
description="ARGUMENT_DESCRIPTION",
required="OPTIONAL_OR_REQUIRED"
)
],
fn="FUNCTION_FOR_BUILDING_THE_PROMPT"
)
提示参数就像是提示里的预留位置。用户在使用提示时,可以在 Claude 桌面应用里为这些预留位置填入具体信息。一个提示可以包含一个或多个参数,也可以没有任何参数。我们可以通过调整 required
参数的设置,来决定某个参数是必填还是可选的。
好的。现在你对MCP提示的结构有了一个大致的了解。我们现在来创建一些提示。第一个提示是用来优化文本的。这个提示的作用是这样的,当我们给Claude Desktop一段文本时,它会优化这段文本。这个提示不需要任何参数。
# prompts.py
from mcp.server.fastmcp.prompts import Prompt
from mcp.server.fastmcp.prompts.base import PromptArgument
text_refinement_prompt = Prompt(
name="refine-the-text",
description="精炼给定文本",
arguments=[],
fn=PromptBuilder.text_refinement_prompt_fn,
)
我们现在来创建第二个提示吧。这个提示是为了修复代码错误的。这个提示有两个参数。第一个参数是输入使用的框架,这是必需的。第二个参数是可选的,用来输入错误信息。比如说可以输入你遇到的问题描述。
bugfix_prompt = Prompt(
name="fix-the-issue",
description="修复提供的代码片段中的问题",
arguments=[
PromptArgument(
name="framework",
description="代码片段中使用的框架",
required=True
),
PromptArgument(
name="issue",
description="代码片段中的问题,"
),
],
fn=PromptBuilder.bugfix_prompt_fn
)
好了,我们已经完成了提示的创建,但还没有创建提示函数。
2. 创建提示功能让我们创建一个名为 PromptBuilder
的类,并在其中定义一些提示函数。这些函数不一定非要放在类里面,但我更喜欢这样组织代码,这样更清晰。
# prompt_builder.py
class PromptBuilder:
@staticmethod
def text_refinement_prompt_fn():
return dedent(
f"""
修正给定文本中的语法错误,
使其更易于阅读,
但不要改变原文的意思和风格。
"""
)
@staticmethod
def bugfix_prompt_fn(framework, issue=""):
return dedent(
f"""
请扮演一位经验丰富的 {framework} 开发者,
检查给定的代码并修复错误。
错误描述: {issue}
"""
)
第一个函数生成一个“精简文本”的提示,不需要任何参数。因此,该函数本身没有参数,只是返回要提供给大型语言模型的提示。第二个函数构建一个“修正问题”的指令,需要两个参数,其中一个必填,一个可选。因此,该函数有两个参数,第一个是必填的,第二个是可选的,与提示结构相匹配。这些参数通过f-string插入到提示中的占位符中。实际上,这些提示函数动态构建最终提示。
3. 连接至 MCP 服务器现在,我们将在上一篇文章中创建的服务器上添加提示词。
从mcp.server.fastmcp导入FastMCP
从prompts导入bugfix_prompt, text_refinement_prompt,daily_standup暂时不使用
# 初始化FastMCP服务器
mcp = FastMCP("Weather-Server")
# 将提示添加到服务器
mcp.add_prompt(bugfix_prompt)
mcp.add_prompt(text_refinement_prompt)
if __name__ == "__main__":
# 启动服务器
mcp.run()
4. 连接至 Claude 的桌面
JSON 配置无需做任何更改。和之前一样,配置保持不变。创建一个 JSON 文件作为配置。请在以下位置创建 JSON 文件。C:\Users\USER\AppData\Roaming\Claude\claude_desktop_config.json
{
"mcpServers": {
"weather": {
// 运行 python 脚本在虚拟环境中
// 虚拟环境中 python.exe 的绝对路径
"command": "<PATH_TO_ENVIRONMENT>\\venv\\Scripts\\python",
"args": [
// server.py 的绝对路径
"<PATH_TO_SERVER>\\server.py"
]
}
}
}
我在之前的这篇文章中已经解释过了这个配置。所以这次我就不重复解释了。创建完配置文件后,请重启Claude桌面。
重启了 Claude 桌面后,你可以看到叫做“从 MCP 连接”的按钮,点击它。然后选择“选择集成”。
在这里的下拉列表中,你可以看到你在这个MCP中创建的提示语被列在这里。现在我们来看看如何使用这些提示语。首先,让我们尝试“解决此问题”。如果你点击它,你会看到这样的弹出窗口。
它会要求你填写在提示中定义的参数。填写这些参数并提交,它会作为附件出现在你的Claude桌面上。现在你可以在聊天框里输入剩下的提示内容。
其他MCP提示也差不多。唯一不同的是它们不需输入参数。它们会直接作为聊天的附件添加。
第五部分:总结了我们可以将这些MCP提示当作模板。MCP提示,这些可以当作模板。如果你用Claude Desktop来做重复性任务的话,你可以为此目的创建MCP提示。你就不需要手动输入这些提示了,可以从MCP服务器中直接获取。此外,你还可以把所有提示存放在一个集中位置。
感谢你加入我们的社区!在你走之前,
- 记得为作者点赞并关注👏️
- 关注我们: X | 领英(LinkedIn) | YouTube | 通讯 | 播客(Podcast) | Differ | Twitch
- 试试CoFeed,智能获取科技最新资讯 🧪
- 在Differ免费开启您的AI博客 🚀
- 加入我们的内容创作者Discord 🧑💻
- 更多内容,请查看 plainenglish.io + stackademic.com
共同學習,寫下你的評論
評論加載中...
作者其他優(yōu)質(zhì)文章