文件系统MCP服务器

一个基于Go和Echo框架的教育性MCP服务器实现,提供通过MCP协议访问本地文件系统的功能。

  • by Loag
  • Go
  • 本地部署
  • 更新于
在 GitHub 查看 Loag/mcp-server-test

使用说明

模型上下文协议(MCP)服务器-文件系统实现

这是Go中使用Echo框架的模型上下文协议(MCP)服务器的教育实现。该服务器通过MCP协议提供对本地文件系统的访问。

概述

模型上下文协议(MCP)是一个开放标准,使开发人员能够在其数据源和AI驱动的工具之间建立安全的双向连接。此实现演示了如何创建一个提供对本地文件系统访问的MCP服务器。

特性

  • 文件系统提供商:通过MCP工具和资源提供对本地文件系统的访问
  • 工具:
    • filesystem.list:列出目录的内容
    • filesystem.read:读取文件的内容
    • filesystem.write:将内容写入文件
    • filesystem.delete:删除文件或目录
  • 资源:
    • filesystem.file:表示文件系统中的文件
    • filesystem.directory:表示文件系统中的目录

安全考虑

此实现包括基本的路径净化,以防止目录遍历攻击,但它仅用于教育目的。在生产环境中,需要采取额外的安全措施,例如:

  • 用户身份验证和授权
  • 更强大的输入验证
  • 速率限制
  • 审核日志记录
  • 沙箱

入门指南

先决条件

  • 达到1.24或更高

安装

  1. 克隆存储库
  2. 安装依赖项: go mod tidy
  3. 运行服务器: go run main.go

默认情况下,服务器将在端口8080上启动。您可以通过设置来更改端口 PORT 环境变量。

API终点

  • GET /:服务器信息
  • POST /v1/discover:发现服务器功能
  • POST /v1/call-tool:调用工具
  • POST /v1/load-resource:加载资源

示例用法

发现服务器功能

curl -X POST http://localhost:8080/v1/discover

列出目录内容

curl -X POST http://localhost:8080/v1/call-tool \
  -H "Content-Type: application/json" \
  -d '{
    "tool_id": "filesystem.list",
    "request_id": "req-123",
    "params": {
      "arguments": {
        "path": "."
      }
    }
  }'

读取文件内容

curl -X POST http://localhost:8080/v1/call-tool \
  -H "Content-Type: application/json" \
  -d '{
    "tool_id": "filesystem.read",
    "request_id": "req-123",
    "params": {
      "arguments": {
        "path": "README.md"
      }
    }
  }'

许可证

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

免责声明

此实现仅用于教育目的,未经适当的安全审查和强化,不应在生产环境中使用。