meteor-mcp
Provides complete Meteor.js v3.4.0 API documentation, code examples, and architectural guides to AI coding assistants.
README
Meteor.js MCP Server
A Model Context Protocol (MCP) server that provides complete Meteor.js v3.4.0 API documentation, code examples, and architectural guides to AI coding assistants like Claude, Cursor, Windsurf, and any MCP-compatible client.
212 API entries across 20 modules — all embedded as static data, no external network calls required.
Why
Meteor.js is a powerful full-stack JavaScript framework, but AI coding assistants often lack up-to-date knowledge of its APIs, especially the v3 async-first changes. This MCP server gives any AI assistant instant access to accurate, audited Meteor documentation so it can:
- Look up any Meteor API method with full signatures, parameters, and return types
- Get working code examples for common patterns (pub/sub, methods, auth, etc.)
- Understand Meteor v3's async-first architecture and migration from Fibers
- Follow best practices for security, reactivity, and project structure
Tools
The server exposes 5 MCP tools:
| Tool | Description |
|---|---|
meteor_search |
Full-text search across all 212 API entries with score-based ranking |
meteor_api_reference |
Get complete reference for an API module (e.g. collections, accounts) |
meteor_method_lookup |
Look up a specific method by name (e.g. Meteor.publish, Mongo.Collection.find) |
meteor_code_examples |
Get annotated code examples for 15 topics |
meteor_guide |
Get conceptual guidance on 10 architectural topics |
API Coverage
| Module | Entries | Description |
|---|---|---|
accounts |
35 | User accounts, login, OAuth, password management |
collections |
27 | Mongo.Collection, Cursor, CRUD operations |
tracker |
21 | Tracker.autorun, Computation, Dependency, reactivity |
meteor_core |
17 | Meteor.startup, settings, environment flags, promisify |
pubsub |
15 | Meteor.publish, subscribe, publication lifecycle |
package_js |
14 | Package.describe, api.use, Npm.depends |
methods |
11 | Meteor.methods, callAsync, applyAsync, Error |
check |
10 | check(), Match patterns and validators |
ejson |
9 | EJSON serialization, custom types |
reactive_dict |
9 | ReactiveDict get/set/equals/all |
webapp |
7 | WebApp HTTP handlers, runtime config |
connections |
5 | DDP.connect, Meteor.status, reconnect |
app_config |
5 | App.info, accessRule, mobile config |
assets |
5 | Assets.getText/getBinary (sync + async) |
ddp_rate_limiter |
4 | DDPRateLimiter rules and configuration |
environment |
4 | EnvironmentVariable, bindEnvironment |
timers |
4 | Meteor.setTimeout/setInterval with env binding |
session |
4 | Session get/set/equals |
reactive_var |
3 | ReactiveVar get/set |
email_pkg |
3 | Email.send, sendAsync, hookSend |
Plus 15 code example topics and 10 architectural guides.
Quick Start
Public instance (fastest)
A public instance is available — no setup required:
https://meteor-mcp.sembilan.cloud/mcp
Add it to your MCP client and start using it immediately.
Docker Hub (recommended for self-hosting)
docker pull dochafizhanif/meteor-mcp
docker run -d -p 8080:8080 dochafizhanif/meteor-mcp
The server runs at http://localhost:8080/mcp.
Custom port: The container listens on port 8080 internally. If that port is already in use on your machine, map it to any available port:
docker run -d -p 3000:8080 dochafizhanif/meteor-mcp # available on port 3000
docker run -d -p 9090:8080 dochafizhanif/meteor-mcp # available on port 9090
The MCP endpoint will then be at http://localhost:<your-port>/mcp.
Portainer
- Go to Containers → click Add container
- Fill in the following fields:
- Name:
meteor-mcp(or any name you prefer) - Image:
dochafizhanif/meteor-mcp:latest
- Name:
- Under Network ports configuration, click publish a new network port and enter:
- host:
8080(or any available port on your machine, e.g.3000,9090) - container:
8080(always8080— this is the port the server listens on inside the container)
- host:
- Click Deploy the container
The MCP endpoint will be at http://YOUR_SERVER_IP:<host-port>/mcp.
For example, if you set the host port to 9090, the endpoint is http://YOUR_SERVER_IP:9090/mcp.
Build from source (Docker)
git clone https://github.com/apitlekays/meteor-mcp.git
cd meteor-mcp
docker compose up -d --build
Local server (stdio)
pip install fastmcp==3.0.2
python local_server.py
Client Configuration
Claude Desktop / Claude Code
Add to your MCP settings:
{
"mcpServers": {
"meteor": {
"url": "https://meteor-mcp.sembilan.cloud/mcp"
}
}
}
Or if you're self-hosting:
{
"mcpServers": {
"meteor": {
"url": "http://YOUR_SERVER_IP:8080/mcp"
}
}
}
For local stdio mode:
{
"mcpServers": {
"meteor": {
"command": "python",
"args": ["/path/to/meteor-mcp/local_server.py"]
}
}
}
Cursor
Go to Settings > MCP Servers > Add Server and enter the URL:
https://meteor-mcp.sembilan.cloud/mcp
Project Structure
meteor-mcp/
├── server.py # Remote MCP server (streamable-http, port 8080)
├── local_server.py # Local MCP server (stdio, for dev/testing)
├── tools.py # MCP tool definitions (5 tools)
├── search.py # Score-based search engine
├── data/
│ ├── __init__.py # Aggregates all modules into API_REGISTRY
│ ├── meteor_core.py # Meteor.startup, settings, isClient/isServer, promisify
│ ├── methods.py # Meteor.methods, call, callAsync, apply, Error
│ ├── pubsub.py # Meteor.publish, subscribe, publication lifecycle
│ ├── collections.py # Mongo.Collection, Cursor, ObjectID
│ ├── accounts.py # Accounts, login, user management, OAuth
│ ├── connections.py # DDP.connect, Meteor.status, reconnect
│ ├── check.py # check(), Match patterns
│ ├── ejson.py # EJSON serialization
│ ├── tracker.py # Tracker.autorun, Computation, Dependency
│ ├── session.py # Session get/set/equals
│ ├── reactive_var.py # ReactiveVar
│ ├── reactive_dict.py # ReactiveDict
│ ├── email_pkg.py # Email.send, sendAsync, hooks
│ ├── assets.py # Assets.getText/getBinary (sync + async)
│ ├── ddp_rate_limiter.py # DDPRateLimiter rules
│ ├── webapp.py # WebApp HTTP handlers, runtime config
│ ├── app_config.py # App.info, mobile configuration
│ ├── package_js.py # Package.describe, onUse, Npm.depends
│ ├── timers.py # Meteor.setTimeout/setInterval
│ ├── environment.py # EnvironmentVariable, bindEnvironment
│ ├── examples.py # 15 topics of annotated code examples
│ └── guides.py # 10 conceptual architecture guides
├── Dockerfile
├── docker-compose.yml
└── requirements.txt # fastmcp==3.0.2
How It Works
All Meteor.js API documentation is embedded as Python dictionaries — no database, no network calls, no API keys. Each API entry contains:
- name and signature — the method name and call signature
- description — detailed explanation of behavior, parameters, and edge cases
- params — typed parameter list with optional flags
- returns — return type and description
- environment —
client,server, oranywhere - is_reactive — whether the API is a reactive data source
- deprecated — migration guidance for deprecated APIs
- examples — annotated code snippets showing real usage
- tags — keywords for search ranking
The search engine uses score-based ranking: exact name match (100pts) > partial name (50pts) > tag match (30pts) > description match (10pts).
Deployment
Docker on a VPS
ssh root@your-vps-ip
git clone https://github.com/apitlekays/meteor-mcp.git
cd meteor-mcp
docker compose up -d --build
Ensure port 8080 is open:
ufw allow 8080
Health Check
The Docker container includes a health check. Verify it's running:
docker compose ps
Behind a Reverse Proxy (nginx)
If you want HTTPS, put nginx in front:
location /mcp {
proxy_pass http://localhost:8080/mcp;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
}
Tech Stack
- Python 3.11 — runtime
- FastMCP 3.0.2 — MCP server framework
- Streamable HTTP — transport protocol (port 8080)
- Docker — containerized deployment
License
MIT
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.