Creating MCP Tools
MCP tools follow a two-layer pattern: pure Domain logic wrapped by an MCP server tool.
Steps
- •Domain Tool - Create in
Domain/Tools/with pure business logic - •MCP Wrapper - Create in
McpServer*/McpTools/inheriting from Domain tool - •Registration - Add to DI in the MCP server's
Program.csor module
Which MCP Server?
| Server | Purpose |
|---|---|
McpServerLibrary | Torrent search, downloads, file organization |
McpServerText | Text/markdown file inspection and editing |
McpServerWebSearch | Web search and content fetching |
McpServerMemory | Vector-based memory storage and recall |
McpServerCommandRunner | CLI command execution |
Templates
See domain-template.md for the Domain tool pattern. See mcp-template.md for the MCP wrapper pattern.
Checklist
- • Domain tool has
NameandDescriptionconstants - • Domain tool contains pure logic (no MCP dependencies)
- • MCP wrapper uses
[McpServerToolType]class attribute - • MCP wrapper uses
[McpServerTool]and[Description]method attributes - • Error handling returns
ToolResponse.Create(ex)on failure - • Logging includes tool name context
- • CancellationToken passed through all async operations