Skip to main content
Glama
uiqkos

LlamaCloud RAG MCP Server

by uiqkos

๐Ÿฆ™ LlamaCloud RAG MCP Server

License: MIT Node.js TypeScript

Professional Model Context Protocol (MCP) server for Retrieval-Augmented Generation using LlamaCloud API. Built with TypeScript following industry best practices from the Cursor MCP Integration Guide 2025.

Transform your Cursor IDE into an AI powerhouse! Connect any LlamaCloud document index and get intelligent answers with sources directly in your development workflow.

โœจ Features

  • ๐Ÿš€ Professional TypeScript Implementation: Type-safe, compiled, production-ready

  • ๐Ÿฆ™ LlamaCloud Integration: Direct API connection to cloud-hosted document indices

  • ๐Ÿ› ๏ธ Three Powerful Tools: Query, search, and inspect your knowledge base

  • ๐Ÿ“‹ MCP Protocol Compliant: Full compatibility with Cursor IDE

  • โšก Performance Optimized: Efficient API calls and response handling

  • ๐Ÿ” Secure: Environment-based API key management

  • ๐Ÿ“ฆ Easy Installation: Automated setup script included

Related MCP server: LlamaIndex Documentation MCP Server

๐ŸŽฏ Quick Start

# Clone the repository
git clone https://github.com/uiqkos/llamacloud-rag-mcp.git
cd llamacloud-rag-mcp

# Run the interactive installer
chmod +x install.sh
./install.sh

The installer will:

  • โœ… Check Node.js version

  • ๐Ÿ“ฆ Install dependencies

  • ๐Ÿ”ง Build the project

  • ๐Ÿ”‘ Setup your API key + Organization ID + Pipeline ID

  • ๐Ÿ“‚ Configure Cursor MCP

  • ๐Ÿงช Test the connection

Option 2: Manual Installation

# 1. Clone and setup
git clone https://github.com/uiqkos/llamacloud-rag-mcp.git
cd llamacloud-rag-mcp
npm install
npm run build

# 2. Get your LlamaCloud API key
# Visit: https://cloud.llamaindex.ai/

# 3. Configure Cursor
# Add to ~/.cursor/mcp.json or .cursor/mcp.json:
{
  "mcpServers": {
    "llamacloud-rag": {
      "command": "node",
      "args": ["/absolute/path/to/llamacloud-rag-mcp/dist/index.js"],
      "env": {
        "LLAMA_CLOUD_API_KEY": "your-api-key-here",
        "LLAMA_CLOUD_ORGANIZATION_ID": "your-organization-id",
        "LLAMA_CLOUD_PIPELINE_ID": "your-pipeline-id"
      }
    }
  }
}

# 4. Restart Cursor IDE

๐Ÿ”ง Prerequisites

  • Node.js 18.0+ and npm

  • LlamaCloud API Key (get it here)

  • LlamaCloud Organization ID

  • LlamaCloud Pipeline ID (or a full Pipeline URL)

  • Cursor IDE with MCP support

๐Ÿ“‹ Available Tools

๐Ÿ” query_rag

Ask questions about your documents and get comprehensive answers with sources.

Input:

  • question (string, 1-1000 chars): Your question about the documents

Output:

  • ๐Ÿ“ Detailed answer based on retrieved content

  • ๐Ÿ“š List of source documents with relevance scores

  • ๐Ÿ‘€ Preview text from each source

Example:

Question: "What is database normalization?"
Answer: Based on the found documents, database normalization is...
Sources: 
1. Database Design Principles (relevance: 0.95)
2. SQL Fundamentals (relevance: 0.87)

๐Ÿ“„ search_documents

Search for relevant documents without generating an answer.

Input:

  • query (string, 1-500 chars): Search query

  • top_k (number, 1-10, default 5): Number of results

Output:

  • ๐Ÿ“„ List of matching documents

  • ๐Ÿ” Content previews and metadata

  • ๐Ÿ“Š Relevance scores

โ„น๏ธ get_index_info

Get detailed information about your LlamaCloud index.

Input: None

Output:

  • ๐Ÿ“‹ Index name, project, organization details

  • โœ… Current status and configuration

  • ๐Ÿ”— Pipeline URL and last update time

๐Ÿงช Testing Your Setup

# Test with npm scripts
npm run test

# Manual testing
npm run test:init  # Test initialization
npm run test:tools # Test tool listing

# Test with your API key
LLAMA_CLOUD_API_KEY="your-key" LLAMA_CLOUD_ORGANIZATION_ID="your-org-id" LLAMA_CLOUD_PIPELINE_ID="your-pipeline-id" npm run test

๐Ÿ“ Project Structure

llamacloud-rag-mcp/
โ”œโ”€โ”€ ๐Ÿ“‚ src/
โ”‚   โ””โ”€โ”€ ๐Ÿ“„ index.ts           # Main MCP server implementation
โ”œโ”€โ”€ ๐Ÿ“‚ dist/                  # Compiled JavaScript (auto-generated)  
โ”œโ”€โ”€ ๐Ÿ“„ package.json           # Node.js configuration
โ”œโ”€โ”€ ๐Ÿ“„ tsconfig.json          # TypeScript configuration
โ”œโ”€โ”€ ๐Ÿ“„ install.sh            # Automated installer
โ”œโ”€โ”€ ๐Ÿ“„ cursor-mcp-config.example.json  # Configuration example
โ”œโ”€โ”€ ๐Ÿ“„ config.example         # LlamaCloud config template
โ”œโ”€โ”€ ๐Ÿ“„ LICENSE               # MIT license
โ””โ”€โ”€ ๐Ÿ“„ README.md             # This file

๐Ÿ” Security & Best Practices

  • โœ… API Key Protection: Never commit keys to version control

  • โœ… Environment Variables: Secure configuration management

  • โœ… Type Safety: Full TypeScript implementation

  • โœ… Error Handling: Comprehensive error catching and reporting

  • โœ… Input Validation: Secure parameter validation

  • โœ… No Data Logging: Your queries stay private

๐ŸŽจ Customization

Using Your Own LlamaCloud Index

  1. Create your index in LlamaCloud

  2. Set the required environment variables in your Cursor MCP config:

LLAMA_CLOUD_API_KEY=...
LLAMA_CLOUD_ORGANIZATION_ID=...
LLAMA_CLOUD_PIPELINE_ID=...
# or set LLAMA_CLOUD_PIPELINE_URL=... instead of PIPELINE_ID
  1. Rebuild: npm run build

Custom Tools

Extend the server by adding new tools in src/index.ts. Follow the existing patterns for type safety and error handling.

๐Ÿ› Troubleshooting

Tools not showing in Cursor?

  1. โœ… Check env vars: Ensure LLAMA_CLOUD_API_KEY, LLAMA_CLOUD_ORGANIZATION_ID, and LLAMA_CLOUD_PIPELINE_ID (or LLAMA_CLOUD_PIPELINE_URL) are set correctly

  2. ๐Ÿ”„ Restart Cursor: Fully quit and restart Cursor IDE

  3. ๐Ÿ“ Check paths: Ensure absolute paths in MCP configuration

  4. ๐Ÿ” Check logs: Look at Cursor developer console for errors

  5. ๐Ÿงช Test manually: Run npm run test to verify server works

Common Issues

"Module not found": Run npm run build first "Missing required environment variables": Set LLAMA_CLOUD_API_KEY, LLAMA_CLOUD_ORGANIZATION_ID, and LLAMA_CLOUD_PIPELINE_ID (or LLAMA_CLOUD_PIPELINE_URL)
"Connection failed": Check your LlamaCloud API key and internet connection "Tools not listed": Verify Cursor MCP configuration syntax

Getting Help

  • ๐Ÿ“– Check the MCP Documentation

  • ๐Ÿ’ฌ Open an issue

  • ๐Ÿ” Review Cursor logs in developer console

๐Ÿค Contributing

Contributions are welcome! Please read our contributing guidelines and open an issue or pull request.

  1. Fork the repository

  2. Create a feature branch: git checkout -b feature/amazing-feature

  3. Commit your changes: git commit -m 'Add amazing feature'

  4. Push to the branch: git push origin feature/amazing-feature

  5. Open a pull request

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

๐Ÿ™ Acknowledgments


Made with โค๏ธ for the developer community

Star โญ this repository if it helped you!

Available Tools

3 tools
get_index_infoA

Get detailed information about the LlamaCloud index and its current status

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It does not explicitly state that the operation is read-only, mention any authentication requirements, or describe what happens during the call. This lack of transparency is a significant gap for a tool that provides detailed information.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise at one sentence with the verb and resource front-loaded. It is efficient but could add more value without being overly verbose, such as mentioning the purpose or output format.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of two siblings, the simple description may not provide enough context for an agent to distinguish when to use this tool. It does not describe the return values (no output schema) or any prerequisites, which is insufficient for a tool with no parameters and no annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the baseline for this dimension is 4. The description does not need to add parameter information since there are none, and the schema coverage is 100% by definition.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get', the resource 'LlamaCloud index', and specifies the scope 'detailed information and its current status'. It effectively distinguishes from siblings 'query_rag' and 'search_documents' which focus on different operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for retrieving index information and status but does not provide explicit guidance on when to use it versus siblings, nor does it mention when not to use it. Alternatives are not named, leaving the agent to infer based on tool names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

query_ragB

Query the database documents in LlamaCloud and get comprehensive answers with sources

ParametersJSON Schema
NameRequiredDescriptionDefault
questionYesQuestion about database concepts, management systems, or related topics

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It states that the tool returns answers with sources, but does not disclose whether it is read-only, required permissions, or any rate limits. The behavioral information is minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the key action and result. No extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter and no output schema, the description provides the core purpose but lacks details on output format, error handling, or pagination. It is adequate but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already describes the 'question' parameter. The tool description adds no additional semantic context for parameters, meeting the baseline for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool queries database documents in LlamaCloud to get comprehensive answers with sources, differentiating it from sibling tools like search_documents which likely return raw search results.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like get_index_info or search_documents. It does not state when not to use it or any prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_documentsA

Search for relevant documents in the knowledge base without generating an answer

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query for semantic document retrieval
top_kNoNumber of documents to return (1-10)

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description fully carries the transparency burden. It accurately describes the core behavior (search, no answer) but omits details like return format, pagination, or any side effects. This is adequate but not thorough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single efficient sentence that front-loads the key verbs and resource, with zero extraneous words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (2 params, no output schema), the description is adequate but lacks any mention of return structure or error behavior, which would be helpful for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents both parameters. The description adds no new semantic detail for the parameters themselves, meeting the baseline for full schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'search' and the resource 'documents in the knowledge base', and explicitly distinguishes this tool from answer generation, making its purpose unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly notes that the tool does not generate an answer, implying it should be used when only document retrieval is needed. Sibling tools (query_rag for answers, get_index_info for index info) provide clear alternatives, though no explicit 'when not to use' statement is given.

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.

  1. 3 tool updatesv1.0.0
    • First observedget_index_info
    • First observedquery_rag
    • First observedsearch_documents

TDQS

A3.9/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: get_index_info retrieves index metadata, query_rag answers with sources, and search_documents finds documents without generating an answer. No overlap in functionality.

Naming Consistency5/5

All tool names follow a consistent verb_noun snake_case pattern (get_index_info, query_rag, search_documents). The naming is predictable and intuitive.

Tool Count5/5

With 3 tools, the surface is well-scoped for a RAG server: one for index status, one for querying, and one for searching. Neither too few nor too many.

Completeness4/5

The tools cover the core RAG workflow (index info, query, search). A minor gap is absence of document management or index modification, but that may be out of scope for a read-only RAG server.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers