此仓库是一个小型实验环境,结合了一个标准的Kedro示例项目、一个MCP服务器以及两个不同的MCP代理。
底层项目结构是通过使用Spaceflights示例并执行kedro new命令生成的。如果您希望详细了解Kedro概念(如项目布局、管道、配置、CLI等),请参考官方教程而不是本README:
以下内容仅关注MCP/MCP代理部分:mcp_server.py,agent.py 和 agent_langgraph.py。
mcp_server.py – Kedro项目上的MCP服务器mcp_server.py 使用FastMCP将Kedro项目转变为Model Context Protocol (MCP)服务器:
bootstrap_project在当前目录中启动Kedro项目。kedro.framework.project.pipelines)来发现可用的管道。list_pipelines – 返回所有已注册管道的名称和描述(如果有,描述来自每个管道模块的create_pipeline函数的文档字符串)。run_pipeline – 在KedroSession内运行选定的管道。通常您不会手动运行mcp_server.py;相反,代理会使用MCP Python SDK中的StdioServerParameters和stdio_client来启动它。
agent.py – 带有Langfuse跟踪的MCP代理agent.py 是一个简单但完全可追踪的MCP代理:
mcp_server.py 并打开一个MCP ClientSession。session.list_tools()以发现服务器公开的工具。tool_calls并在MCP服务器上使用session.call_tool执行它们。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_server.py(与agent.py相同)。langchain_mcp_adapters.tools.load_mcp_tools自动将MCP工具转换为LangChain工具。ChatOpenAI 从 langchain_openai。load_mcp_tools返回的MCP工具。process_query(...) – 通过LangGraph代理运行单个查询。chat() – 具有对话记忆的交互循环(状态跨轮次携带先前的消息)。stream_query(...) – 流式传输部分响应,随着它们的产生。使用以下命令运行它:
python agent_langgraph.py
您将获得一个基于LangGraph的对话代理,该代理仍然可以通过MCP检查和运行Kedro管道。