Document Extractor MCP Server
Extracts content from GitHub repositories including README files, documentation, and code files, with support for different branches and file types.
Provides full document lifecycle management including storage, retrieval, full-text search, and CRUD operations with automatic collection creation and schema management.
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., "@Document Extractor MCP Serverextract and store this Microsoft Learn article on PowerShell modules"
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.
Document Extractor MCP Server
A Model Context Protocol (MCP) server that extracts document content from Microsoft Learn and GitHub URLs, storing them in PocketBase for easy retrieval and search.
Features
✅ Latest MCP SDK Features (v1.12.0+)
Modern
McpServerarchitecture with enhanced capabilitiesMultiple transport protocols: STDIO, Streamable HTTP, SSE
Dynamic tool management with lazy loading
Session management for stateful connections
Server-Sent Events support with backwards compatibility
Real-time server statistics and metrics
✅ Content Extraction
Microsoft Learn articles with rich metadata
GitHub files (README, documentation, code files)
Intelligent content parsing and cleaning
Duplicate detection and updates
✅ PocketBase Integration
Persistent document storage
Full-text search capabilities
Metadata preservation
CRUD operations
✅ Advanced Server Features
Multiple transport modes (STDIO/HTTP)
Health check and info endpoints
Read-only mode support
Enhanced error handling and debugging
Resource endpoints for server metrics
✅ Rich Metadata
Word counts and content statistics
Source attribution and URLs
Extraction timestamps
Content headers and descriptions
Requirements
Node.js 18+ with ES modules support
PocketBase server running
Network access for content extraction
Installation
1. Install Dependencies
# Navigate to the project directory
cd c:\powershell_scripts\pocketbase_document_mcp\document-extractor-mcp
# Install dependencies
npm install2. PocketBase Setup
The MCP server supports both local and remote PocketBase instances. Choose the setup that best fits your needs:
Option A: Local PocketBase Instance
Download and install PocketBase:
# Download from https://pocketbase.io/docs/ # Extract the executable to your preferred directoryStart local PocketBase server:
# Run from the directory containing pocketbase.exe .\pocketbase.exe serve # Or specify custom port and data directory .\pocketbase.exe serve --http="127.0.0.1:8090" --dir="./pb_data"Set up admin account:
Access PocketBase Admin UI at http://127.0.0.1:8090/_/
Create your admin account
Note the email/password for configuration
Option B: Remote PocketBase Instance
Deploy PocketBase to your preferred hosting:
Railway, Fly.io, DigitalOcean, AWS, etc.
Follow your hosting provider's deployment guide
Ensure HTTPS is enabled for production
Configure your remote instance:
Set up admin account through the web interface
Configure CORS settings if needed
Note the full URL (e.g., https://your-pb-instance.com)
Option C: Docker PocketBase
Using Docker Compose:
version: '3.8' services: pocketbase: image: ghcr.io/muchobien/pocketbase:latest ports: - "8090:8090" volumes: - ./pb_data:/pb/pb_dataCollection Management (Automatic for all setups):
The server will automatically create the required
documentscollection on startupIf
AUTO_CREATE_COLLECTION=true(default), no manual setup neededUse the
ensure_collectiontool to manually verify/create collectionsUse the
collection_infotool to check collection status
Manual Collection Setup (if needed):
Access PocketBase Admin UI
Create a new collection named
documentsAdd these fields:
title (Text, required) content (Text, required) metadata (JSON, required) created (Date, auto-generated) updated (Date, optional)
3. Environment Configuration
Create a .env file in the project root. The server supports both local and remote PocketBase instances:
For Local PocketBase Instance:
# PocketBase Configuration - Local
POCKETBASE_URL=http://127.0.0.1:8090
POCKETBASE_ADMIN_EMAIL=admin@example.com
POCKETBASE_ADMIN_PASSWORD=your-secure-password
# Collection Settings
DOCUMENTS_COLLECTION=documents
# Transport Configuration
TRANSPORT_MODE=stdio
HTTP_PORT=3000
# Development Settings
DEBUG=true
NODE_ENV=development
READ_ONLY_MODE=false
# Collection Management ✨ New!
AUTO_CREATE_COLLECTION=trueFor Remote PocketBase Instance:
# PocketBase Configuration - Remote
POCKETBASE_URL=https://your-pocketbase-instance.com
POCKETBASE_ADMIN_EMAIL=admin@yourdomain.com
POCKETBASE_ADMIN_PASSWORD=your-secure-password
# Collection Settings
DOCUMENTS_COLLECTION=documents
# Transport Configuration
TRANSPORT_MODE=stdio
HTTP_PORT=3000
# Production Settings
DEBUG=false
NODE_ENV=production
READ_ONLY_MODE=false
# Collection Management
AUTO_CREATE_COLLECTION=trueFor Dockerized PocketBase:
# PocketBase Configuration - Docker
POCKETBASE_URL=http://pocketbase:8090
POCKETBASE_ADMIN_EMAIL=admin@localhost
POCKETBASE_ADMIN_PASSWORD=admin123
# Collection Settings
DOCUMENTS_COLLECTION=documents
# Transport Configuration
TRANSPORT_MODE=stdio
HTTP_PORT=3000
# Container Settings
DEBUG=false
NODE_ENV=production
READ_ONLY_MODE=false
# Collection Management
AUTO_CREATE_COLLECTION=trueUsage
Starting the Server
The server supports multiple transport modes:
# STDIO mode (default) - for Claude Desktop and CLI clients
npm start
# or explicitly
npm run start:stdio
# HTTP mode - for web clients and testing
npm run start:http
# Development modes with debug logging
npm run dev # STDIO mode with debugging
npm run dev:http # HTTP mode with debugging
npm run dev:stdio # STDIO mode with debugging
# Test the setup
npm run testTransport Modes
STDIO Mode (Default)
Perfect for Claude Desktop and command-line MCP clients:
npm startHTTP Mode
Enables web-based clients and testing with multiple protocols:
npm run start:httpAvailable endpoints in HTTP mode:
POST /mcp- Streamable HTTP transport (modern protocol 2025-03-26)GET /sse- Server-Sent Events transport (legacy protocol 2024-11-05)POST /messages- SSE message endpointGET /health- Health check endpointGET /info- Server information endpoint
Available Tools
1. extract_document
Extract and store content from URLs.
Parameters:
url(string, required): Microsoft Learn or GitHub URL
Example:
{
"url": "https://learn.microsoft.com/en-us/azure/cognitive-services/openai/"
}2. list_documents
List stored documents with pagination.
Parameters:
limit(number, optional): Max results per page (1-100, default: 20)page(number, optional): Page number (default: 1)
3. search_documents
Search documents by title or content.
Parameters:
query(string, required): Search querylimit(number, optional): Max results (1-100, default: 50)
4. get_document
Retrieve a specific document by ID.
Parameters:
id(string, required): Document ID
5. delete_document
Delete a document by ID.
Parameters:
id(string, required): Document ID to delete
6. ensure_collection ✨ New!
Check if the documents collection exists and create it if needed.
Parameters: None
Description: Automatically verifies the documents collection exists in PocketBase. If not found, creates the collection with the proper schema including all required fields and indexes.
7. collection_info ✨ New!
Get detailed information about the documents collection including statistics.
Parameters: None
Description: Returns comprehensive collection information including schema details, record counts, indexes, and timestamps.
Available Resources
1. stats://server
Real-time server statistics and metrics.
Content:
Total document count
Server information (name, version, uptime)
Memory usage statistics
Environment information
Read-only mode status
Dynamic Tool Management
The server supports dynamic tool management with lazy loading:
// Tools can be dynamically enabled/disabled
if (process.env.READ_ONLY_MODE === 'true') {
// Write operations are disabled in read-only mode
deleteDocumentTool.disable();
extractDocumentTool.disable();
}
// Tools can be re-enabled at runtime
tool.enable();Session Management
In HTTP mode, the server supports session management:
Streamable HTTP: Modern session management with automatic session ID generation
SSE (Legacy): Backwards compatible session handling
Session persistence: Sessions are maintained across requests
Automatic cleanup: Sessions are cleaned up when connections close
Supported Sources
Microsoft Learn
Full article extraction
Metadata preservation (description, keywords, author)
Section headers extraction
Content cleaning and formatting
Example URLs:
https://learn.microsoft.com/en-us/azure/cognitive-services/openai/https://learn.microsoft.com/en-us/dotnet/core/introduction
GitHub
File content extraction (README, docs, code)
Repository metadata
Branch handling (main/master fallback)
File type detection
Supported URL formats:
https://github.com/owner/repo(assumes README.md)https://github.com/owner/repo/blob/main/file.mdhttps://raw.githubusercontent.com/owner/repo/main/file.md
Configuration Options
Environment Variables
Variable | Description | Default |
| PocketBase server URL |
|
| Admin email for authentication | Required |
| Admin password | Required |
| Collection name for documents |
|
| Enable debug logging |
|
| Environment mode |
|
| Disable write operations |
|
| Auto-create collections on startup |
|
Debug Mode
Enable detailed logging:
$env:DEBUG="true"; node server.jsDebug logs include:
Authentication status
Content extraction details
Database operations
Error context
Error Handling
The server implements comprehensive error handling:
Network errors: Timeout and connection issues
Authentication errors: PocketBase connection problems
Validation errors: Invalid input parameters
Content errors: Extraction failures
Database errors: Storage and retrieval issues
All errors are returned as structured MCP responses with appropriate error codes.
Development
Scripts
# Start in development mode
npm run dev
# Start in production mode
npm start
# Install dependencies
npm run install-depsTesting the Server
# Test basic functionality
$env:DEBUG="true"; node server.js
# In another terminal, you can test with MCP tools or:
# Use Claude Desktop with MCP configuration
# Use other MCP-compatible clientsTroubleshooting
Common Issues
Authentication Failed
Verify PocketBase is running:
http://127.0.0.1:8090Check admin credentials in
.envEnsure admin user exists in PocketBase
Content Extraction Errors
Check network connectivity
Verify URL accessibility
Review debug logs for details
Collection Not Found
Use the
ensure_collectiontool to automatically create the collectionCheck collection name in environment variables
Verify
AUTO_CREATE_COLLECTIONis enabledCheck collection permissions
Module Import Errors
Ensure
"type": "module"in package.jsonUse Node.js 18+ with ES modules support
Check all dependencies are installed
Debug Information
Enable debug mode to see detailed logs:
$env:DEBUG="true"; node server.jsPocketBase Collection Schema
If you need to recreate the collection, use this schema:
{
"name": "documents",
"type": "base",
"schema": [
{
"name": "title",
"type": "text",
"required": true,
"options": {
"max": 255
}
},
{
"name": "content",
"type": "text",
"required": true
},
{
"name": "metadata",
"type": "json",
"required": true
},
{
"name": "created",
"type": "date",
"required": false
},
{
"name": "updated",
"type": "date",
"required": false
}
]
}MCP Client Configuration
Claude Desktop Configuration
Add this to your Claude Desktop MCP settings:
{
"mcpServers": {
"document-extractor": {
"command": "node",
"args": ["c:\\powershell_scripts\\pocketbase_document_mcp\\document-extractor-mcp\\server.js"],
"env": {
"POCKETBASE_URL": "http://127.0.0.1:8090",
"POCKETBASE_ADMIN_EMAIL": "your-admin@example.com",
"POCKETBASE_ADMIN_PASSWORD": "your-password",
"DEBUG": "false"
}
}
}
}License
MIT License - see LICENSE file for details.
Contributing
Fork the repository
Create a feature branch
Make your changes
Add tests if applicable
Submit a pull request
Changelog
v1.1.0 ✨ Latest Update
Latest MCP SDK v1.13.1+: Upgraded to the newest Model Context Protocol SDK
Latest PocketBase SDK v0.26.1+: Updated to the latest PocketBase features
Collection Management Tools: Added
ensure_collectionandcollection_infotoolsAuto-Collection Creation: Automatic database schema setup on startup
Enhanced Lazy Loading: Improved dynamic tool management
Latest SSE Features: Modern Server-Sent Events implementation
Improved Error Handling: Better collection management error recovery
Enhanced Documentation: Comprehensive usage examples and troubleshooting
v1.0.0
Updated to latest Anthropic MCP SDK
Added comprehensive error handling
Implemented input validation with Zod
Enhanced metadata extraction
Added debug logging
Improved documentation
Added PocketBase integration
Support for Microsoft Learn and GitHub
Deployment
Smithery Deployment
This MCP server supports deployment on Smithery, a platform for hosting MCP servers.
TypeScript Deploy (Recommended)
The fastest way to deploy this server on Smithery:
Fork or Clone this repository to your GitHub account
Connect GitHub to Smithery (or claim your server if already listed)
Navigate to the Deployments tab on your server page
Click Deploy - Smithery will automatically build and host your server
The smithery.yaml file is already configured for TypeScript/Node.js deployment.
Note: Despite being called "TypeScript Deploy", this method works perfectly for Node.js projects with ES modules.
Custom Deploy (Docker)
For advanced deployment with full Docker control:
Replace smithery.yaml with the container configuration:
cp smithery-container.yaml smithery.yamlPush to GitHub with the updated configuration
Deploy via Smithery's Deployments tab
The Dockerfile is optimized for production deployment with security best practices.
Configuration
When deploying on Smithery, you'll configure:
PocketBase URL: Your PocketBase instance URL
Admin Credentials: Email and password for PocketBase admin
Collection Settings: Default collection name and auto-creation
Debug Mode: Enable detailed logging (optional)
Best Practices for Smithery
Tool Discovery: All tools are available without authentication for discovery
Lazy Authentication: API validation occurs only when tools are invoked
Environment Variables: Configuration is handled via Smithery's config schema
Health Checks: Built-in health monitoring at
/healthendpoint
Available Tools
9 toolsauthenticateC
Test authentication with PocketBase using provided credentials
| Name | Required | Description | Default |
|---|---|---|---|
| pocketbaseUrl | Yes | PocketBase server URL (e.g., https://your-pb-instance.com) | |
| Yes | PocketBase admin email for authentication | ||
| password | Yes | PocketBase admin password |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It fails to clarify whether 'Test' means validation-only (read-only) or if it establishes a persistent session/token for subsequent calls. No mention of return values, error conditions, or side effects.
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?
Extremely concise at 7 words with no redundancy. Information density is appropriate for the length, though brevity contributes to other gaps.
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?
As an authentication tool with no output schema and no annotations, the description should explain success indicators, return format (token?), and relationship to subsequent operations. Current description is insufficient for a security-critical operation.
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%, so the schema documents all three parameters adequately. The description adds minimal semantic value beyond the schema, merely noting that email/password are 'credentials' and that PocketBase is the target system.
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 specifies the verb (Test authentication), resource (PocketBase), and mechanism (provided credentials). However, it does not explicitly differentiate from the sibling 'connection_status' tool, which also relates to server connectivity verification.
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 provided on when to use this tool versus 'connection_status' or other prerequisites. It does not indicate whether this should be called before other operations or what indicates authentication success.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
collection_infoB
Get detailed information about the documents collection including statistics
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Mentions 'statistics' implying read-only metadata retrieval, but lacks disclosure on performance implications of 'detailed' queries, specific return structure, or confirmation of read-only status given no output schema exists.
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?
Single efficient sentence with strong verb front-loading ('Get'). No redundant text, though 'detailed information' is vague and could be more specific about what statistics are returned.
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?
Adequate for a zero-parameter tool but vague on specific return values given no output schema exists. Mentions 'statistics' generally but doesn't clarify if this returns counts, sizes, timestamps, or schema info. Relationship to ensure_collection sibling remains unclear.
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?
Input schema contains zero parameters, triggering baseline score of 4 per rubric. No parameter documentation needed.
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 identifies a specific verb ('Get'), resource ('documents collection'), and scope ('detailed information', 'statistics'). It distinguishes from document-level siblings like get_document and delete_document by targeting collection-level metadata rather than individual documents.
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 provided on when to use this versus ensure_collection (likely for initialization/setup) or when to prefer this over list_documents for collection summaries. No prerequisites or exclusions stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connection_statusB
Check the current PocketBase connection status and configuration
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. 'Check' implies read-only/idempotent behavior, but description lacks disclosure of return format, error states when disconnected, or whether this operation itself can fail/timeout.
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?
Single sentence of appropriate length. Front-loaded with verb 'Check'. No redundancy or filler. Efficiently communicates scope without verbosity.
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?
No output schema exists, yet description only hints at return content ('status and configuration') without elaborating structure or key fields. For a diagnostic tool, adequate but gap remains regarding what specific status values/config keys are returned.
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?
Zero parameters present, meeting baseline expectation. Schema is empty object with 100% coverage (trivially). Description correctly implies no filtering or input is needed.
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?
Uses specific verb 'Check' with clear resource 'PocketBase connection status and configuration'. Mentions 'PocketBase' which distinguishes from generic connection tools, though could explicitly contrast with sibling 'authenticate' (which establishes sessions vs. this which queries state).
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?
Provides no guidance on when to invoke (e.g., before other operations vs. troubleshooting) or prerequisites. No mention of when to prefer over 'authenticate' or how it relates to the connection lifecycle.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_documentB
Delete a document from PocketBase by ID
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Document ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must carry full behavioral burden. Merely restates the operation name 'Delete' without disclosing permanence, failure modes (e.g., if ID not found), or side effects. Lacks critical safety context for a destructive operation.
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?
Nine words, front-loaded with action verb, zero redundancy. Every word earns its place in conveying the essential operation.
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?
Adequate for a single-parameter operation with complete schema documentation, but minimum-viable given the destructive nature. Missing warnings about data loss that should compensate for lack of destructiveHint annotation.
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 coverage is 100% with clear parameter description ('Document ID to delete'). Main description腹adds 'by ID' which aligns with schema but doesn't add syntax details, validation behavior, or format requirements beyond what the schema already provides. Baseline 3 appropriate for high-coverage schema.
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?
Clear specific verb ('Delete'), resource ('document'), and scope ('from PocketBase by ID'). Implicitly distinguishes from read siblings (get_document, extract_document, etc.) by naming the destructive operation, though it doesn't explicitly contrast with them.
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?
Provides no guidance on when to use versus alternatives, no warnings about permanent data loss, and no prerequisites (e.g., authentication requirements despite 'authenticate' sibling existing).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ensure_collectionA
Check if the documents collection exists and create it if needed
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It successfully discloses the conditional mutation pattern (creates only if missing), which is critical. However, lacks disclosure of return values, error conditions, idempotency guarantees, or permission requirements—significant gaps for a state-mutating tool without output schema coverage.
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?
Single sentence, 11 words, zero waste. Front-loaded with action verbs. Every word earns its place describing the dual check/create behavior.
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?
Adequate for a 0-parameter tool but gaps remain: no description of return values (success indicator, created vs existed status) despite mutation semantics and missing output schema. Error conditions and permission requirements also absent.
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?
Zero parameters present, setting baseline to 4 per rubric. Description correctly implies no resource identifiers needed (operates on implicit 'documents' collection), avoiding parameter misdirection.
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?
Specific verbs (Check/Create) + specific resource (documents collection) clearly distinguish this from siblings like delete_document or collection_info. The conditional 'if needed' precisely captures the idempotent ensure pattern.
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?
Implies usage (when collection might not exist) but lacks explicit when-to-use guidance, prerequisites, or distinction from collection_info. No mention that this should be called before document operations if uncertainty exists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extract_documentA
Extract document content from Microsoft Learn or GitHub URL and store in PocketBase
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Microsoft Learn or GitHub URL to extract content from |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. While 'store' indicates a write operation, description lacks critical behavioral details: idempotency, overwrite behavior on duplicates, validation rules for URLs, error handling, or authentication requirements.
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?
Single efficient sentence with zero waste. Front-loaded with action verbs ('Extract... and store') and immediately scopes inputs (specific URL types) and outputs (PocketBase destination).
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?
Adequate for a single-parameter ingestion tool. Description covers source system (external URL) and target system (PocketBase), which is sufficient given no output schema exists and schema fully documents the input parameter.
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 coverage is 100%, establishing baseline 3. The parameter description in the schema already specifies 'Microsoft Learn or GitHub URL', so the main description adds minimal semantic value beyond repetition. No additional syntax details or examples provided.
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?
Clear specific verbs ('Extract' and 'store') with defined resource (document content from Microsoft Learn/GitHub) and destination (PocketBase). Effectively distinguishes from siblings like get_document (internal retrieval) and search_documents (querying) by specifying external URL sources.
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?
Provides implied usage scope by restricting to 'Microsoft Learn or GitHub URL', indicating when to use this over internal document tools. However, lacks explicit guidance on prerequisites (e.g., authentication) or when-not-to-use compared to siblings like ensure_collection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_documentB
Get a specific document by ID with full content
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Document ID to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full disclosure burden. It adds valuable context that this retrieves 'full content' (implying complete payload vs. summaries), but omits error behavior (e.g., 404 handling), authentication requirements, and return format details expected for a read operation.
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?
Nine words with minimal waste. 'Specific' is slightly redundant with 'by ID' but helps emphasize single-item retrieval versus bulk operations. The structure front-loads the action and maintains readability.
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 low-complexity single-parameter retrieval tool, the description adequately covers the core operation. However, given the absence of output schema and annotations, it should disclose error conditions (e.g., 'returns error if document not found') to be complete.
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 coverage is 100% (the 'id' parameter is fully documented as 'Document ID to retrieve'). The description references 'by ID' but adds no additional semantic detail—such as ID format, where to obtain valid IDs, or validation rules—beyond what the schema explicitly states. 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 provides a clear verb ('Get'), resource ('document'), and scope ('by ID with full content'). The phrase 'by ID' effectively distinguishes this from siblings like search_documents (query-based) and list_documents (plural/enumeration), though it could explicitly contrast with extract_document.
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 explicit guidance on when to use this tool versus alternatives. While 'by ID' implies direct lookup when the identifier is known, the description fails to state when to prefer this over search_documents or handle cases where the ID is unknown.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_documentsC
List stored documents from PocketBase with pagination
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of documents to return (default: 20, max: 100) | |
| page | No | Page number for pagination (default: 1) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Only mentions pagination behavior. Lacks disclosure on return format, whether results are ordered, authentication requirements, or handling of empty collections.
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?
Single sentence, seven words with no redundancy. 'Stored' is slightly redundant with 'from PocketBase' but overall efficient. Front-loaded with action verb.
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?
Adequate for simple 2-parameter operation given good schema coverage, but gaps remain. No output schema exists yet description doesn't hint at return structure. Fails to clarify relationship with search_documents sibling, which is critical for tool selection.
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 coverage is 100% with detailed param descriptions (limit/page/range defaults). Description mentions 'pagination' which contextually maps to the parameters but adds no syntax or format details beyond what's in schema. Baseline 3 appropriate for high-coverage schema.
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?
Clear verb+resource combination (List documents from PocketBase) and specifies pagination mechanism. However, it does not distinguish from sibling search_documents, which likely performs filtered queries while this returns unfiltered lists.
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 on when to prefer this over search_documents or get_document. Does not mention whether authentication is required (relevant given authenticate sibling) or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_documentsB
Search documents by title or content using full-text search
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query to find documents (searches title and content) | |
| limit | No | Maximum number of results to return (default: 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Mentions 'full-text search' indicating matching behavior, but lacks crucial behavioral details: result ranking/relevance, case sensitivity, partial vs exact matching, return format structure, or pagination behavior beyond the limit parameter.
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?
Single efficient sentence (8 words) with front-loaded action verb. No redundant phrases or unnecessary padding; every word conveys search mechanism, target fields, and method.
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?
Adequate for a simple 2-parameter search tool with complete schema coverage. Missing output format description (relevant since no output schema exists), but tool name and 'search' verb sufficiently imply list return. Could benefit from mentioning result ranking or snippet inclusion.
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 coverage is 100%, establishing baseline 3. Description reinforces that query searches both 'title or content' (aligning with schema) and adds 'full-text search' context about query interpretation, but does not add syntax examples, query operators, or explain the default limit behavior beyond schema.
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?
States specific verb ('Search') and resource ('documents') with scope ('by title or content'). Mentions 'full-text search' mechanism, implying filtering capability that distinguishes it from list_documents (enumeration) and get_document (ID-based retrieval), though lacks explicit sibling differentiation.
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?
Provides no guidance on when to use this versus list_documents (all documents) or get_document (specific ID lookup). Missing explicit when-to-use criteria or prerequisites like query syntax requirements.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
9 tool updates
v1.0.0- First observed
authenticate - First observed
collection_info - First observed
connection_status - First observed
delete_document - First observed
ensure_collection - First observed
extract_document - First observed
get_document - First observed
list_documents - First observed
search_documents
TDQS
Each tool has a clearly distinct purpose targeting specific operations: authentication, collection management, connection checks, CRUD operations (delete, get, list, search), and document extraction. No tools overlap in functionality, making selection straightforward for an agent.
All tool names follow a consistent verb_noun pattern (e.g., authenticate, collection_info, delete_document), with clear and descriptive naming. There are no deviations in style or convention across the set.
With 9 tools, the server is well-scoped for document extraction and management, covering authentication, setup, CRUD operations, and search. Each tool serves a necessary function without bloat or redundancy.
The toolset provides strong coverage for core document workflows: authentication, collection setup, extraction, retrieval, listing, searching, and deletion. A minor gap exists in update functionality (e.g., update_document), but agents can work around this by deleting and re-extracting.
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Extract PDFs to Markdown, RAG chunks and cited tables; publish tracked Doc Links with read stats.
Versioned documentation registry and semantic search for AI tools and coding assistants.
Turn any URL into clean Markdown and structured data. Scrape, crawl, search and extract.
Provide your AI coding tools with token-efficient access to up-to-date technical documentation for…
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/DynamicEndpoints/documentation-mcp-using-pocketbase'
If you have feedback or need assistance with the MCP directory API, please join our Discord server