mcpField
M
Model Context Protocol (MCP) Server

Model Context Protocol (MCP) Server

本地服务
github.com/AdamPippert其他323 周前更新

关于 Model Context Protocol (MCP) Server

这是一个已停止维护的模块化 MCP 服务,可将请求路由到 GitHub、GitLab、Google Maps、持久化记忆和 Puppeteer 工具。适合希望使用统一网关并按需修改服务的用户。

主要功能

  1. 01统一 MCP 网关
  2. 02GitHub 与 GitLab 操作
  3. 03Google Maps 搜索与路线
  4. 04持久化键值记忆
  5. 05Puppeteer 网页自动化

适用场景

  1. 01搜索仓库并管理议题
  2. 02查询地点与路线
  3. 03持久化存储和检索数据
  4. 04捕获或提取网页内容

MCP 相关

通过统一 MCP 网关提供各项工具,并以清单描述可用能力。每项工具也提供直接 API 端点。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

** 注意:由于较小模型存在记忆问题,而我更倾向于将 MCP 服务作为独立的容器化服务提供方,而不是单体路由服务提供方,因此本项目已不再维护。代码仍会保留,以便其他人继续尝试这条路线。

Model Context Protocol (MCP) 服务

一个模块化服务,实现了 Model Context Protocol 标准,为 GitHub、GitLab、Google Maps、Memory 存储和 Puppeteer 网页自动化提供工具。

架构

MCP 服务采用模块化架构构建,每个工具都作为单独的模块实现。服务提供统一的网关,将请求路由到相应的工具。

MCP 服务架构

功能

  • MCP 网关:遵循 MCP 标准,为所有工具请求提供统一的端点
  • MCP 清单:用于描述所有可用工具及其功能的端点
  • 直接访问工具:每个工具都可以通过自己的 API 端点直接访问
  • 模块化设计:可根据需要轻松添加或移除工具
内置工具
  1. GitHub 工具:与 GitHub 仓库、议题交互并进行搜索
  2. GitLab 工具:与 GitLab 项目、议题和流水线交互
  3. Google Maps 工具:地理编码、路线查询和地点搜索
  4. Memory 工具:持久化存储和检索数据
  5. Puppeteer 工具:截取屏幕截图、生成 PDF 并提取网站内容

开始使用

先决条件
  • Python 3.8 或更高版本
  • Node.js 14 或更高版本
  • 基于 Red Hat 的 Linux 发行版(RHEL、CentOS、Fedora),或任何 Linux/macOS 系统
安装
  1. 克隆此仓库:

    git clone https://github.com/yourusername/mcp-server.git
    cd mcp-server
    
  2. 安装 Python 依赖项:

    pip install -r requirements.txt
    
  3. 安装 Node.js 依赖项:

    npm install
    
  4. 创建包含配置的 .env 文件:

    SECRET_KEY=your-secret-key
    DEBUG=False
    
    # GitHub configuration
    GITHUB_TOKEN=your-github-token
    
    # GitLab configuration
    GITLAB_TOKEN=your-gitlab-token
    
    # Google Maps configuration
    GMAPS_API_KEY=your-google-maps-api-key
    
    # Memory configuration
    MEMORY_DB_URI=sqlite:///memory.db
    
    # Puppeteer configuration
    PUPPETEER_HEADLESS=true
    CHROME_PATH=/usr/bin/chromium-browser
    
  5. 启动服务:

    python app.py
    
容器化部署

你可以使用 Docker 或 Podman(Red Hat 的容器引擎)运行此服务。

Docker 部署

如果你已经安装了 Docker 和 docker-compose:

  1. 构建 Docker 镜像:

    docker build -t mcp-server .
    
  2. 运行容器:

    docker run -p 5000:5000 --env-file .env mcp-server
    
  3. 也可以使用 docker-compose:

    创建 docker-compose.yml 文件:

    version: '3'
    services:
      mcp-server:
        build: .
        ports:
          - "5000:5000"
        volumes:
          - ./data:/app/data
        env_file:
          - .env
        restart: unless-stopped
    

    然后运行:

    docker-compose up -d
    
Podman 部署

对于使用 Podman 的基于 Red Hat 的系统(RHEL、CentOS、Fedora):

  1. 构建容器镜像:

    podman build -t mcp-server .
    
  2. 运行容器:

    podman run -p 5000:5000 --env-file .env mcp-server
    
  3. 如果需要持久化存储:

    mkdir -p ./data
    podman run -p 5000:5000 --env-file .env -v ./data:/app/data:Z mcp-server
    

    注意:对于启用了 SELinux 的系统,:Z 后缀很重要。

  4. 使用 Podman Compose(如果已安装):

    # Install podman-compose if needed
    pip install podman-compose
    
    # Use the same docker-compose.yml file as above
    podman-compose up -d
    

使用 MCP 服务

MCP 网关

MCP 网关是使用 MCP 标准访问所有工具的主端点。

端点:POST /mcp/gateway

请求格式:

{
  "tool": "github",
  "action": "listRepos",
  "parameters": {
    "username": "octocat"
  }
}

响应格式:

{
  "tool": "github",
  "action": "listRepos",
  "status": "success",
  "result": [
    {
      "id": 1296269,
      "name": "Hello-World",
      "full_name": "octocat/Hello-World",
      "owner": {
        "login": "octocat",
        "id": 1
      },
      ...
    }
  ]
}
MCP 清单

MCP 清单描述所有可用工具及其功能。

端点:GET /mcp/manifest

响应格式:

{
  "manifestVersion": "1.0",
  "tools": {
    "github": {
      "actions": {
        "listRepos": {
          "description": "List repositories for a user or organization",
          "parameters": {
            "username": {
              "type": "string",
              "description": "GitHub username or organization name"
            }
          },
          "returns": {
            "type": "array",
            "description": "List of repository objects"
          }
        },
        ...
      }
    },
    ...
  }
}
直接访问工具

每个工具也可以通过自己的 API 端点直接访问:

  • GitHub:/tool/github/...
  • GitLab:/tool/gitlab/...
  • Google Maps:/tool/gmaps/...
  • Memory:/tool/memory/...
  • Puppeteer:/tool/puppeteer/...

有关可用端点的详情,请参阅各工具的 API 文档。

工具文档

GitHub 工具

GitHub 工具提供对 GitHub API 的访问,可用于操作仓库、议题和搜索。

操作:

  • listRepos:列出用户或组织的仓库
  • getRepo:获取指定仓库的详情
  • searchRepos:搜索仓库
  • getIssues:获取仓库的议题
  • createIssue:在仓库中创建新议题
GitLab 工具

GitLab 工具可访问 GitLab API,以处理项目、议题和流水线。

操作:

  • listProjects:列出经过身份验证的用户可访问的所有项目
  • getProject:获取特定项目的详细信息
  • searchProjects:搜索 GitLab 上的项目
  • getIssues:获取项目的议题
  • createIssue:在项目中创建新议题
  • getPipelines:获取项目的流水线
Google Maps 工具

Google Maps 工具可访问 Google Maps API,以进行地理编码、路线查询和地点搜索。

操作:

  • geocode:将地址转换为地理坐标
  • reverseGeocode:将地理坐标转换为地址
  • getDirections:获取两个地点之间的路线
  • searchPlaces:使用 Google Places API 搜索地点
  • getPlaceDetails:获取特定地点的详细信息
Memory 工具

Memory 工具提供持久化键值存储,用于存储和检索数据。

操作:

  • get:根据键获取记忆项
  • set:创建或更新记忆项
  • delete:根据键删除记忆项
  • list:列出所有记忆项,可选择筛选
  • search:按值搜索记忆项
Puppeteer 工具

Puppeteer 工具提供网页自动化功能,可用于截取屏幕截图、生成 PDF 和提取网站内容。

操作:

  • screenshot:截取网页屏幕截图
  • pdf:生成网页的 PDF
  • extract:提取网页内容

贡献

欢迎贡献!以下是扩展 MCP 服务的方法:

添加新工具
  1. 在 tools 目录中创建新文件,例如 tools/newtool_tool.py
  2. 按照现有工具的模式实现工具及其操作
  3. 在 app.py 的清单中添加该工具
  4. 在 tools/__init__.py 中注册该工具的蓝图

许可证

本项目采用 MIT 许可证授权,详情请参阅 LICENSE 文件。

致谢

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。