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

相关推荐
AI大模型7 小时前
COZE实战部署(一)—— 扣子任务空间调配和实现
agent·coze·mcp
堆栈future12 小时前
揭秘 Google A2A 协议:赋能智能体协作的未来
llm·agent·mcp
小雷FansUnion2 天前
深入理解MCP架构:智能服务编排、上下文管理与动态路由实战
人工智能·架构·大模型·mcp
CoderLiu3 天前
用这个MCP,只给大模型一个figma链接就能直接导出图片,还能自动压缩上传?
前端·llm·mcp
吴佳浩3 天前
Python入门指南-AI番外-MCP完整教程:从零开始学会Model Context Protocol
人工智能·python·mcp
聚客AI3 天前
🚀拒绝试错成本!企业接入MCP协议的避坑清单
人工智能·掘金·日新计划·mcp
ZNineSun3 天前
MCP+Cursor入门
ai·cursor·mcp
大模型真好玩3 天前
准确率飙升!Graph RAG如何利用知识图谱提升RAG答案质量(四)——微软GraphRAG代码实战
人工智能·python·mcp
源图客3 天前
MCP Chart Server服务本地部署案例
mcp
weixin_4250230012 天前
Spring Boot使用MCP服务器
服务器·spring boot·后端·spring ai·mcp