在本地 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!

相关推荐
思绪漂移8 小时前
阿里云 【免费试用】MCP 赋能可视化 OLAP 智能体应用
阿里云·云计算·agent·云原生数据库·mcp
大模型真好玩9 小时前
深入浅出LangChain AI Agent智能体开发教程(五)—LangChain接入工具基本流程
人工智能·python·mcp
idolyXyz13 小时前
JSON-RPC 2.0 规范
ai·mcp
NocoBase15 小时前
GitHub 上 Star 数量前 8 的开源 MCP 项目
开源·openai·mcp
裘乡15 小时前
一文入门 MCP(Model Context Protocol)
mcp
Lstmxx15 小时前
解放前端生产力:我如何用 LLM 和 Bun.js 构建一个 YApi to TypeScript 的自动化代码生成服务
前端·ai编程·mcp
裘乡15 小时前
MCP 进阶思考
mcp
CloudWeGo16 小时前
AI编程幻觉频发?字节跳动开源ABCoder:让AI深度阅读你的代码
ai编程·mcp·trae
人生都在赌17 小时前
我用一个周末开发的MCP工具,让Claude帮我管理了整个项目
ai编程·claude·mcp
dylan55_you18 小时前
掌控AI工具链:用 Python + API 构建 AI MCP 服务器
人工智能·ai·mcp