Simple MCP Server
A TypeScript-based MCP server that enables Claude Desktop to perform file operations and retrieve system information, with built-in security features that restrict access to safe directories only.
Tools
read_file
指定されたファイルの内容を読み込みます(許可されたディレクトリのみ)
write_file
指定されたファイルにテキストを書き込みま���(許可されたディレクトリのみ)
list_directory
指定されたディレクトリの内容を一覧表示します(許可されたディレクトリのみ)
create_sample_file
サンプルファイルを作成します(テスト用)
get_system_info
システム情報を取得します
get_allowed_paths
アクセス可能なパスの一覧を表示します
README
Simple MCP Server
TypeScriptで作成されたシンプルなMCP(Model Context Protocol)サーバのサンプルです。ClaudeDesktopから使用して、ファイル操作やシステム情報の取得が可能です。
🔒 セキュリティ機能
このMCPサーバーにはパスアクセス制限機能が組み込まれており、安全なディレクトリのみへのアクセスを許可します。
許可されるディレクトリ
- ユーザーのDocuments/00_AI_Areaフォルダ(現在の設定)
- その他カスタム設定可能
ブロックされるディレクトリ
- システムディレクトリ(
/etc、/bin、/Windows、/Program Filesなど) - 機密情報ディレクトリ(
.ssh、.aws、.configなど)
許可されるファイル拡張子
.txt, .md, .json, .js, .ts, .html, .css, .py, .java, .cpp, .c, .h, .xml, .yaml, .yml, .log, .csv, .tsv, .sql, .sh, .bat, .ps1
機能
- read_file: ファイルの読み込み(許可されたディレクトリのみ)
- write_file: ファイルへの書き込み(許可されたディレクトリのみ)
- list_directory: ディレクトリの一覧表示(許可されたディレクトリのみ)
- get_system_info: システム情報の取得
- create_sample_file: サンプルファイルの作成(テスト用)
- get_allowed_paths: アクセス可能なパス一覧を表示(新機能)
セットアップ
1. 依存関係のインストール
npm install
2. ビルド
npm run build
3. ClaudeDesktop設定
ClaudeDesktopの設定ファイル(通常 %APPDATA%\Claude\claude_desktop_config.json)を編集します:
{
"mcpServers": {
"simple-mcp-server": {
"command": "node",
"args": ["/absolute/path/to/your/project/dist/index.js"],
"env": {}
}
}
}
重要: args の配列には、プロジェクトの dist/index.js への絶対パスを指定してください。
4. ClaudeDesktopの再起動
設定を反映するため、ClaudeDesktopを再起動してください。
開発モード
開発中は以下のコマンドでサーバーを直接実行できます:
npm run dev
使用例
ClaudeDesktopで以下のようなリクエストを試してみてください:
システム情報の取得
システム情報を教えて
アクセス可能なパスの確認
アクセス可能なパス一覧を表示して
サンプルファイルの作成
test.txtという名前でサンプルファイルを作成して
ファイルの読み込み
test.txtの内容を読み込んで
ディレクトリの一覧表示
現在のディレクトリの一覧を表示して
ファイルへの書き込み
hello.txtに「Hello, MCP World!」と書き込んで
🔧 設定のカスタマイズ
PathValidatorクラスの設定を変更することで、アクセス許可ルールをカスタマイズできます:
// 許可するディレクトリを追加
this.allowedPaths = [
path.resolve(os.homedir(), 'Documents/00_AI_Area'),
// カスタムパスを追加
path.resolve('/path/to/your/allowed/directory'),
];
// 許可するファイル拡張子を追加
this.allowedExtensions = [
'.txt', '.md', '.json',
// 新しい拡張子を追加
'.custom',
];
ファイル構成
simple-mcp-server/
├── src/
│ └── index.ts # メインのサーバー実装
├── dist/ # ビルド後のJavaScriptファイル
├── package.json # プロジェクト設定
├── tsconfig.json # TypeScript設定
└── README.md # このファイル
トラブルシューティング
MCPサーバーが認識されない場合
- ClaudeDesktopの設定ファイルのパスが正しいか確認
dist/index.jsへの絶対パスが正しいか確認npm run buildでビルドが正常に完了しているか確認- ClaudeDesktopを完全に再起動
ファイル操作でエラーが発生する場合
- ファイルパスが存在するか確認
- 適切な読み書き権限があるか確認
- 相対パスではなく絶対パスを使用してみる
セキュリティ関連のエラー
"許可されていないパスです"
- アクセスしようとしているパスが許可されたディレクトリ内にありません
- get_allowed_pathsツールを使用してアクセス可能なパスを確認してください
"許可されていないファイル拡張子です"
- サポートされていないファイル拡張子にアクセスしようとしています
- 許可された拡張子の一覧を確認し、必要に応じて設定を変更してください
デバッグモード
サーバーの動作ログは標準エラー出力に出力されます:
npm run dev 2> debug.log
カスタマイズ
新しいツールを追加するには:
TOOLS配列に新しいツール定義を追加setupToolHandlers()メソッドにハンドラーを追加- 対応するメソッドを実装
例えば、現在時刻を取得するツールを追加したい場合は、get_current_time のようなツールを実装できます。
🛡️ セキュリティ考慮事項
- パスアクセス制限: システムファイルや機密情報への不正アクセスを防止
- ファイル拡張子フィルタ: 実行可能ファイルや危険なファイル形式をブロック
- パス正規化: 相対パスや「..」を使った親ディレクトリへの不正アクセスを防止
- エラーハンドリング: 適切なエラーメッセージでセキュリティ違反を通知
よくある質問
Q: 新しいディレクトリにアクセスしたい場合は?
A: クラスの配列にパスを追加してサーバーを再起動してください。 PathValidator``allowedPaths
Q: セキュリティ制限を無効にできますか?
A: セキュリティ上推奨されませんが、メソッドで常に{ isValid: true, normalizedPath }を返すように変更できます。 validatePath
Q: 大きなファイルの処理は可能ですか?
A: 現在の実装では、ファイル全体をメモリに読み込むため、非常に大きなファイルの処理には適していません。
注意事項
- このサンプルは学習・テスト目的で作成されています
- 本番環境で使用する場合は、適切なエラーハンドリングとセキュリティ対策を追加してください
- ファイル操作は実行するユーザーの権限で行われます
- セキュリティ制限により、許可されたディレクトリ以外にはアクセスできません
厳重注意: このサーバーはローカル環境での使用を想定しています。本番環境で使用する場合は、追加のセキュリティ対策を検討してください。
ライセンス
MIT License
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。