
Company News
AWS Security Hub Adds Socket for Supply Chain Security
Socket is now in the AWS Security Hub Extended plan. Adopt it through AWS, apply committed spend, and block malicious open source packages.
formbro-mcp-server
Advanced tools
MCP server for FormBro Canadian immigration application automation. It provides agent access to FormBro applications, applicants, employers, validation, export, and controlled write workflows through the Model Context Protocol.
https://mcp.formbro.ca/mcp from Claude Code, Codex, Cursor, and other MCP clients.npx -y formbro-mcp-server for Claude Desktop and offline debugging.system,read,validate; write/export/audit tools require explicit opt-in.claude mcp add --transport http formbro \
"https://mcp.formbro.ca/mcp?toolsets=system,read,validate" \
--header "Authorization: Bearer fb_your_token_here"
For Codex:
export FORMBRO_API_TOKEN=fb_your_token_here
codex mcp add formbro \
--url "https://mcp.formbro.ca/mcp?toolsets=system,read,validate" \
--bearer-token-env-var FORMBRO_API_TOKEN
Use local stdio only when your client requires a local MCP process or you need offline debugging.
No installation needed - run directly:
npx -y formbro-mcp-server --toolsets=system,read,validate
npm install -g formbro-mcp-server
npm install formbro-mcp-server
fb_)FORMBRO_API_URL=https://backend.formbro.ca \
FORMBRO_API_TOKEN=fb_your_token_here \
formbro-mcp-server --toolsets=system,read,validate
FORMBRO_API_URL=https://backend.formbro.ca \
TRANSPORT=http \
PORT=3000 \
formbro-mcp-server --toolsets=system,read,validate
Note: In HTTP mode, the token is provided per-request via the Authorization header, not in the environment.
| Variable | Required | Mode | Description | Default |
|---|---|---|---|---|
FORMBRO_API_URL | ✅ Yes | Both | Base URL of FormBro API | - |
FORMBRO_API_TOKEN | ✅ Yes | stdio only | API token for authentication | - |
TRANSPORT | No | Both | Transport mode: stdio or http | stdio |
PORT or MCP_PORT | No | HTTP only | HTTP server port | 3000 |
Claude Desktop uses stdio transport for local process communication.
Add to your claude_desktop_config.json:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"formbro": {
"command": "npx",
"args": ["-y", "formbro-mcp-server"],
"env": {
"FORMBRO_API_URL": "https://backend.formbro.ca",
"FORMBRO_API_TOKEN": "fb_your_token_here"
}
}
}
}
{
"mcpServers": {
"formbro": {
"command": "formbro-mcp-server",
"env": {
"FORMBRO_API_URL": "https://backend.formbro.ca",
"FORMBRO_API_TOKEN": "fb_your_token_here"
}
}
}
}
{
"mcpServers": {
"formbro": {
"command": "node",
"args": ["/path/to/formbro-mcp-server/dist/index.js"],
"env": {
"FORMBRO_API_URL": "https://backend.formbro.ca",
"FORMBRO_API_TOKEN": "fb_your_token_here"
}
}
}
}
Restart Claude Desktop after updating the configuration.
Claude Code supports both stdio and HTTP transports.
Step 1: Start the HTTP server
# In a terminal, run:
FORMBRO_API_URL=https://backend.formbro.ca \
TRANSPORT=http \
PORT=3000 \
formbro-mcp-server
Or create an .env file:
# .env
FORMBRO_API_URL=https://backend.formbro.ca
TRANSPORT=http
MCP_PORT=3000
Then run:
formbro-mcp-server
Step 2: Add to Claude Code with your token
# Option A: Using Bearer token format
claude mcp add --transport http formbro http://localhost:3000/mcp \
--header "Authorization: Bearer fb_your_token_here"
# Option B: Direct token format (also supported)
claude mcp add --transport http formbro http://localhost:3000/mcp \
--header "Authorization: fb_your_token_here"
Verify connection:
claude mcp list
claude mcp add --transport stdio formbro -- \
env FORMBRO_API_URL=https://backend.formbro.ca \
FORMBRO_API_TOKEN=fb_your_token_here \
npx -y formbro-mcp-server
claude mcp add --transport stdio formbro -- \
env FORMBRO_API_URL=https://backend.formbro.ca \
FORMBRO_API_TOKEN=fb_your_token_here \
formbro-mcp-server
# List all MCP servers
claude mcp list
# Remove a server
claude mcp remove formbro
# Update server configuration
claude mcp remove formbro
claude mcp add --transport http formbro http://localhost:3000/mcp \
--header "Authorization: Bearer fb_new_token"
formbro_find ⭐ (Recommended)Smart search across all entity types with intelligent name matching.
Why use this first?
Examples:
// Find applicant by name
formbro_find({ name: "Zhang Wei" })
// Find with applications included
formbro_find({ name: "John Smith", include: ["applications"] })
// Filter by program
formbro_find({ name: "Wei", program: "tr", include: ["applications"] })
// Limit results
formbro_find({ name: "Smith", limit: 10 })
Parameters:
name (required): Name to search for. Supports full name in any order.program (optional): Filter by "tr", "pr", or "lmia"include (optional): Array of ["applications"] or ["applications", "employer"]limit (optional): Maximum results to return (1-20, default: 5)formbro_list_applicantsList applicants with search, program filtering, and pagination.
Parameters:
limit (optional): Maximum results to return (1-100, default: 20)offset (optional): Number of results to skip for pagination (default: 0)search (optional): Search query to filter by name, email, etc.program (optional): Filter by program type ("tr", "pr", "lmia")response_format (optional): "markdown" or "json" (default: "markdown")formbro_get_applicantGet detailed applicant information by ID.
Parameters:
id (required): The applicant's unique identifier (MongoDB ObjectId)response_format (optional): "markdown" or "json" (default: "markdown")formbro_list_applicationsList applications by program type with status filtering.
Programs:
tr - Temporary Residence (Work permits, study permits, visitor visas)pr - Permanent Residence (Family sponsorship, Express Entry, PNP)lmia - Labour Market Impact Assessment (Employer applications)Parameters:
limit (optional): Maximum results to return (1-100, default: 20)offset (optional): Number of results to skip for pagination (default: 0)search (optional): Search query to filter by case nameprogram (optional): Filter by program type ("tr", "pr", "lmia")status (optional): Filter by status ("draft", "in_progress", "submitted", "approved", "refused")response_format (optional): "markdown" or "json" (default: "markdown")formbro_get_applicationGet detailed application information by ID.
Parameters:
id (required): The application's unique identifier (MongoDB ObjectId)response_format (optional): "markdown" or "json" (default: "markdown")formbro_list_employersList employers with search and pagination.
Parameters:
limit (optional): Maximum results to return (1-100, default: 20)offset (optional): Number of results to skip for pagination (default: 0)search (optional): Search query to filter by company name, business number, etc.response_format (optional): "markdown" or "json" (default: "markdown")formbro_get_employerGet detailed employer information by ID.
Parameters:
id (required): The employer's unique identifier (MongoDB ObjectId)response_format (optional): "markdown" or "json" (default: "markdown")All tools support two response formats:
markdown (default) - Human-readable formatted output for Claudejson - Machine-readable structured dataWhen running in HTTP mode, the server exposes:
GET /healthHealth check endpoint returning server status.
Response:
{
"status": "ok",
"server": "formbro-mcp-server",
"version": "1.0.0",
"apiUrl": "https://backend.formbro.ca",
"apiConfigured": true
}
POST /mcpMain MCP endpoint using Streamable HTTP transport.
Headers:
Authorization: Bearer fb_your_token_here
Content-Type: application/json
Request Body: MCP protocol JSON-RPC message
GET /mcpReturns server information and available tools.
Server not connecting:
fb_~/Library/Logs/Claude/ (macOS)Token errors:
fb_HTTP connection failed:
curl http://localhost:3000/health)curl:
curl -X POST http://localhost:3000/mcp \
-H "Authorization: Bearer fb_your_token" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"tools/list","id":1}'
stdio connection failed:
npx or formbro-mcp-server is in PATHFORMBRO_API_URL=https://backend.formbro.ca \
FORMBRO_API_TOKEN=fb_your_token \
formbro-mcp-server
# Clone the repository
git clone https://github.com/jackyzhang69/formbro.git
cd formbro/mcp-server
# Install dependencies
pnpm install
# Build
pnpm build
# Run in development mode
pnpm dev
# Test stdio mode
FORMBRO_API_URL=https://backend.formbro.ca \
FORMBRO_API_TOKEN=fb_your_token \
pnpm start
# Test HTTP mode
FORMBRO_API_URL=https://backend.formbro.ca \
TRANSPORT=http \
PORT=3000 \
pnpm start
# Test health endpoint
curl http://localhost:3000/health
# Test MCP endpoint
curl -X POST http://localhost:3000/mcp \
-H "Authorization: Bearer fb_your_token" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"tools/list","id":1}'
mcp-server/
├── src/
│ ├── index.ts # Main entry point, transport setup
│ ├── services/
│ │ └── api-client.ts # FormBro API client
│ └── tools/
│ ├── find.ts # Smart find tool
│ ├── applicants.ts # Applicant tools
│ ├── applications.ts # Application tools
│ └── employers.ts # Employer tools
├── dist/ # Compiled JavaScript (generated)
├── package.json
├── tsconfig.json
└── README.md
Authorization headerfb_MIT
For issues and questions:
FAQs
MCP server for FormBro Canadian immigration application automation
The npm package formbro-mcp-server receives a total of 30 weekly downloads. As such, formbro-mcp-server popularity was classified as not popular.
We found that formbro-mcp-server demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Company News
Socket is now in the AWS Security Hub Extended plan. Adopt it through AWS, apply committed spend, and block malicious open source packages.

Research
/Security News
Popular npm packages keyv and cacheable compromised.

Security News
A misconfiguration gave three Anthropic models internet access, and one, believing it was in a simulation, shipped a credential-stealing package to PyPI.