Skip to main content
Glama

** 注意:由于较小模型的内存问题,该项目已停止维护,这意味着我更倾向于使用独立的容器化服务器,而不是单体路由。代码仍在维护中,以便其他人仍想尝试这条路线。

模型上下文协议 (MCP) 服务器

一个实现模型上下文协议标准的模块化服务器,为 GitHub、GitLab、Google Maps、内存存储和 Puppeteer 网络自动化提供工具。

建筑学

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

MCP 服务器架构

Related MCP server: GitHub MCP Server

特征

  • MCP 网关:所有遵循 MCP 标准的工具请求的统一端点

  • MCP 清单:描述所有可用工具及其功能的端点

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

  • 模块化设计:根据需要轻松添加或删除工具

附带的工具

  1. GitHub 工具:与 GitHub 存储库、问题和搜索进行交互

  2. GitLab 工具:与 GitLab 项目、问题和管道进行交互

  3. Google 地图工具:地理编码、路线和地点搜索

  4. 记忆工具:持久存储和检索数据

  5. Puppeteer Tool :截取屏幕截图、生成 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

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

  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/...

  • 谷歌地图: /tool/gmaps/...

  • 记忆: /tool/memory/...

  • 木偶师: /tool/puppeteer/...

有关可用端点的详细信息,请参阅每个工具的 API 文档。

工具文档

GitHub 工具

GitHub 工具提供对存储库、问题和搜索的 GitHub API 的访问。

行动

  • listRepos :列出用户或组织的存储库

  • getRepo :获取特定存储库的详细信息

  • searchRepos :搜索存储库

  • getIssues :获取存储库的问题

  • createIssue :在存储库中创建新问题

GitLab 工具

GitLab 工具提供对项目、问题和管道的 GitLab API 的访问。

行动

  • listProjects :列出经过身份验证的用户可访问的所有项目

  • getProject :获取特定项目的详细信息

  • searchProjects :在 GitLab 上搜索项目

  • getIssues :获取项目问题

  • createIssue :在项目中创建新问题

  • getPipelines :获取项目的管道

谷歌地图工具

Google 地图工具提供对 Google 地图 API 的访问,以进行地理编码、路线和地点搜索。

行动

  • geocode :将地址转换为地理坐标

  • reverseGeocode :将地理坐标转换为地址

  • getDirections :获取两个地点之间的路线

  • searchPlaces :使用 Google Places API 搜索地点

  • getPlaceDetails :获取特定地点的详细信息

记忆工具

内存工具提供了用于存储和检索数据的持久键值存储。

行动

  • get :通过 key 获取内存项

  • set :创建或更新内存项

  • delete :按键删除内存项

  • list :列出所有内存项,并带有可选的过滤功能

  • search :按值搜索内存项

木偶工具

Puppeteer 工具提供网络自动化功能,可以截取屏幕截图、生成 PDF 以及从网站提取内容。

行动

  • screenshot :截取网页截图

  • pdf :生成网页的 PDF

  • extract :从网页中提取内容

贡献

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

添加新工具

  1. tools目录中创建一个新文件,例如tools/newtool_tool.py

  2. 按照与现有工具相同的模式实施该工具

  3. 将该工具添加到app.py中的清单中

  4. tools/__init__.py中注册工具的蓝图

执照

该项目根据 MIT 许可证获得许可 - 有关详细信息,请参阅 LICENSE 文件。

致谢

-
security - not tested
A
license - permissive license
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/AdamPippert/multi-service-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server