Document360 MCP Server
This server provides read-only access to Document360 knowledge base content through the Model Context Protocol (MCP). You can:
• List Project Versions - Retrieve all available project versions from your Document360 knowledge base • Search Within Projects - Search for articles and categories within a specific project version • Get Category Details - Fetch category information including name, description, articles, and metadata using the Category ID • Get Page Content - Retrieve full page content (HTML/text and formatting) for a specific page using both Category ID and Page ID • Get Article Details - Access complete article information including title, content, tags, and metadata using the Article ID
All operations require Document360 API credentials and work with UUID identifiers. This minimal implementation supports a basic discovery and retrieval workflow for exploring and reading Document360 knowledge base content.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Document360 MCP Serversearch for user authentication articles in the latest project version"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Document360 MCP Server
Model Context Protocol server for Document360 that enables AI assistants to search, retrieve, and interact with your knowledge base. Built with FastMCP, this server provides seamless access to Document360 articles, categories, and project versions through a standardized MCP interface.
Features
Get Category by ID
Get Category Page Content by ID
Get Article by ID
Search in Project Versions
List Project Versions
Related MCP server: Amplemarket Knowledge Base MCP Server
Requirements
Python 3.12+
Document360 API key
Installation
Clone or download this repository, then install dependencies:
pip install -r requirements.txtor using a virtual environment:
python -m venv venv
source venv/bin/activate # On Windows use `venv\Scripts\activate.bat`
pip install -r requirements.txtor using UV
uv venv
uv pip install -r requirements.txtConfiguration
Set your Document360 API key and other environment variables. You can do this in your shell or directly in the mcp-config.json file:
{
"mcpServers": {
"document360": {
"command": "uv",
"args": [
"--directory", "/path/to/document360-mcp/folder", "run" ,"server.py"
],
"env": {
"DOCUMENT360_API_KEY": "your_api_key_here",
"DOCUMENT360_BASE_URL": "https://apihub.document360.io"
}
}
}
}Note: the default base URL is https://apihub.document360.io, but some accounts require to use the regional base url https://apihub.us.document360.io.
Usage
Run the server directly:
python server.pyOr with UV:
uv run server.pyExposed MCP Tools
Although Document360 exposes more granular endpoints, these are sufficient for a simple consumption workflow: models can discover project versions, enumerate categories and pages, and retrieve full page contents.
get_category_page_content Parameters:
category_id(UUID string): Document360 category IDpage_id(UUID string): Document360 page ID
get_article Parameters:
article_id(UUID string): Document360 article ID
search_in_project Parameters:
project_version_id(UUID string): Document360 project version IDquery(string, optional): Free-text phrase searched across articles/categories by the Document360 backendhits_per_page(int, optional, default 20): Maximum number of ranked results to return (1-1000)
list_project_versions Parameters: none
get_category Parameters:
category_id(UUID string): Document360 category ID
License
MIT
Available Tools
5 toolsget_articleARead-only
Get article by ID from Document360
| Name | Required | Description | Default |
|---|---|---|---|
| article_id | Yes | Document360 article ID (UUID string) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes that this is a safe read operation, and the description does not contradict it. The tool adds no behavioral disclosures beyond that, such as not-found behavior, but the output schema likely covers return expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single declarative sentence with no filler. The verb and resource are front-loaded, and every word contributes to understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-required-parameter read-only lookup with an output schema and a clear source system, the description is nearly complete. It only lacks explicit guidance on when to choose this tool over its siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage and already describes article_id as a Document360 article ID in UUID string form. The description adds no meaning beyond 'by ID', so the schema carries the parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Get'), a specific resource ('article'), and the lookup key ('by ID') from Document360. This clearly distinguishes it from sibling tools like get_category or search_in_project without requiring schema inspection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: use this tool when you have a Document360 article ID and need the article's content. However, it does not explicitly state when to prefer this over sibling tools such as search_in_project or get_category, so guidance is minimal but not misleading.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_categoryBRead-only
Get category by ID from Document360
| Name | Required | Description | Default |
|---|---|---|---|
| category_id | Yes | Document360 category ID (UUID string) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description 'Get category by ID' is consistent with that read-only intent. The description adds no additional behavioral context (e.g., not-found behavior, permissions), but the annotation covers the key safety trait, so a baseline 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence states the action, resource, identifier, and source with zero wasted words. It is as concise as possible while remaining informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read tool with an output schema and readOnlyHint, the description is nearly complete. It lacks any pointer to related tools or return expectations, but those are reasonably covered by the sibling names and output schema, leaving only a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully describes category_id as a UUID string with 100% coverage. The description merely echoes 'by ID' without adding deeper meaning, so the schema carries the semantic weight and the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get'), resource ('category'), identifier ('by ID'), and source ('from Document360'), making the core operation clear. It does not explicitly differentiate from sibling get_category_page_content, but the resource and name distinction is sufficient for a 4.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like get_category_page_content or get_article. There are no conditions, exclusions, or supporting context, so usage is only implied by the action itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_category_page_contentBRead-only
Get category page content by ID from Document360
| Name | Required | Description | Default |
|---|---|---|---|
| page_id | Yes | Document360 page ID (UUID string) | |
| category_id | Yes | Document360 category ID (UUID string) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes that this is a safe read operation, and the description's 'Get' is consistent with it. The description adds no behavioral detail beyond that, but for a simple getter with an output schema the annotation covers the main behavioral concern.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence states action, resource, lookup key, and context with no filler or repetition. The structure is front-loaded and every word adds meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read-only tool with an output schema, the description is nearly complete. It could be stronger by explaining the relationship between category_id and page_id or when this content endpoint is appropriate, but an agent has enough to select and invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both page_id and category_id documented as UUID strings, so the schema carries the parameter semantics. The description's singular 'by ID' is slightly ambiguous given two required IDs, but the schema resolves it; the description adds no parameter-level information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the action ('Get'), the specific resource ('category page content'), the lookup mechanism ('by ID'), and the source system ('Document360'). It is clear, though it does not explicitly contrast with sibling tools like get_category, so differentiation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to choose this tool over get_category, get_article, or search_in_project. There is no mention of use cases, prerequisites, or exclusions, leaving the agent to infer selection solely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_project_versionsARead-only
List all project versions from Document360
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=true, and the description's 'List' verb is consistent. The description adds the source context (Document360) but no additional behavioral details such as pagination or result format. Since annotations already declare the read-only nature, this is adequate but not extra rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler. It states the action and resource clearly and nothing else is needed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless read-only list tool with an output schema (not shown), the description is sufficient. It names what is listed (all project versions) and from where (Document360). No missing information that an agent would need to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters and the schema coverage is 100% (empty schema). The description adds no parameter-specific information, but with no parameters there is nothing to explain, so the baseline of 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb 'List' and resource 'project versions' with source 'Document360'. It clearly differentiates from sibling tools which target categories, articles, and search, not versions, so an agent can select it without confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies this tool is for listing versions, and none of the sibling tools handle versions, so the intended usage is obvious. However, it doesn't explicitly state when not to use it or name alternatives, so it lacks explicit exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_in_projectARead-only
Search inside a project version and return related articles/categories in Document360
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Free-text phrase searched across articles/categories via the Document360 backend | |
| hits_per_page | No | Maximum number of ranked results to return (1-1000) | |
| project_version_id | Yes | Document360 project version ID (UUID string) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint: true, so the read-only nature is already provided. The description adds that it returns articles/categories, which is a useful behavioral detail beyond annotations. It does not mention pagination or ranking behavior, but that is partially covered by the schema (hits_per_page) and the output schema. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence with no fluff. The core action and resource are front-loaded, and it is appropriately concise for a simple search tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema and annotations, so the description does not need to explain return values or safety. It provides sufficient context for a search operation, given that the schema documents the parameters. It could mention ranking or ordering, but the output schema likely covers that. Overall, it is adequately complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, meaning all parameters (query, hits_per_page, project_version_id) already have descriptive text in the schema. The tool description adds no additional meaning beyond what the schema provides, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Search', the resource 'project version', and the outcome 'return related articles/categories'. This distinguishes it from siblings like get_article and get_category, which retrieve specific content. The purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: use this when you need to search across articles/categories rather than fetching a specific one. It does not explicitly name alternatives or exclusions, but the contrast with sibling tools (get_article, get_category) is clear from context. The guidance is adequate but could be more explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Most tools target clearly distinct resources and actions. The only likely confusion is between get_category and get_category_page_content, since both retrieve category data by ID and the descriptions do not make the distinction explicit.
Tool names consistently follow a clear verb_noun snake_case pattern: get_*, search_in_project, and list_project_versions. The naming style is uniform and predictable, making it easy for an agent to infer the purpose of each tool.
Five tools is a well-scoped size for a read-oriented knowledge base server. Each tool covers a meaningful retrieval or search operation without unnecessary redundancy or bloat.
The set covers the core read/search workflows for articles, categories, category page content, and project versions. It lacks list-all endpoints and any mutation capabilities, but for a retrieval-focused Document360 assistant the coverage is workable.
Maintenance
Related MCP Connectors
Search and read the public Applivery docs (MDM & app distribution). Read-only, no auth.
Search and fetch AgendaForge public documentation and marketing content. No authentication needed.
Read-only search and page retrieval from the public Atisbo documentation corpus. No authentication.
Read spaces, collections, pages and content; search docs and manage GitBook organization spaces.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceProvides tools for listing and retrieving content from different knowledge bases using semantic search capabilities.1853The Unlicense
- FlicenseBqualityNot gradedmaintenanceEnables access to Amplemarket's knowledge base through Pylon's API. Supports searching articles, retrieving full content, and browsing collections with built-in caching for improved performance.3
- FlicenseNot gradedqualityDmaintenanceProvides programmatic access to SAP Fiori Jetpack Compose UI SDK documentation, including API references and feature guides. It enables users to list, search, and retrieve content from over 6,000 documentation files to support Android development.
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to browse, search, and fetch documentation from any public Zendesk Help Center via a read-only API.MIT
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/druellan/document360-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server