yuu-git/ateliers-training-mcpserver-claude
If you are the rightful owner of ateliers-training-mcpserver-claude and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.
This project provides a sample implementation of a Model Context Protocol (MCP) server using C#/.NET, enabling access to technical knowledge bases from Claude Desktop.
Ateliers Training MCP Server for Claude
C#/.NETで実装したModel Context Protocol(MCP)サーバーのサンプル実装です。Claude Desktop から技術ナレッジベース(GitHubリポジトリ)へのアクセスと、ローカルファイルへのメモ管理を提供します。
🎯 概要
このプロジェクトは、以下を実現するMCPサーバーのサンプル実装です:
Phase 2: GitHub統合(読み取り)
- GitHub統合: Octokit.NETによるGitHubリポジトリへのアクセス
- 匿名アクセス: 認証不要(パブリックリポジトリ専用)
- メモリキャッシュ: GitHub APIレート制限対策(5分間キャッシュ)
- Docusaurus統合: 技術記事の検索・参照
Phase 3: ローカルファイル書き込み(NEW)
- TODO管理: タスクの追加・一覧表示
- アイデア管理: 技術・記事・プロジェクトのアイデア保存
- スニペット管理: コードスニペットの保存(C#/Python/SQL)
- Markdown形式: 手動編集も可能な形式で保存
📋 前提条件
- .NET 10.0 SDK
- Claude Desktop (最新版)
- Git
🚀 セットアップ
1. リポジトリのクローン
git clone https://github.com/yuu-git/ateliers-training-mcpserver-claude.git
cd ateliers-training-mcpserver-claude
2. プロジェクト構造
Ateliers.Training.McpServer.Claude/
├─ Configuration/
│ └─ AppSettings.cs
├─ Services/
│ ├─ GitHubService.cs
│ └─ NotesService.cs # Phase 3追加
├─ Tools/
│ ├─ AteliersGuidelineTools.cs
│ ├─ AteliersDevTools.cs
│ └─ LocalNotesTools.cs # Phase 3追加
├─ Program.cs
├─ appsettings.json
└─ Ateliers.Training.McpServer.Claude.csproj
Phase 3で自動生成されるディレクトリ:
bin/Debug/net10.0/notes/ # 初回ツール実行時に自動作成
├─ todo/
│ └─ current.md
├─ ideas/
│ ├─ technical.md
│ ├─ article.md
│ └─ project.md
└─ snippets/
├─ csharp/
├─ python/
└─ sql/
3. 設定ファイルの編集
appsettings.json を編集して、参照したいGitHubリポジトリを設定:
{
"GitHub": {
"AuthenticationMode": "Anonymous",
"PersonalAccessToken": null,
"CacheExpirationMinutes": 5
},
"Repositories": {
"YourRepository": {
"Source": "GitHub",
"GitHub": {
"Owner": "your-github-username",
"Name": "your-repository-name",
"Branch": "master"
}
},
"Notes": {
"Source": "Local",
"LocalPath": "notes",
"GitHub": {
"Owner": "your-github-username",
"Name": "ateliers-training-mcpserver-claude",
"Branch": "master"
}
}
}
}
4. ビルド
dotnet restore
dotnet build
5. Claude Desktop の設定
Claude Desktop の設定ファイルを編集:
Windows: %APPDATA%\Claude\claude_desktop_config.json
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"your-server-name": {
"command": "/path/to/Ateliers.Training.McpServer.Claude.exe",
"args": []
}
}
}
注意: command には実行ファイルのフルパスを指定してください。
例(Windows):
{
"mcpServers": {
"ateliers-guideline": {
"command": "C:\\Projects\\ateliers-training-mcpserver-claude\\bin\\Debug\\net10.0\\Ateliers.Training.McpServer.Claude.exe",
"args": []
}
}
}
6. Claude Desktop の再起動
Claude Desktop を完全に終了して再起動してください。
🎯 利用可能なツール
📖 読み取り系ツール(Phase 2)
read_guideline
指定したパスのファイルを読み取ります。
使用例:
Q: README.mdを読んで
A: [MCPツール: read_guideline(filePath: "README.md")]
list_guidelines
リポジトリ内のMarkdownファイル一覧を取得します。
使用例:
Q: ガイドラインの一覧を教えて
A: [MCPツール: list_guidelines()]
read_article
Docusaurus記事を読み取ります(Frontmatter自動除去)。
使用例:
Q: docs/tutorial.mdを読んで
A: [MCPツール: read_article(filePath: "docs/tutorial.md")]
list_articles
記事の一覧を取得します。
使用例:
Q: docsディレクトリの記事一覧を教えて
A: [MCPツール: list_articles(directory: "docs")]
search_articles
キーワードで記事を検索します。
使用例:
Q: C#に関する記事を検索して
A: [MCPツール: search_articles(keyword: "C#", directory: "docs")]
✏️ 書き込み系ツール(Phase 3)
add_todo
TODOアイテムを追加します。
使用例:
Q: 「Phase 3の動作確認を完了する」をTODOに追加して
A: [MCPツール: add_todo(content: "Phase 3の動作確認を完了する")]
✅ TODOを追加しました
保存先: notes/todo/current.md
list_todos
現在のTODOリストを表示します。
使用例:
Q: 現在のTODOを教えて
A: [MCPツール: list_todos()]
📋 現在のTODO (1件):
- [ ] Phase 3の動作確認を完了する (追加: 2025-11-24 20:22)
add_idea
アイデアを追加します(カテゴリ: technical, article, project)。
使用例:
Q: 「C# 12のfile-scoped namespaceについて記事を書く」を技術アイデアに追加
A: [MCPツール: add_idea(category: "technical", content: "...")]
✅ technical アイデアを追加しました
保存先: notes/ideas/{category}.md
list_ideas
アイデア一覧を表示します。
使用例:
Q: 技術アイデアの一覧を見せて
A: [MCPツール: list_ideas(category: "technical")]
save_snippet
コードスニペットを保存します(言語: csharp, python, sql)。
使用例:
Q: 以下のコードをC#スニペットとして「datetime-extension」という名前で保存して
public static class DateTimeExtensions
{
public static bool IsWeekend(this DateTime date)
{
return date.DayOfWeek == DayOfWeek.Saturday ||
date.DayOfWeek == DayOfWeek.Sunday;
}
}
A: [MCPツール: save_snippet(language: "csharp", name: "datetime-extension", code: "...")]
✅ csharp スニペット 'datetime-extension' を保存しました
保存先: notes/snippets/{language}/{name}.md
🔧 カスタマイズ
独自のツールを追加
Tools/ ディレクトリに新しいクラスを作成:
using ModelContextProtocol.Server;
using System.ComponentModel;
using Ateliers.Training.McpServer.Claude.Services;
namespace Ateliers.Training.McpServer.Claude.Tools;
[McpServerToolType]
public class YourCustomTools
{
private readonly GitHubService _gitHubService;
public YourCustomTools(GitHubService gitHubService)
{
_gitHubService = gitHubService;
}
[McpServerTool]
[Description("Your tool description")]
public async Task<string> YourTool(
[Description("Parameter description")]
string parameter)
{
// Implementation
return "Result";
}
}
Personal Access Token の使用
レート制限を緩和したい場合、PATを使用できます:
- GitHubで Personal Access Token を作成(
repoスコープ) appsettings.jsonを編集:
{
"GitHub": {
"AuthenticationMode": "PersonalAccessToken",
"PersonalAccessToken": "ghp_xxxxxxxxxxxx"
}
}
注意: PATは機密情報です。.gitignore で除外されるよう注意してください。
📊 技術スタック
- .NET 10.0: 最新のC#機能を活用
- Octokit.NET: GitHub API クライアント
- ModelContextProtocol: MCPサーバー実装
- Memory Cache: GitHub APIレート制限対策
⚠️ 既知の制限事項
Phase 3(ローカルファイル書き込み)
- 排他制御なし: 同時書き込みの制御は実装していません(サンプルのため)
- エラーハンドリング: DIコンテナでの初期化失敗時、Claude側にエラー詳細が返りません
- 設定必須:
appsettings.jsonにNotesセクションが必須です - バックアップ:
.backupファイルが生成されます(.gitignoreで除外推奨)
これらの制限は、実運用版(将来的なプロジェクト)で対応予定です。
🔍 トラブルシューティング
Claude Desktop が接続できない
- 実行ファイルのパスが正しいか確認
appsettings.jsonが実行ファイルと同じディレクトリにあるか確認- Claude Desktop のログを確認(設定画面から確認可能)
GitHub API レート制限エラー
- 匿名アクセスは60リクエスト/時間の制限があります
- キャッシュ期限(5分)を延長するか、PATを使用してください
ファイルが見つからないエラー
- リポジトリ設定(Owner、Name、Branch)が正しいか確認
- ファイルパスが正しいか確認
- ブラウザで
https://github.com/{owner}/{repo}にアクセスできるか確認
Phase 3: ツール実行時のエラー
appsettings.jsonにNotesセクションが存在するか確認LocalPathが正しく設定されているか確認- MCPサーバーのログ(
mcp-server-*.log)を確認
📝 ライセンス
MIT License
🙏 謝辞
📧 連絡先
- GitHub: @yuu-git
- Website: ateliers.dev
作成日: 2025-11-24
バージョン: v0.3.0 (Phase 3 完了)