让你的MCP符合openai协议

参考的开源项目列表

MCPO项目简介

mcpo 项目的核心原理在于将传统通过 stdio 通信的 MCP 工具代理为符合 OpenAPI 标准的 HTTP 服务器,从而让 AI 工具和大语言模型能够直接调用这些工具,无需额外编写集成代码。它自动生成交互式文档,并内置安全、错误处理和认证等功能,使得原本不易集成的 MCP 工具能够轻松与现代应用和 SDK 对接。
源项目地址

MCPSEVERE

MCPSEVERE 是 Model Context Protocol 服务器集合中的一个整体概念,旨在为 AI 工具提供一个统一且标准化的服务平台,使各类基于 MCP 协议的服务器能够通过一致的接口与大语言模型进行交互。该项目涵盖了从文件系统访问、网络搜索、版本控制到数据库操作等多个领域的参考实现,并附带详尽的文档和示例,帮助开发者快速构建、测试和扩展自己的 MCP 服务。通过 MCPSEVERE,开发者可以利用开源的 MCP 生态系统实现跨平台、跨工具的数据访问和功能调用,从而大大简化 AI 工具与外部数据源和应用集成的复杂性。
源项目地址

MCProtocolLib

MCProtocolLib 是一个用 Java 编写的库,用于处理 Minecraft 的网络协议。它封装了与 Minecraft 客户端和服务器之间通信所需的各种数据包的编码、解码和传输细节,使开发者能够更轻松地构建 Minecraft 相关应用,比如机器人、代理服务器或自定义服务器。通过抽象出复杂的网络协议,MCProtocolLib 为开发者提供了一个简单且高效的 API,以便实现与 Minecraft 服务器的连接和交互。
源项目地址

open-webui

一个开源的 Web 用户界面平台,旨在为 AI 工具和大语言模型提供一个统一且可扩展的界面。它整合了多种常用功能,如工具管理、任务协作、实时预览和交互式文档,帮助用户更方便地使用和管理 AI 相关的应用和服务。简而言之,Open WebUI 为开发者和终端用户提供了一个易用、模块化的前端平台,便于集成和展示各种 AI 工具和工作流。
源项目地址

实战

本次实战使用文件系统MCP服务,同时环境为python3.12(最低为python3.11如果想使用大多数功能的话),windows11以及欧拉SP2(mac和linux的部分版本支持),pycharm。

初始环境安装

 pip install mcpo

进入文件系统MCP的git地址
由于这里没有额外安装过程,所以可以跳过一些python包的安装之类的。
在这里插入图片描述
相应的windows命令为:

npx -y @modelcontextprotocol/server-filesystem 你需要授权的路径

linux命令

npx -p @modelcontextprotocol/server-filesystem mcp-server-filesystem "$(pwd)"

同时mcpo的指令对应就是
linux/mac:

mcpo --port 服务端口号 -- npx @modelcontextprotocol/server-filesystem  授权路径

windows:

mcpo --port 8000 -- npx.cmd @modelcontextprotocol/server-filesystem E:\work\Project\Python_Project\Megatron\data

启动成功的验证

在这里插入图片描述
浏览器输入提示的网址即可访问,加上/docs即可查看文档,如图所示
在这里插入图片描述
测试接口是否正常,这里选择文件读取
在这里插入图片描述

import requests

def test_read_file_api():
    # 接口的URL,根据实际情况修改
    url = "http://localhost:8000/read_file"

    # 要读取的文件路径
    request_body = {
        "path": "写自己的路径"
    }

    try:
        # 发送POST请求,body中携带JSON数据
        response = requests.post(url, json=request_body)

        # 检查响应状态码
        if response.status_code == 200:
            print("接口调用成功,文件内容如下:")
            print(response.text)
        else:
            print(f"接口调用失败,状态码:{response.status_code}")
            print(f"错误信息:{response.text}")

    except requests.exceptions.RequestException as e:
        print("请求过程中出现异常:", e)

if __name__ == "__main__":
    test_read_file_api()

模拟openai协议调用过程

为了模拟同时降低文章冗余度,测试使用开源项目open-webui,当然又很多比他更好的测试项目,但这个安装目前是我发现最简单的。

pip install open-webui
open-webui serve

依次点击这两个进行语言配置
在这里插入图片描述
在这里插入图片描述
添加工具
在这里插入图片描述

使用工具

在这里插入图片描述

多工具使用

比如我想增加一个时间工具
那么我需要在刚才启动openwebui的目录下新建一个json,比如MCP.json。然后正常写他们的配置文件。
linux/mac参考:

{
  "mcpServers": {
    "filesystem": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "/"
      ],
      "description": "文件系统服务:用于列出、读取和管理本地文件和目录。"
    },
    "time": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "mcp-server-time",
        "--local-timezone=Asia/Shanghai"
      ],
      "description": "时间服务:提供当前本地时间和时区转换功能。"
    }
  }
}

windows参考:

{
  "mcpServers": {
    "filesystem": {
      "type": "stdio",
      "command": "npx.cmd",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "E://"
      ],
      "readyPattern": ".*"
    },
    "time": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "mcp-server-time",
        "--local-timezone=Asia/Shanghai"
      ],
      "readyPattern": ".*"
    }
  }
}

安装环境

npx @modelcontextprotocol/inspector uvx mcp-server-time

运行(为了和上一个区别开来,我把端口换成了9000)

 mcpo --config MCP.json  --port 9000

检查结果
在这里插入图片描述同时文档我们也可以正常看,只需要加入配置文件相应字段
在这里插入图片描述

### 在 Longchain 中使用 MCP 的方法 在 Longchain 中实现 MCP(模型上下文协议)与 RAG(检索增强生成)的结合,可以通过封装 MCP 相关组件为微服务来实现,并确保这些服务符合 MCP 协议定义的通信模式和上下文传递格式[^5]。以下是实现的关键技术点: #### 1. 封装 MCP 组件 MCP 需要将 RAG 的核心组件(如向量数据库、检索器)封装为符合 MCP 标准的微服务。这包括定义客户端-服务器通信模式以及实现上下文传递格式(如 JSON Schema)和工具调用接口(如 RESTful API)。通过这种方式,MCP 能够无缝对接不同的异构系统,例如 Python 编译器或企业知识图谱[^3]。 #### 2. 整合 RAG 和 MCP RAG 系统中的向量数据库和检索器可以被封装为 MCP 微服务。这些服务通过 MCP 协议与 LLM 进行交互,从而实现更高效的工具选择和任务执行。实验结果显示,加入 RAG 后的 MCP 系统在工具选择准确性上显著优于基线方法,准确率提升了约 200%[^4]。 #### 3. 代码示例 以下是一个简单的代码示例,展示如何在 Longchain 中整合 MCP 和 RAG: ```python from langchain.vectorstores import FAISS from langchain.embeddings.openai import OpenAIEmbeddings from langchain.chains import RetrievalQA from langchain.llms import OpenAI import requests # 创建嵌入模型 embeddings = OpenAIEmbeddings() # 加载向量数据库 vectorstore = FAISS.load_local("path/to/faiss_index", embeddings) # 定义 MCP 微服务接口 def mcp_retriever(query): # 调用 MCP 微服务进行检索 response = requests.post("http://mcp-service/retrieve", json={"query": query}) return response.json()["results"] # 创建检索链 qa_chain = RetrievalQA.from_chain_type( llm=OpenAI(temperature=0), chain_type="stuff", retriever=mcp_retriever # 使用 MCP 微服务作为检索器 ) # 执行查询 response = qa_chain.run("请回答关于你的文档的问题") print(response) ``` #### 4. 性能优化 为了进一步提升性能,可以减少提示中使用的 token 数量。实验数据显示,RAG-MCP 的平均提示大小为 1084 个 token,远低于“空白条件”方法的 2133.84 个 token。此外,生成的 token 数量略高(78.14 vs 23.60),但这种增加与更高的准确性和任务成功率相关。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值