返回市场
kedro-mcp代理

kedro-mcp代理

作者:DimedS2 星标更新:2025-11-15

项目介绍

kedro-mcp-agent

此仓库是一个小型实验环境,结合了一个标准的Kedro示例项目、一个MCP服务器以及两个不同的MCP代理。

底层项目结构是通过使用Spaceflights示例并执行kedro new命令生成的。如果您希望详细了解Kedro概念(如项目布局、管道、配置、CLI等),请参考官方教程而不是本README:

https://docs.kedro.org/zh_CN/stable/getting-started/course/

以下内容仅关注MCP/MCP代理部分:mcp_server.pyagent.pyagent_langgraph.py


mcp_server.py – Kedro项目上的MCP服务器

mcp_server.py 使用FastMCP将Kedro项目转变为Model Context Protocol (MCP)服务器:

  • 使用bootstrap_project在当前目录中启动Kedro项目。
  • 使用Kedro的管道注册表(kedro.framework.project.pipelines)来发现可用的管道。
  • 将Kedro操作暴露为MCP工具,例如:
    • list_pipelines – 返回所有已注册管道的名称和描述(如果有,描述来自每个管道模块的create_pipeline函数的文档字符串)。
    • run_pipeline – 在KedroSession内运行选定的管道。
  • 通过标准输入输出进行通信,因此它可以被任何兼容MCP的客户端(包括本仓库中的代理)启动。

通常您不会手动运行mcp_server.py;相反,代理会使用MCP Python SDK中的StdioServerParametersstdio_client来启动它。


agent.py – 带有Langfuse跟踪的MCP代理

agent.py 是一个简单但完全可追踪的MCP代理:

  • 作为子进程通过标准输入输出启动mcp_server.py 并打开一个MCP ClientSession
  • 调用session.list_tools()以发现服务器公开的工具。
  • 在OpenAI聊天完成API之上实现一个手动工具调用循环:
    • 将MCP工具模式转换为OpenAI工具定义。
    • 向模型发送用户提示和工具定义。
    • 从模型响应中读取tool_calls并在MCP服务器上使用session.call_tool执行它们。
    • 将工具输出反馈给LLM,直到返回最终的自然语言答案。
  • 以“旧式”方式集成Langfuse以提高可观测性:
    • langfuse.openai导入AsyncOpenAI
    • 所有对self.llm.chat.completions.create(...)的调用都会自动追踪到您的Langfuse项目,前提是设置了常规的LANGFUSE_*OPENAI_API_KEY环境变量。

此文件是参考实现,如果您想看到一个完整的MCP + Kedro + OpenAI + Langfuse集成而无需任何LangChain/LangGraph抽象。

在激活的虚拟环境中运行它:

python agent.py

您将获得一个交互式提示,可以在此处提问;代理将通过MCP工具检查和运行Kedro管道,并且所有LLM调用都将出现在Langfuse中的跟踪中。


agent_langgraph.py – 基于LangGraph的MCP代理(无Langfuse)

agent_langgraph.py 是基于LangGraph和LangChain构建的另一种代理。它保留了相同的MCP服务器,但将编排委托给了基于图的代理:

  • 通过MCP标准输入输出客户端启动并连接到mcp_server.py(与agent.py相同)。
  • 使用langchain_mcp_adapters.tools.load_mcp_tools自动将MCP工具转换为LangChain工具。
  • 使用LangGraph / LangChain创建一个ReAct风格的代理:
    • LLM: ChatOpenAIlangchain_openai
    • 工具: 由load_mcp_tools返回的MCP工具。
  • 提供:
    • process_query(...) – 通过LangGraph代理运行单个查询。
    • chat() – 具有对话记忆的交互循环(状态跨轮次携带先前的消息)。
    • stream_query(...) – 流式传输部分响应,随着它们的产生。

使用以下命令运行它:

python agent_langgraph.py

您将获得一个基于LangGraph的对话代理,该代理仍然可以通过MCP检查和运行Kedro管道。