在我之前的文章中,我搭建了一个本地的模型上下文协议(MCP)服务器,并向该服务器添加了一些工具。在本文中,让我们为那个MCP服务器添加提示信息。
这是和我之前博客中一样的文件结构。不过在这里,我为此创建了两个新文件。
.
├── ? venv/
├── ? helpers.py
├── ? server.py
├── ? prompts.py # new file
├── ? prompt_builder.py # new file
└── ? tools.py
如果你还没有设置环境,请按照我之前文章中提到的方法搭建开发环境。完成之后,你就可以从这里继续操作了。在本教程中,我创建了两条提示信息,并将它们添加到模型上下文协议(MCP)服务器中,然后在Claude桌面应用程序中使用这些提示信息。
1. 创建提示信息
我打算创建一条用于修复代码中错误的提示信息,以及另一条用于润色文本的提示信息。首先,让我们来看一个模型上下文协议(MCP)提示信息的示例,以便了解MCP提示信息的结构。
from mcp.server.fastmcp.prompts import Prompt
from mcp.server.fastmcp.prompts.base import 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桌面应用程序中输入一些文本时,它会对该文本进行润色。这个提示没有参数。
# prompts.py
from mcp.server.fastmcp.prompts import Prompt
from mcp.server.fastmcp.prompts.base import PromptArgument
from prompt_builder import PromptBuilder
text_refinement_prompt = Prompt(
name="refine-the-text",
description="Refine the given text",
arguments=[],
fn=PromptBuilder.text_refinement_prompt_fn,
)
现在让我们来创建第二个提示。这个提示有两个参数。这个提示用于对给定的代码片段进行错误修复。第一个参数用于输入所使用的框架,这是必填项。第二个参数是一个可选参数,用于输入错误信息。
bugfix_prompt = Prompt(
name="fix-the-issue",
description="Fix the issue in the give code snippet",
arguments=[
PromptArgument(
name="framework",
description="The framework used in the code snippet",
required=True
),
PromptArgument(
name="issue",
description="The issue in the code snippet"
),
],
fn=PromptBuilder.bugfix_prompt_fn
)
好的,我们已经完成了提示信息的创建,但我们还没有创建提示函数呢。
2. 创建提示函数
让我们创建一个`PromptBuilder`类,并在类中定义提示函数。这些函数并非一定要放在类里面,但为了让代码结构更清晰,我更倾向于以这种方式来组织代码。
# prompt_builder.py
from textwrap import dedent
class PromptBuilder:
@staticmethod
def text_refinement_prompt_fn():
return dedent(
f"""
Rewrite the given text for grammar errors.
Make it more readable.
But don't change the meaning and writing style.
"""
)
@staticmethod
def bugfix_prompt_fn(framework, issue=""):
return dedent(
f"""
Act as a experienced {framework} developer.
Study the given code and fix the bug.
Bug: {issue}
"""
)
第一个函数生成一个“润色文本”的提示,该提示不需要任何参数。因此,这个函数本身没有参数,只是简单地返回要提供给大语言模型(LLM)的提示。第二个函数构建一个“修复问题”的提示,它需要两个参数,一个是必填参数,一个是可选参数。相应地,这个函数有两个参数,第一个是必填参数,第二个是可选参数,这与提示的结构一致。这些参数是通过使用f字符串插入到提示中的占位符里的。实际上,这些提示函数负责动态构建最终的提示内容。
3. 附加到模型上下文协议(MCP)服务器
现在,让我们把我们创建的提示添加到我们在上一篇文章中搭建的服务器上。
from mcp.server.fastmcp import FastMCP
from prompts import bugfix_prompt, text_refinement_prompt
# Initialize FastMCP server
mcp = FastMCP("Weather-Server")
# Attach prompts to the server
mcp.add_prompt(bugfix_prompt)
mcp.add_prompt(text_refinement_prompt)
if __name__ == "__main__":
# Initialize and run the server
mcp.run()
4. 连接到Claude桌面应用程序
JSON配置无需更改。配置与之前的相同。创建一个JSON配置文件。在以下位置创建一个JSON文件:C:\Users\USER>\AppData\Roaming\Claude\claude_desktop_config.json
{
"mcpServers": {
"weather": {
// Run python command within the virtual environment
// Absolute path to the python exe within the virtual envirnment
"command": "<PATH_TO_ENVIRONMENT>\\venv\\Scripts\\python",
"args": [
// Absolute path to server.py
"<PATH_TO_SERVER>\\server.py"
]
}
}
}
创建好配置文件后,重启Claude桌面应用程序。
重启Claude桌面应用程序后,你会看到一个名为“从模型上下文协议(MCP)附加”的按钮。点击该按钮,然后点击“选择一个集成项”。
在这个下拉菜单中,你可以看到你在模型上下文协议(MCP)中创建的提示信息都列在这里。现在让我们看看如何使用它们。首先,让我们试试“修复问题”提示。如果你点击它,你会看到这样一个弹出窗口。
它会要求你输入在提示中定义的提示参数。填写这些参数并提交。它将作为附件添加到Claude桌面应用程序中。现在你可以在聊天输入框中输入其余的提示内容了。
其他的模型上下文协议(MCP)提示与此类似。唯一的区别在于,它们不会要求输入参数。这些提示会直接作为附件添加到聊天中。
5. 总结
我们可以将这些模型上下文协议(MCP)提示用作模板。如果你使用Claude桌面应用程序来执行重复性任务,你可以为此创建相应的MCP提示。这样一来,你就无需手动输入提示内容了。你只需从MCP服务器中获取即可。此外,你还可以将所有提示存储在一个集中的位置。
相关文章:构建简单的本地MCP服务器