FxKit MCP Server
A Model Context Protocol (MCP) server that provides comprehensive documentation and assistance for the FxKit C# functional programming library.
Overview
FxKit MCP dynamically fetches and serves documentation from the official FxKit documentation site, providing AI models with:
- Complete documentation for all FxKit types (Option, Result, Validation, Unit)
- Compiler services documentation (source generators, analyzers)
- Code examples and API references
- Search capabilities across all documentation
- Pre-built prompts for common FxKit patterns
Features
Resources
The server exposes FxKit documentation sections as MCP resources:
introduction
- FxKit overview and concepts
getting-started
- Installation and setup guide
option
- Option type documentation
result
- Result type documentation
validation
- Validation type documentation
unit
- Unit type documentation
compiler-overview
- Compiler services overview
enum-match
- EnumMatch generator
union
- Union type generator
lambda
- Lambda generator
transformer
- Transformer generator
testing
- Testing utilities
Tools
Interactive tools for querying FxKit documentation:
search_documentation
- Search across all documentation
get_examples
- Get code examples for specific features
list_packages
- List available NuGet packages
Prompts
Pre-configured prompts for common FxKit patterns:
convert-nullable-to-option
- Convert nullable types to Option
railway-oriented-programming
- Implement railway-oriented patterns
validation-multiple-errors
- Use Validation for error accumulation
generate-union-types
- Create union types with source generators
Installation
From Source
git clone https://github.com/taxfyle/fxkit-mcp.git
cd fxkit-mcp
npm install
npm run build
Global Installation
npm install -g @taxfyle/fxkit-mcp
Usage
With Claude Code
{
"mcpServers": {
"fxkit-docs": {
"command": "npx",
"args": [
"-y",
"@taxfyle/fxkit-mcp@latest"
],
"env": {}
}
}
}
With Claude Desktop
Add the following to your Claude Desktop configuration file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"fxkit-docs": {
"command": "node",
"args": ["/path/to/fxkit-mcp/dist/index.js"]
}
}
}
Or if installed globally:
{
"mcpServers": {
"fxkit-docs": {
"command": "fxkit-mcp"
}
}
}
With MCP Inspector
Test the server using the MCP Inspector:
npx @modelcontextprotocol/inspector tsx src/index.ts
Programmatic Usage
import { FxKitMcpServer } from 'fxkit-mcp';
const server = new FxKitMcpServer();
await server.start();
Development
Running in Development Mode
npm run dev
Project Structure
fxkit-mcp/
├── src/
│ ├── index.ts # Main entry point
│ ├── server.ts # MCP server implementation
│ ├── types.ts # TypeScript type definitions
│ ├── fetcher/
│ │ └── docs-fetcher.ts # Documentation fetching logic
│ ├── resources/ # Resource handlers (if extended)
│ ├── tools/ # Tool implementations (if extended)
│ └── prompts/ # Prompt templates (if extended)
├── dist/ # Compiled JavaScript
├── package.json
├── tsconfig.json
└── README.md
Testing
The server includes a test mode that verifies all documentation endpoints are accessible:
npm test
Examples
Using with an AI Assistant
Once configured, you can ask your AI assistant questions like:
- "Show me the FxKit documentation for the Result type"
- "Search for examples of railway-oriented programming with FxKit"
- "How do I convert nullable types to Option in FxKit?"
- "Generate a union type for payment methods using FxKit"
The AI will use the MCP server to fetch relevant documentation and provide accurate, up-to-date information about FxKit.
Architecture
The server uses a dynamic fetching approach:
- No Static Content: Documentation is fetched on-demand from the live FxKit documentation site
- Caching: Responses are cached for 5 minutes to improve performance
- HTML Parsing: Uses Cheerio to extract content and code examples from documentation pages
- Type Safety: Full TypeScript implementation with strict typing
Contributing
Contributions are welcome! Please feel free to submit issues or pull requests.
Adding New Documentation Sections
To add new documentation sections:
- Update the paths array in
src/fetcher/docs-fetcher.ts
- Add corresponding resource registration in
src/server.ts
- Test that the new section is accessible
Extending Tools
New tools can be added in src/server.ts
in the setupTools()
method. Follow the existing pattern using registerTool()
.
License
MIT
Acknowledgments
Support
For issues related to: