MCPLand is a TypeScript framework for building and managing Model Context Protocol (MCP) tools with embedded context search capabilities. It provides a unified platform for creating AI-powered tools that can fetch, process, and search contextual information from various sources.
bun install -g mcpland# Initialize a new MCP project
mcp init
# Scaffold a new MCP (inside the project)
mcp new my-mcp
# Link with Cursor IDE (stdio mode)
mcp link cursor
# Or link with Cursor IDE (SSE mode)
mcp link cursor --sse
# Start SSE server (required for SSE mode)
mcp serveInitialize a new MCP project with interactive setup.
Usage:
mcp initWhat it does:
- Creates a new project directory (if needed)
- Sets up
package.jsonwith mcpland dependency - Creates
mcpland.jsonconfiguration file - Downloads and installs selected MCP tools
- Sets up environment variables
- Configures
.gitignoreand.envfiles - Installs dependencies automatically
Interactive prompts:
- Project name (if no package.json exists)
- Source directory for MCPs (default:
src/mcps) - OpenAI API key
- Selection of available MCP tools from registry
Scaffold a new MCP from the base template.
Usage:
mcp new [name]Arguments:
name- Optional MCP name. If omitted, it will be asked for.
What it does:
- Creates
src/mcps/<name>/index.ts - Creates an initial tool at
src/mcps/<name>/tools/<tool>/index.ts - Prints next steps to edit your MCP and add more tools.
Interactive prompts:
- MCP name (if not provided as an argument)
- MCP description
- Initial tool name (e.g.,
docs) - Tool description
Examples:
mcp new # Fully interactive
mcp new my-mcp # Skips name prompt, asks for the restNotes:
- Run this command inside your project root (where
mcpland.jsonlives). Ifmcp initcreated a new folder,cdinto it first.
Start the MCPLand SSE (Server-Sent Events) server.
Usage:
mcp serve [options]Options:
--port, -p <number>- Port to run the SSE server on (default: 1337)
Examples:
mcp serve # Start server on default port 1337
mcp serve --port 3000 # Start server on port 3000
mcp serve -p 8080 # Start server on port 8080 (short form)Note: This command is required when using SSE transport mode with Cursor.
Configure Cursor IDE integration.
Usage:
mcp link [options]Aliases:
mcp link:cursormcp cursor
Options:
--sse- Use SSE transport instead of stdio (default: false)
Examples:
mcp link cursor # Configure stdio mode (default)
mcp link cursor --sse # Configure SSE mode
mcp cursor --sse # Alternative syntaxWhat it does:
- Creates
.cursor/mcp.jsonconfiguration file - Sets up MCP server connection for Cursor IDE
- Configures environment variables (stdio mode)
- Sets up SSE endpoint URL (SSE mode)
Transport Modes:
- stdio mode (default): Direct process communication, automatically managed by Cursor
- SSE mode: HTTP-based communication, requires running
mcp serveseparately
mcp --version, -v # Show version number
mcp --help, -h # Show all commands and global help
mcp <command> --help # Show help for specific commandExamples:
mcp --help # Show general help and command list
mcp init --help # Show help for init command
mcp new --help # Show help for new command
mcp serve --help # Show help for serve command
mcp link --help # Show help for link commandMCPLand comes with built-in MCPs that you can use out of the box. These are automatically available during project initialization.
Source: src/mcps/angular/index.ts
The Angular MCP provides access to Angular's official documentation and context for AI-powered development assistance.
Tools:
angular-docs- Search through Angular's comprehensive documentation- Context Source: Angular LLM Context
- Capabilities: Semantic search through Angular docs, guides, API references, and best practices
- Usage: Ask questions about Angular components, directives, services, routing, forms, and more
Example queries:
- "What is modern Angular?"
- "How do I create a reactive form in Angular?"
- "What's the difference between ViewChild and ContentChild?"
- "Show me how to implement lazy loading for routes"
- "How to handle HTTP errors in Angular?"
-
π₯ Context Ingestion
External Source β Fetcher β Chunker β Embedder β SQLite Store -
π Query Processing
LLM Query β MCP Server β Tool Handler β Vector Search β Ranked Results -
π€ Response Generation
Search Results β Context Assembly β MCP Response β LLM Client
- Semantic search capabilities beyond keyword matching
- Relevance scoring with configurable limits
- Source isolation for multi-context environments
- Auto-discovery of MCP implementations
- Tool registration with validation
- Modular design for easy extension
- Comprehensive testing with Vitest
- Type safety throughout with TypeScript
- Error handling and logging
// Create new MCP in src/mcps/your-mcp/
class YourMCP extends MCPLand {
constructor() {
super({ name: 'your-mcp', description: 'Your description' });
}
}
// Create tools in src/mcps/your-mcp/tools/
class YourTool extends McpTool {
async fetchContext(): Promise<string> {
// Fetch your context
}
async handleContext(args: unknown): Promise<ServerResult> {
// Handle search queries
}
}- Cursor IDE integration via link command
- Multiple LLM clients via MCP protocol
- External APIs and local files as context sources
- Custom embedding models and search algorithms
- Add ability to serve SSE requests
- Add ability to schedule context updates
- Add ability to link with cursor globally
- Add ability to scaffold new mcps
MIT