模型上下文协议实现

一个通过填充模型上下文相关数据以弥补知识差距的Python项目,适用于需要实时数据支持的模型交互场景。

  • by SURIAPRAKASH1
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 SURIAPRAKASH1/mcp-python

使用说明

MCP-PYTHON🔃🔏:

以Python的方式实现模型上下文协议。这是一个包含MCP的简单项目。即使是最复杂的模型(通常是LLM🧠) 仍然不知道实时发生了什么。模型知识受到某种限制。因此,当用户的查询涉及实时数据问题时,模型无法提供合理的响应(CoT模型就像让我们幻觉🤪). MCP通过以下方式缩小了这一知识差距 通过用户批准的相关数据填充模型上下文.


设置

1.安装uv

此项目使用 紫外线 用于依赖性管理。确保你有 uv 安装:

2.安装依赖项

从项目根目录运行:

uv sync --project mcp-client
uv sync --project mcp-python

这将安装每个子项目中指定的所有依赖项 uv.lock 文件。

3.陷阱:

  • 如果你在安装后遇到任何bug,所有东西都会被跟踪 .log 所以不要担心破坏项目🥚, 只是去做并从中学习👍.

内容📃:

我只是在浏览项目的结构并解释它是什么?它是如何使用的?在MCP的宇宙中。如何使用取决于你👊.

mcp客户端: 🤝

主机:

  • 应用程序/UI;任何人(最终用户)都可以与进行交互。格雷迪奥担任主持人。主机是包含客户端和模型的主机,就像它的顶层一样。
  • 运行任何一个$\downarrow$命令来启动主机。改变 .../server.py 匹配mcp服务器的绝对路径。它将创建 格拉迪奥 和 客户端 然后 客户端 将发射 服务器 作为子流程结束 标准输入输出.
uv run mcp-client/host.py --server_command python .../server.py
python mcp-client/host.py --server_command python .../server.py
  • 运行$\downarrow$命令中的任何一个来启动主机。它用于客户端与可流式传输的http服务器通信。改变 your_mcp_server_url 使用mcp服务器的实际url
uv run mcp-client/host.py --streamablehttp_url your_mcp_server_url
python mcp-client/host.py --streamablehttp_url your_mcp_server_url

客户端:

  • 被主人包裹;代表主机启动与服务器的通信。为模型间接处理服务器提供会话/平台。
  • 例如,如果LLM想要从浏览器获取一些真实数据,LLM会说,这是从浏览器获取数据的函数,嘿,客户端,我希望你为我执行这个函数,并返回这个函数的结果。客户端将该函数带到服务器,然后服务器执行该函数,并返回该函数的结果。

mcp服务器: ⚙

服务器:

  • 您可以将服务器视为一段代码监听👂 让某人联系并工作🏋️‍♀️ 为他们。我们可以将服务器部署为 可流式传输http 在托管平台或启动服务器中,作为客户端的子流程,通过 标准输入输出.

  • 此实现提供了动态方式,因此您可以根据个人需求使用stdio或可流式传输的http服务器。

  • 在本地运行中启动可流式传输的http服务器;

    python mcp-server/server.py --transport streamable-http

服务器级别:

  • 我们可以启动此服务器 gradio mcp服务器将gradio与mcp服务器集成在一起,这样我们就可以在huggingface上将这个mcp服务器作为独立的gradio mcp服务器运行🤗 在本地安装或启动gradio mcp服务器。

  • 要在本地启动gradio mcp服务器,只需运行$\downarrow$命令之一,

python mcp-server/app.py
gradio mcp-server/app.py
  • 推动 gradio mcp服务器 拥抱脸🤗 空格跟随$\downarrow$命令,

    git remote add space https://huggingface.co/spaces/huggingface-name/space-name
    
    • 添加远程空间。改变 space-name 到您的实际空间名称和 huggingface-name 转到huggingface帐户的用户名。
    git subtree --prefix=mcp-server -b mcp-server-space
    
    • 这将创建名为的新分支 mcp服务器空间 (这只是将分支名称更改为您想要的名称),仅包含以下内容 mcp服务器.
    git push space mcp-server-space:main --force
    
    • 它将推动 mcp服务器空间 分支到巨大的面部空间。它是 --force 所以要小心,它会覆盖空间的所有内容。如果你刚刚创建了空间,可以使用 --force ✅, 如果空间中已经有一些内容,请不要使用 --force ❌.

原语:

  • 模型上下文协议的核心组件。到目前为止,这个仓库只实现了 工具.
  1. 工具
  2. 资源
  3. 提示模板
  4. 采样

工具:

  • 工具只是 可执行函数 没有别的了。因此,当LLM想要使用某个工具时,它会给出该工具的名称和参数。主控程序 客户端 将获取有关工具的信息 服务器,服务器执行该工具(函数)并返回结果,客户端然后将该响应传递给LLM,现在LLM可以继续其进程。这意味着LLM不能自行执行任何函数,而是由我们负责工具(函数)的执行。