ateliers-training-mcpserver-claude

yuu-git/ateliers-training-mcpserver-claude

3.2

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.

Tools
5
Resources
0
Prompts
0

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を使用できます:

  1. GitHubで Personal Access Token を作成(repo スコープ)
  2. 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.jsonNotesセクションが必須です
  • バックアップ: .backupファイルが生成されます(.gitignoreで除外推奨)

これらの制限は、実運用版(将来的なプロジェクト)で対応予定です。

🔍 トラブルシューティング

Claude Desktop が接続できない

  1. 実行ファイルのパスが正しいか確認
  2. appsettings.json が実行ファイルと同じディレクトリにあるか確認
  3. Claude Desktop のログを確認(設定画面から確認可能)

GitHub API レート制限エラー

  • 匿名アクセスは60リクエスト/時間の制限があります
  • キャッシュ期限(5分)を延長するか、PATを使用してください

ファイルが見つからないエラー

  • リポジトリ設定(Owner、Name、Branch)が正しいか確認
  • ファイルパスが正しいか確認
  • ブラウザで https://github.com/{owner}/{repo} にアクセスできるか確認

Phase 3: ツール実行時のエラー

  • appsettings.jsonNotesセクションが存在するか確認
  • LocalPathが正しく設定されているか確認
  • MCPサーバーのログ(mcp-server-*.log)を確認

📝 ライセンス

MIT License

🙏 謝辞

📧 連絡先


作成日: 2025-11-24
バージョン: v0.3.0 (Phase 3 完了)