返回市场
多代理系统与MCP

多代理系统与MCP

作者:danmas0n38 星标更新:2025-02-19

项目介绍

使用MCP的LangGraph编码代理团队

在LangGraph Studio中打开

该项目使用LangGraph模型上下文协议(MCP)实现了一个小型编码代理团队。代理通过MCP服务器提供工具和能力,并通过统一网关进行访问。

该代理团队的整体目标是根据需求和代码上下文创建多个功能实现;人类操作员可以选择他们喜欢的方法并继续进行,而放弃其他方法。

该项目起源于2024年11月12日在纽约举行的Anthropic MCP黑客马拉松,并已发展成为独立项目。

架构

系统由三个主要组件组成:

  1. MCP网关服务器:一个服务器,它:

    • 管理多个MCP服务器进程
    • 提供访问工具的统一API
    • 处理与MCP服务器的通信
    • 通过简单的HTTP接口暴露工具
  2. MCP服务器:提供特定能力的单个服务器:

    • GitHub服务器:仓库操作(读取、写入、列出、搜索、创建分支、创建PR等)
    • 可以添加更多服务器以提供更多能力
  3. 编码代理:有三个代理协作完成编码任务:

    • 调度器:从人类消息中收集上下文,并使用MCP服务器访问Linear和GitHub。根据需要委托给规划者和编码者。
    • 规划者:根据需求和代码上下文创建包含多种实现建议的计划。不使用MCP。
    • 编码者:根据代码上下文和提出的实现,在不同的GitHub分支上实现所有这些。

开始使用

1. 安装依赖项

# 安装代理包
pip install -e .

# 安装网关包
cd gateway
pip install -e .
cd ..

2. 配置环境变量

代理支持通过环境变量配置多个LLM提供商:

# LLM配置 - 支持多个提供商:
LLM_MODEL=provider/model-name

# 支持的提供商和示例模型:
# - Anthropic: anthropic/claude-3-5-sonnet-20240620
# - OpenAI: openai/gpt-4
# - OpenRouter: openrouter/openai/gpt-4o-mini
# - Google: google/gemini-1.5-pro

# 不同提供商的API密钥
OPENAI_API_KEY=your_openai_api_key
ANTHROPIC_API_KEY=your_anthropic_api_key
OPENROUTER_API_KEY=your_openrouter_api_key
GOOGLE_API_KEY=your_google_api_key

# OpenRouter配置(如果使用OpenRouter)
OPENROUTER_BASE_URL=https://openrouter.ai/api/v1

3. 配置MCP服务器

网关服务器通过gateway/config.json进行配置。默认情况下,它启动两个MCP服务器:

{
  "mcp": {
    "servers": {
      "filesystem": {
        "command": "npx",
        "args": [
          "-y",
          "@modelcontextprotocol/server-filesystem",
          "/path/to/directory"
        ]
      },
      "memory": {
        "command": "npx",
        "args": [
          "-y",
          "@modelcontextprotocol/server-memory"
        ]
      }
    }
  }
}

可以从官方MCP服务器存储库添加更多服务器。

4. 启动网关服务器

cd gateway
python -m mcp_gateway.server

服务器默认将在端口8808上启动。

5. 配置代理

代理连接到网关的配置位于langgraph.json中:

{
  "dependencies": ["."],
  "graphs": {
    "agent": "./src/react_agent/graph.py:graph"
  },
  "env": ".env",
  "mcp": {
    "gateway_url": "http://localhost:8808"
  }
}

6. 使用代理

在LangGraph Studio中打开文件夹!代理将自动:

  1. 连接到网关服务器
  2. 发现可用工具
  3. 在对话中使工具可用

可用工具

代理可以访问来自两个MCP服务器的工具:

文件系统工具

  • read_file:读取文件内容
  • write_file:创建或更新文件
  • list_directory:列出目录内容
  • search_files:查找匹配模式的文件
  • 更多...

内存工具

  • create_entities:向知识图谱添加实体
  • create_relations:链接实体
  • search_nodes:查询知识图谱
  • 更多...

开发

添加新的MCP服务器

  1. MCP服务器存储库中找到一个服务器
  2. 将其配置添加到gateway/config.json
  3. 代理将自动发现其工具

自定义代理

  • 修改src/react_agent/prompts.py中的系统提示
  • 更新src/react_agent/graph.py中的代理推理
  • 通过包含更多的MCP服务器添加新功能

文档

许可证

本项目采用MIT许可证 - 详情见LICENSE文件。