Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.langdock.com/llms.txt

Use this file to discover all available pages before exploring further.

The MCP specification defines resources as the standard way for MCP servers to expose files and other contextual data to clients. Resources are application-driven: the host application decides how users discover, select, read, preview, or attach them. In Langdock, MCP resources can become regular file attachments that users can preview, download, and pass to other tools.

MCP Resources for Files

How Resources Work

An MCP server exposes files as resources with stable URIs. A client can discover them through resources/list, then fetch their content through resources/read. The important part for file output is the resources/read response. Resource contents can be text:
{
  "contents": [
    {
      "uri": "file:///reports/summary.md",
      "mimeType": "text/markdown",
      "text": "# Summary\n\nGenerated by my MCP server."
    }
  ]
}
Or binary data, encoded as base64 in blob:
{
  "contents": [
    {
      "uri": "file:///reports/report.pdf",
      "mimeType": "application/pdf",
      "blob": "<base64-encoded file bytes>"
    }
  ]
}
Langdock reads these contents entries and stores them as action-style file outputs. The uri provides the filename, the mimeType tells Langdock how to process the file, and either text or blob contains the file content.

Demo Resource Server

This minimal server exposes one Markdown file as an MCP resource:
server.registerResource(
  "summary",
  "file:///reports/summary.md",
  {
    title: "Generated Summary",
    description: "A Markdown summary generated by the MCP server",
    mimeType: "text/markdown",
  },
  async (uri) => ({
    contents: [
      {
        uri: uri.href,
        mimeType: "text/markdown",
        text: "# Summary\n\nThis file came from an MCP resource.",
      },
    ],
  }),
);
When Langdock reads this resource, it attaches summary.md to the conversation.

Requirements

  • Return file data in contents.
  • Include mimeType; Langdock needs it to process the file correctly.
  • Include a meaningful uri; the last path segment becomes the filename.
  • Use blob for binary files, base64-encoded without a data URI prefix.
  • Use text for plain text, Markdown, JSON, HTML, and other text-based files.

Example Resource Output

{
  "contents": [
    {
      "uri": "file:///example.txt",
      "mimeType": "text/plain",
      "text": "Hello world"
    }
  ]
}
Langdock stores this as an attachment and returns file access metadata with the result:
{
  "files": {
    "successful_files": [
      {
        "fileName": "example.txt",
        "mimeType": "text/plain",
        "status": "completed",
        "access_methods": {
          "document_search": false,
          "file_input_actions": true,
          "download_available": true
        }
      }
    ]
  }
}