A lightweight MCP server for document workflows using TX Text Control .NET Server.
This project exposes document/session tools over MCP HTTP transport and stores working documents in InternalUnicodeFormat.
- Create and manage document sessions
- Load documents from base64 (auto format detection, including markdown edge case)
- Export documents as base64 (
tx,docx,pdf,html,md) - Format text by:
- character range (
start,length) - paragraph index (
paragraphIndex)
- character range (
- Content utilities:
- read paragraphs
- search by paragraph index
- search by exact ranges (
start,length) - extract full plain text
- Structured MCP tool error payloads
- .NET 8
- C#
- ASP.NET Core Minimal API
- Model Context Protocol (MCP) .NET SDK
- TX Text Control .NET Server
src/TxTextControl.McpServer/Program.cs- app bootstrap and MCP registrationsrc/TxTextControl.McpServer/Tools/DocumentTools.cs- session/document lifecycle toolssrc/TxTextControl.McpServer/Tools/ContentTools.cs- content/query toolssrc/TxTextControl.McpServer/Services/Engines/ServerTextControlDocumentEngine.cs- document operationssrc/TxTextControl.McpServer/Services/Engines/ServerTextControlDocumentEngine.Content.cs- content operations
- Health:
GET / - MCP:
POST /mcp
Transport is configured as stateless HTTP.
create_document()load_from_base64(request, sessionId?)get_as_base64(request)get_session(sessionId)delete_session(sessionId)
format_text(sessionId, request)get_paragraphs(sessionId, start?, end?)search_text(sessionId, text?, matchCase?, wholeWord?)search_text_ranges(sessionId, text?, matchCase?, wholeWord?)get_text(sessionId)
- Create session
create_document
- Optional: load content
load_from_base64
- Edit/query content
format_text,search_text,get_text, etc.
- Export
get_as_base64
- Cleanup
delete_session
dotnet build
dotnet run --project src/TxTextControl.McpServerCreate a new document session:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "create_document",
"arguments": {}
}
}Use the returned sessionId in subsequent tool calls.
format_text(sessionId, request) accepts:
start(int, optional)length(int, optional)paragraphIndex(int, optional)bold(bool)italic(bool)underline(bool)color_hex(string, optional, e.g.#FF0000)font_name(string, optional)font_size(float, optional, points)
Use either
start+lengthorparagraphIndex.
- TX Text Control licensing is required for full runtime functionality.
- Errors from tools are returned as structured MCP payloads (
code,message,isError).
See repository license terms and TX Text Control licensing terms.