Back to MCP directory
publicPublicdnsLocal runtime

mcps

该项目提供多个Model Context Protocol服务器,包括网页搜索、天气查询和记忆存储功能,为AI模型提供外部工具和数据源集成能力。

article

README

🚀 MCPS - 模型上下文协议服务器

本仓库包含模型上下文协议(MCP)服务器,为人工智能模型提供了各种工具和功能。该项目最初是为 LocalAI 提供小示例而开发的,但也适用于任何 MCP 客户端。

🚀 快速开始

本项目提供了多种类型的 MCP 服务器,你可以根据需求选择合适的服务器进行部署和使用。以下是一些快速开始的步骤和示例。

可用服务器

🦆 DuckDuckGo 搜索服务器

这是一个使用 DuckDuckGo 提供搜索功能的网络搜索服务器。

  • 特性
    • 具备网络搜索功能。
    • 可配置最大搜索结果数量(默认值为 5)。
    • 对输入/输出进行 JSON 模式验证。
  • 工具
    • search - 在网络上搜索信息。
  • 配置
    • MAX_RESULTS - 用于设置最大搜索结果数量的环境变量(默认值为 5)。
  • Docker 镜像
docker run -e MAX_RESULTS=10 ghcr.io/mudler/mcps/duckduckgo:latest
  • LocalAI 配置(添加到模型配置中)
mcp:
  stdio: |
    {
      "mcpServers": {
        "ddg": {
          "command": "docker",
          "env": {
            "MAX_RESULTS": "10"
          },
          "args": [
            "run", "-i", "--rm", "-e", "MAX_RESULTS",
            "ghcr.io/mudler/mcps/duckduckgo:master"
          ]
        }
      }
    }

🌤️ 天气服务器

这是一个提供全球城市当前天气和天气预报数据的天气信息服务器。

  • 特性
    • 提供当前天气状况(温度、风速、天气描述)。
    • 提供多日天气预报。
    • 对包含特殊字符的城市名称进行 URL 编码。
    • 对输入/输出进行 JSON 模式验证。
    • 处理 HTTP 超时。
  • 工具
    • get_weather - 获取某个城市的当前天气和天气预报。
  • API 响应格式
{
  "temperature": "29 °C",
  "wind": "20 km/h", 
  "description": "Partly cloudy",
  "forecast": [
    {
      "day": "1",
      "temperature": "27 °C",
      "wind": "12 km/h"
    },
    {
      "day": "2", 
      "temperature": "22 °C",
      "wind": "8 km/h"
    }
  ]
}
  • Docker 镜像
docker run ghcr.io/mudler/mcps/weather:latest
  • LocalAI 配置(添加到模型配置中)
mcp:
  stdio: |
    {
      "mcpServers": {
        "weather": {
          "command": "docker",
          "args": [
            "run", "-i", "--rm",
            "ghcr.io/mudler/mcps/weather:master"
          ]
        }
      }
    }

🧠 内存服务器

这是一个持久化内存存储服务器,允许人工智能模型在不同会话中存储、检索和管理信息。

  • 特性
    • 采用持久化 JSON 文件存储。
    • 可以添加、列出和删除内存条目。
    • 为每个条目生成唯一 ID。
    • 跟踪条目的时间戳。
    • 可配置存储位置。
    • 对输入/输出进行 JSON 模式验证。
  • 工具
    • add_memory - 向内存存储中添加新条目。
    • list_memory - 列出所有内存条目。
    • remove_memory - 按 ID 删除内存条目。
    • search_memory - 按内容搜索内存条目(不区分大小写)。
  • 配置
    • MEMORY_FILE_PATH - 用于设置内存文件路径的环境变量(默认值为 /data/memory.json)。
  • 内存条目格式
{
  "id": "1703123456789000000",
  "content": "User prefers coffee over tea",
  "created_at": "2023-12-21T10:30:56.789Z"
}
  • 搜索响应格式
{
  "query": "coffee",
  "results": [
    {
      "id": "1703123456789000000",
      "content": "User prefers coffee over tea",
      "created_at": "2023-12-21T10:30:56.789Z"
    }
  ],
  "count": 1
}
  • Docker 镜像
docker run -e MEMORY_FILE_PATH=/custom/path/memory.json ghcr.io/mudler/mcps/memory:latest
  • LocalAI 配置(添加到模型配置中)
mcp:
  stdio: |
    {
      "mcpServers": {
        "memory": {
          "command": "docker",
          "env": {
            "MEMORY_FILE_PATH": "/data/memory.json"
          },
          "args": [
            "run", "-i", "--rm", "-v", "/host/data:/data",
            "ghcr.io/mudler/mcps/memory:master"
          ]
        }
      }
    }

🔧 开发

前提条件

  • Go 1.24.7 或更高版本。
  • Docker(用于容器化构建)。
  • Make(用于使用 Makefile)。

构建

使用提供的 Makefile 进行轻松开发:

# 显示所有可用命令
make help

# 开发工作流程
make dev

# 构建特定服务器
make MCP_SERVER=duckduckgo build
make MCP_SERVER=weather build
make MCP_SERVER=memory build

# 运行测试和检查
make ci-local

# 构建多架构镜像
make build-multiarch

添加新服务器

要添加新的 MCP 服务器,请按照以下步骤操作:

  1. 在项目根目录下创建一个新目录。
  2. 按照 MCP SDK 模式实现服务器。
  3. 更新 .github/workflows/image.yml 中的 GitHub Actions 工作流矩阵。
  4. 在本 README 中更新新服务器的信息。

示例服务器结构:

package main

import (
    "context"
    "log"
    "github.com/modelcontextprotocol/go-sdk/mcp"
)

func main() {
    server := mcp.NewServer(&mcp.Implementation{
        Name: "your-server", 
        Version: "v1.0.0"
    }, nil)
    
    // 在这里添加你的工具
    mcp.AddTool(server, &mcp.Tool{
        Name: "your-tool", 
        Description: "your tool description"
    }, YourToolFunction)
    
    if err := server.Run(context.Background(), &mcp.StdioTransport{}); err != nil {
        log.Fatal(err)
    }
}

🐳 Docker 镜像

Docker 镜像会自动构建并推送到 GitHub 容器注册表:

  • ghcr.io/mudler/mcps/duckduckgo:latest - 最新的 DuckDuckGo 服务器。
  • ghcr.io/mudler/mcps/duckduckgo:v1.0.0 - 带标签的版本。
  • ghcr.io/mudler/mcps/duckduckgo:master - 开发版本。
  • ghcr.io/mudler/mcps/weather:latest - 最新的天气服务器。
  • ghcr.io/mudler/mcps/weather:v1.0.0 - 带标签的版本。
  • ghcr.io/mudler/mcps/weather:master - 开发版本。
  • ghcr.io/mudler/mcps/memory:latest - 最新的内存服务器。
  • ghcr.io/mudler/mcps/memory:v1.0.0 - 带标签的版本。
  • ghcr.io/mudler/mcps/memory:master - 开发版本。

🤝 贡献

  1. 分叉仓库。
  2. 创建一个功能分支。
  3. 进行更改。
  4. 如有必要,添加测试。
  5. 运行 make ci-local 确保所有检查通过。
  6. 提交拉取请求。

📄 许可证

本项目根据 LICENSE 文件中指定的条款进行许可。

📖 模型上下文协议

本项目实现了 模型上下文协议(MCP) 的服务器,该协议是将人工智能模型连接到外部数据源和工具的标准。 有关 MCP 的更多信息,请访问 官方文档

help

Runtime guide

cloud

Hosted runtime

Hosted servers run from a provider-managed environment. You usually connect the MCP client to the hosted endpoint or follow the provider's authorization flow, without keeping a local process alive

  1. Open provider connection page
  2. Authorize or copy endpoint
  3. Connect from your MCP client
terminal

Local runtime / other methods

Local servers run on your own machine or infrastructure. You normally copy the server_config into your MCP client, install the required package, and provide env variables from env_schema when needed

  1. Copy server_config
  2. Install required package
  3. Fill env variables and restart client