Claude工作室培训MCP服务器
C#/.NET中所述的工具,调整墙的布局和几何形状Model Context Protocol(MCP)服务器的示例实现。Claude Desktop 中描述的场景,使用以下步骤创建明细表,以便在概念设计中分析体量的体积。
🎯 概要
该项目实现以下内容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-claude2.项目结构
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.csprojPhase 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 build5. Claude Desktop 配置
Claude Desktop 编辑配置文件:
视窗: %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 之后由应用程序进行调用。
🎯 可用工具
📖 读取类工具(Phase2)
阅读指南
读取指定路径的文件。
使用例:
Q: README.mdを読んで
A: [MCPツール: read_guideline(filePath: "README.md")]列表指南
在动态输入提示中单击Markdown获取文件列表。
使用例:
Q: ガイドラインの一覧を教えて
A: [MCPツール: list_guidelines()]read_文章
Docusaurus读取文章(自自动删除)。
使用例:
Q: docs/tutorial.mdを読んで
A: [MCPツール: read_article(filePath: "docs/tutorial.md")]list_文章
获取文章列表。
使用例:
Q: docsディレクトリの記事一覧を教えて
A: [MCPツール: list_articles(directory: "docs")]搜索_文章
用关键字搜索文章。
使用例:
Q: C#に関する記事を検索して
A: [MCPツール: search_articles(keyword: "C#", directory: "docs")]______________________________________________________________________
✏️ 写入工具(Phase3)
全部添加
TODO添加项目。
使用例:
Q: 「Phase 3の動作確認を完了する」をTODOに追加して
A: [MCPツール: add_todo(content: "Phase 3の動作確認を完了する")]
✅ TODOを追加しました保存先: notes/todo/current.md
list_所有
当前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")]保存片段
保存代码片段(语言: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 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。网: GitHub API 客户机
- 模型上下文协议: MCP服务器实施
- 内存缓存: GitHub API汇率限制对策
⚠️ 已知限制
Phase 3(本地文件写入)
- 无独占控制:未实现并发写入控制(用于示例)
- 错误处理: DI在容器中初始化失败时Claude一侧未返回错误详细信息
- 设定必须:
appsettings.json的Notes节是必需的 - 备份:
.backup生成文件(.gitignore排除建议)
这些限制将在实际操作版本(未来项目)中解决。
🔍 故障排除
Claude Desktop 连接不上
- 确认执行文件的路径是否正确
appsettings.json确认是否与执行文件位于同一目录- Claude Desktop 的记录(可从设置画面确认)
GitHub API 速率限制错误
- 匿名访问有60个请求/时间限制
- 延长缓存期限(5分钟)或PAT请使用
找不到文件错误
- 确定存储库设置是否正确
- 检查文件路径是否正确
- 在浏览器中
https://github.com/{owner}/{repo}查看项目中可用的所有族
Phase 3: 运行工具时出错
appsettings.json的Notes确认节是否存在LocalPath确认是否正确设置- MCP服务器日志(
mcp-server-*.log),模板名称将采用不同的格式
📝 许可证
MIT许可证
🙏 谢辞
📧 连络先
______________________________________________________________________
作成日: 2025-11-24\ 版本: v0.3.0 (Phase 3 完了)
