
无限制地使用本地LLM来实际检验MCP
学习生成式人工智能应用
上次我思考如何在本地设置LLM API时, 你将能够在应用程序开发中进行无限制的LLM实验.
在本地机器上离线部署LLM API
在本地和离线环境中探索LLM开发, 无需依赖付费的ChatGPT服务
如果我们能将LLM连接到提供的MCP(模型上下文协议), 那该多好啊! 这样我们不仅可以进行聊天, 还可以执行MCP提供的某些任务.
在MCP服务器上提供了许多MCP供我们探索. 在本例中, 我们将尝试Airbnb提供的MCP, 该MCP在AirBnb MCP 服务器中有详细文档, 用户可以在其中进行聊天并列出Airbnb上的房源.
1. 启动Ollama服务
首先, 我们需要安装 LLM 引擎, 并确保 LLM 模型已安装, 具体操作可参考[这篇文章](medium.com/tech-ai-cha...? sk=75234e581f73a8c577011c278dcfbd75)
然后, 我们将启动本地 LLM 引擎 Ollama, 使用以下方式之一:
sql
brew services start ollama
或
ollama serve
指向服务 API
现在, 我们需要为本地 Ollama 服务提供入口点. API 设置的详细说明请参阅这篇文章.
ini
export OPENAI_API_KEY=not-needed
export OPENAI_API_BASE="http://localhost:11434/api/generate"
# OR, for continuous chat base
export OPENAI_API_BASE="http://localhost:11434/api/chat"
注意: 若拥有 API 密钥, 也可指向 ChatGPT 服务器, 但本例中设置为本地模式
2. 安装本地 MCP 服务包
为实现与 MCP 的连接, 我们使用 PraisonAI, 其源代码可在此处获取: PraisonAI
我们将在此 Python 环境中进行安装. 因此, 建议先按照此处文档设置本地虚拟 Python 环境.
可通过以下方式安装:
arduino
pip install -U "praisonaiagents[llm]" gradio
安装完成后, 即可在 Python 项目中连接 MCP
3. 首个 Ollama 应用程序
编写以下应用程序:
ini
from praisonaiagents import Agent, MCP
search_agent = Agent(
instructions="""You help book apartments on Airbnb.""",
llm="ollama/llama3",
tools=MCP("npx -y @openbnb/mcp-server-airbnb --ignore-robots-txt")
)
search_agent.start("Search for Apartmnets in Melbourne for 2 nights. 13/06/25 - 15/06/25")
Agent
参数可根据 github.com/openbnb-org... 提供的说明设置 MCP
之后, 我们可以进行搜索. (注意: 你需要运行 Ollama 服务, 如上文步骤 1 所示), 它应运行并显示如下结果:

基于你的提示自动生成的初始参数

MCP 的输出 JSON 结果(比屏幕上显示的要长得多)

生成的输出

同时显示提示和输出
带本地 LLM 的聊天式 MCP
在上述示例中, 提示语是直接写在程序中的. 如果我们希望提示语由用户输入, 并且具有聊天的上下文, 该怎么办?
为此, 我们需要确保导出本地 Ollama 聊天 API 而不是:
ini
export OPENAI_API_KEY=not-needed
export OPENAI_API_BASE="http://localhost:11434/api/chat"
然后我们可以编写一个聊天程序, 该程序将持续提示用户输入(代码修改自[这篇文章](medium.com/tech-ai-cha...? sk=3599805d6f5491dc3824aa14e64f7c88)
python
from praisonaiagents import Agent, MCP
search_agent = Agent(
instructions="""You help book apartments on Airbnb.""",
llm="ollama/llama3",
tools=MCP("npx -y @openbnb/mcp-server-airbnb --ignore-robots-txt")
)
def stream_chat(prompt, messages):
messages.append({"role": "user", "content": prompt})
try:
search_agent.start(prompt)
except requests.exceptions.RequestException as e:
print(f"\n❌ Error: {e}")
if __name__ == "__main__":
print("=== Ollama Chat with Context ===")
print("Type 'exit' or 'quit' to leave.\n")
messages = [] # 💡 This holds the conversation history
try:
while True:
prompt = input("Chat with Airbnb: ")
if prompt.strip().lower() in ["exit", "quit"]:
print("👋 Goodbye!")
break
stream_chat(prompt, messages)
except KeyboardInterrupt:
print("\n👋 Interrupted. Goodbye!")
运行程序后, 现在你可以与Airbnb MCP进行连续聊天, 如下所示:

我尝试了一些关于狗的查询, 并得到了些有趣的结果.

适当的用户界面示例
以上均为命令提示符界面. 若要实现如下所示的适当用户网页界面, 可使用github.com/gradio-app/..., 这是一个开源 Python 包, 可帮助你快速构建机器学习模型, API 或任意 Python 函数的演示或网页应用程序.

我们之前已在 Python 环境中下载了该包, 使用:
arduino
pip install -U "praisonaiagents[llm]" gradioCredits
要使用它, 只需编写以下代码:
ini
from praisonaiagents import Agent, MCP
import gradio as gr
def search_airbnb(query):
agent = Agent(
instructions="""You help book apartments on Airbnb.""",
llm="ollama/llama3",
tools=MCP("npx -y @openbnb/mcp-server-airbnb --ignore-robots-txt")
)
result = agent.start(query)
return f"## Airbnb Search Results\n\n{result}"
demo = gr.Interface(
fn=search_airbnb,
inputs=gr.Textbox(placeholder="I want to book an apartment in Place for X night..."),
outputs=gr.Markdown(),
title="Airbnb Booking Assistant",
description="Enter your booking requirements below!"
)
demo.launch()
运行后, 将显示:

你可通过 http://127.0.0.1:7860/ 访问 Web 界面.

提交查询后, 结果将显示在左侧面板:

致谢
本教程主要基于此 YouTube 视频, 并添加了补充信息以完善缺失部分(例如启动 Ollama 服务器, 导出所需参数以及实现交互式应用程序)
好吧, 今天的内容就分享到这里啦!
一家之言, 欢迎拍砖!
Happy coding! Stay GOLDEN!