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

相关推荐
老H科研技术8 小时前
第 04 篇:MCP中SDK 对比与选型 —— 选对工具,事半功倍
人工智能·mcp
木雷坞10 小时前
Playwright MCP Docker 部署:mcr 镜像、浏览器工具和权限配置
运维·docker·容器·mcp
winlife_12 小时前
全程用 AI 做一款商业级手游 · EP10 道具系统:让三个按钮真正改变棋盘
windows·算法·unity·ai编程·游戏开发·mcp·玩法系统
Mr_Morning12 小时前
MCP 通信
mcp
MicrosoftReactor12 小时前
技术速递|以 Token 经济学驱动的架构:混合模型、AI Runway、AKS Kata MicroVM 与 MCP
人工智能·ai·架构·copilot·mcp
不剪发的Tony老师13 小时前
DBHub:一款免费开源的数据库MCP服务器
数据库·mcp
特长腿特长13 小时前
Cherry Studio 通过 MCP 接口操作 Obsidian 完全指南
ai·obsidian·mcp
Python私教14 小时前
AI 代理只会在本地打转?我用 MCP 给它接上手脚,3 步接通第一个外部服务
agent·ai编程·mcp
心之伊始1 天前
Spring AI MCP Client 实战:让 Java 后端通过 stdio 调用本地工具服务
java·spring boot·agent·spring ai·mcp
winlife_1 天前
全程用 AI 做一款商业级手游 · EP9 收尾与复盘:做到了哪,没做到哪,边界在哪
java·开发语言·人工智能·unity·ai编程·游戏开发·mcp