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.
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
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 |
| 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.
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 pull dochafizhanif/meteor-mcp
docker run -d -p 8080:8080 dochafizhanif/meteor-mcpThe 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 9090The MCP endpoint will then be at http://localhost:<your-port>/mcp.
- 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.
git clone https://github.com/apitlekays/meteor-mcp.git
cd meteor-mcp
docker compose up -d --buildpip install fastmcp==3.0.2
python local_server.pyAdd 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"]
}
}
}Go to Settings > MCP Servers > Add Server and enter the URL:
https://meteor-mcp.sembilan.cloud/mcp
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
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).
ssh root@your-vps-ip
git clone https://github.com/apitlekays/meteor-mcp.git
cd meteor-mcp
docker compose up -d --buildEnsure port 8080 is open:
ufw allow 8080The Docker container includes a health check. Verify it's running:
docker compose psIf 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;
}- Python 3.11 — runtime
- FastMCP 3.0.2 — MCP server framework
- Streamable HTTP — transport protocol (port 8080)
- Docker — containerized deployment
MIT