An MCP (Model Context Protocol) server implementation in F# that exposes a context library as resources and provides tools and projections.
This MCP server provides access to a context library containing documentation about applications and frameworks. It implements the MCP protocol version 2024-11-05 and communicates via JSON-RPC over stdio.
- Resources: Exposes markdown files from the context library as MCP resources
- Protocol: Standard MCP JSON-RPC over stdio
- Content Provider: File system-based content provider for documentation
resources/list- Lists all available documentation resourcesresources/read- Reads specific resource content by URItools/list- Placeholder for future tool implementationsprompts/list- Placeholder for future prompt implementations
dotnet build src/FnMCP.Nexus/FnMCP.Nexus.fsprojThe server accepts an optional command-line argument for the context library path:
dotnet run --project src/FnMCP.Nexus [context-library-path]If no path is provided, it defaults to context-library in the project root.
The server is configured in ~/.config/Claude/claude_desktop_config.json (Linux):
{
"mcpServers": {
"FnMCP.Nexus": {
"command": "dotnet",
"args": [
"run",
"--project",
"/home/linux/RiderProjects/FnMCP.IvanTheGeek/src/FnMCP.Nexus"
],
"env": {}
}
}
}Note: After updating the configuration, restart Claude Desktop for changes to take effect.
For other MCP-compatible clients, configure them to run:
- Command:
dotnet - Arguments:
run --project <full-path-to-project> - Communication: stdio (JSON-RPC)
The context library is organized as:
context-library/
├── apps/
│ └── laundrylog/
│ └── overview.md
└── framework/
└── overview.md
Each markdown file becomes an MCP resource accessible via its URI path.
src/FnMCP.Nexus/- Main source codeMcpServer.fs- Core MCP server implementationProgram.fs- Entry point and JSON-RPC message loopTypes.fs- MCP protocol typesContentProvider.fs- Content provider interfaceFileSystemProvider.fs- File system-based providerResources.fs- Resource managementTools.fs- Tool registry and handlersPrompts.fs- Prompt registry and handlers
- .NET 9.0 SDK
- F# compiler
The server implements MCP protocol version 2024-11-05 using JSON-RPC 2.0:
- Input: JSON-RPC requests via stdin
- Output: JSON-RPC responses via stdout
- Logging: Diagnostic logs via stderr
✅ Production Deployment Active
The server is deployed on VPS and accessible via HTTP/SSE transport:
- Endpoint: http://66.179.208.238:18080/sse
- Transport: SSE (Server-Sent Events) with Bearer token authentication
- Status: Operational since 2025-11-19
Resources and tools from the context library can be accessed through the MCP protocol.
The server supports remote access via HTTP with SSE transport:
Endpoints:
- Health:
http://66.179.208.238:18080/ - SSE Events:
http://66.179.208.238:18080/sse/events - WebSocket:
ws://66.179.208.238:18080/ws
Authentication: All endpoints (except health check) require Bearer token authentication. Generate an API key:
docker exec -i nexus-mcp ./FnMCP.Nexus /data/event-store generate-api-key \
--scope full_access \
--description "Your description"Claude Desktop Configuration:
{
"mcpServers": {
"nexus-vps": {
"url": "http://66.179.208.238:18080/sse",
"transport": {
"type": "sse",
"headers": {
"Authorization": "Bearer YOUR_API_KEY_HERE"
}
}
}
}
}For local development, you can also run the server in stdio mode:
./bin/local/FnMCP.Nexus /path/to/event-store