Skip to main content
Glama

Filesystem MCP Server

by mark3labs
package handler import ( "context" "fmt" "os" "path/filepath" "testing" "github.com/mark3labs/mcp-go/mcp" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) func TestReadfile_Valid(t *testing.T) { // prepare temp directory dir := t.TempDir() content := "test-content" err := os.WriteFile(filepath.Join(dir, "test"), []byte(content), 0644) require.NoError(t, err) handler, err := NewFilesystemHandler(resolveAllowedDirs(t, dir)) require.NoError(t, err) request := mcp.CallToolRequest{} request.Params.Name = "read_file" request.Params.Arguments = map[string]any{ "path": filepath.Join(dir, "test"), } result, err := handler.HandleReadFile(context.Background(), request) require.NoError(t, err) assert.Len(t, result.Content, 1) assert.Equal(t, content, result.Content[0].(mcp.TextContent).Text) } func TestReadfile_Invalid(t *testing.T) { dir := t.TempDir() handler, err := NewFilesystemHandler(resolveAllowedDirs(t, dir)) require.NoError(t, err) request := mcp.CallToolRequest{} request.Params.Name = "read_file" request.Params.Arguments = map[string]any{ "path": filepath.Join(dir, "test"), } result, err := handler.HandleReadFile(context.Background(), request) require.NoError(t, err) assert.True(t, result.IsError) assert.Contains(t, fmt.Sprint(result.Content[0]), "no such file or directory") } func TestReadfile_NoAccess(t *testing.T) { dir1 := t.TempDir() dir2 := t.TempDir() handler, err := NewFilesystemHandler(resolveAllowedDirs(t, dir1)) require.NoError(t, err) request := mcp.CallToolRequest{} request.Params.Name = "read_file" request.Params.Arguments = map[string]any{ "path": filepath.Join(dir2, "test"), } result, err := handler.HandleReadFile(context.Background(), request) require.NoError(t, err) assert.True(t, result.IsError) assert.Contains(t, fmt.Sprint(result.Content[0]), "access denied - path outside allowed directories") }

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/mark3labs/mcp-filesystem-server'

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