使用说明
模型上下文协议(MCP)服务器-文件系统实现
这是Go中使用Echo框架的模型上下文协议(MCP)服务器的教育实现。该服务器通过MCP协议提供对本地文件系统的访问。
概述
模型上下文协议(MCP)是一个开放标准,使开发人员能够在其数据源和AI驱动的工具之间建立安全的双向连接。此实现演示了如何创建一个提供对本地文件系统访问的MCP服务器。
特性
- 文件系统提供商:通过MCP工具和资源提供对本地文件系统的访问
- 工具:
filesystem.list:列出目录的内容filesystem.read:读取文件的内容filesystem.write:将内容写入文件filesystem.delete:删除文件或目录
- 资源:
filesystem.file:表示文件系统中的文件filesystem.directory:表示文件系统中的目录
安全考虑
此实现包括基本的路径净化,以防止目录遍历攻击,但它仅用于教育目的。在生产环境中,需要采取额外的安全措施,例如:
- 用户身份验证和授权
- 更强大的输入验证
- 速率限制
- 审核日志记录
- 沙箱
入门指南
先决条件
- 达到1.24或更高
安装
- 克隆存储库
- 安装依赖项:
go mod tidy - 运行服务器:
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许可证获得许可-有关详细信息,请参阅许可证文件。
免责声明
此实现仅用于教育目的,未经适当的安全审查和强化,不应在生产环境中使用。
