在本地 LLM 上运行MCP

无限制地使用本地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!

相关推荐
掘我的金10 小时前
MCP生产部署实战:从开发到上线的完整指南
llm·mcp
bytebeats12 小时前
MCP + A2A 可能是自互联网以来软件领域最大的变革
mcp
bytebeats13 小时前
强大的代理通信其实是 A2A + MCP + LangChain
langchain·mcp
掘我的金17 小时前
MCP 学习系列②:理解 MCP 的核心结构与思维模型
llm·mcp
前端搬砖小助手19 小时前
从 Stdio 到 HTTP SSE,在 APIPark 托管 MCP Server
mcp·apipark·ai网关·ai gateway
小奏技术1 天前
基于 Spring AI 和 MCP:用自然语言查询 RocketMQ 消息
后端·aigc·mcp
柒崽1 天前
如何搭建一个MCP服务,然后在Cursor中调用,半小时,彻底掌握MCP
mcp
波点兔2 天前
【亲测有效 | Cursor Pro每月500次快速请求扩5倍】(Windows版)Cursor中集成interactive-feedback-mcp
windows·mcp·cursor pro
CodeAgent2 天前
【MCP 第二篇】实现一个简易的MCP
ai编程·mcp