Onboarded MCP Server
Onboarded MCP Server
An MCP (Model Context Protocol) server that enables AI assistants like Warp to interact with the Onboarded platform. It provides:
API Discovery — Automatically fetch and search OpenAPI specs to find available operations
API Execution — Execute any Onboarded API operation with automatic authentication
Entity Memory — Persist created entity IDs locally so the agent can reference them later
Source Code Access — Optionally read files from your local Onboarded repository
Credentials are stored securely in macOS Keychain and shared with onboarded-cli — tokens never appear in MCP tool calls or responses.
Setup
Prerequisites
Node.js 18+
git
onboarded-cli — github.com/OnboardedInc/Onboarded-CLI
Quick Setup (Recommended)
The onboarded CLI handles everything automatically:
onboarded mcp setupThis interactive command will:
Clone this repository to
~/.onboarded-mcpRun
npm installandnpm run buildAdd the server to your MCP client config
Optionally configure the Onboarded repo path for
repo_readtool
After setup completes:
Restart your MCP client (Warp, Claude Desktop, etc.) to load the server
Authenticate:
onboarded auth login <profile-name>
Manual Setup
If you prefer to set up manually:
# Clone and build into your home directory
git clone https://github.com/OnboardedInc/onboarded-mcp.git ~/.onboarded-mcp
cd ~/.onboarded-mcp
npm install
npm run buildThen add the server to your MCP client config.
Warp (~/.warp/mcp.json):
{
"mcpServers": {
"onboarded": {
"command": "node",
"args": ["/Users/YOUR_USERNAME/.onboarded-mcp/dist/index.js"]
}
}
}Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"onboarded": {
"command": "node",
"args": ["/Users/YOUR_USERNAME/.onboarded-mcp/dist/index.js"]
}
}
}Important: Use the full absolute path (e.g.
/Users/yourname/.onboarded-mcp/...). Do not use~— Node.js does not expand tilde in arguments.
Optionally create ~/.config/onboarded-mcp/config.json for repo_read tool:
{
"onboardedRepoPath": "/Users/YOUR_USERNAME/path/to/onboarded"
}Available Tools
Discovery Tools
Tool | Description |
| Fetch and cache OpenAPI specs from Onboarded APIs |
| Search for API operations by keyword |
| Get detailed parameter and schema info for an operation |
Execution Tools
Tool | Description |
| Execute any API operation by operationId |
| Check if credentials exist for a profile |
State Tools
Tool | Description |
| Store an entity reference (ID, name, type) |
| Query stored entities with filters |
| Get a stored entity by internal or external ID |
| Remove an entity from local storage |
Repository Tools (optional)
Requires onboardedRepoPath to be configured.
Tool | Description |
| Read a file from the local Onboarded repository |
| List files in a directory |
Tool Reference
spec_sync
Fetch and cache an OpenAPI spec.
api(required):"v1"or"internal"env:"prod"or"staging"(default:"prod")source:"url"or"cache"(default:"url")
ops_search
Search for API operations by keyword.
api(required):"v1"or"internal"query(required): Search term (matches operationId, summary, tags, path)topK: Max results (default: 10)
ops_describe
Get detailed schema for an operation.
api(required):"v1"or"internal"operationId(required): The operation to describe
api_call
Execute an API operation.
api(required):"v1"or"internal"operationId(required): The operation to callparams: Path and query parameters as objectbody: Request body for POST/PUT/PATCHprofile: Auth profile name (default:"default")dryRun: Iftrue, return the request without executing
auth_status
Check authentication status.
profile: Profile name (default:"default")
state_put
Store an entity reference.
entityType(required): e.g.,"employee","company"api(required):"v1"or"internal"externalId: ID from the Onboarded APIname: Human-readable namedata: Additional JSON dataenv:"prod"or"staging"(default:"prod")
state_query
Query stored entities.
entityType: Filter by typeapi: Filter by APIenv: Filter by environmentnameContains: Filter by name substringlimit: Max results (default: 100)offset: Pagination offset
state_get
Get a stored entity.
id: Internal UUID, orexternalId+api+env: Look up by Onboarded API ID
state_delete
Delete a stored entity.
id(required): Internal UUID
repo_read
Read a file from the configured repository.
path(required): Relative path (e.g.,"src/models/employee.py")startLine: Start line number (1-indexed)endLine: End line number (1-indexed)
repo_list
List files in a directory.
path: Relative path (default: root)recursive: List recursively (default:false)maxDepth: Max depth for recursion (default: 3)
Data Storage
All data is stored locally and created automatically on first run:
Path | Purpose |
| User configuration |
| Cached OpenAPI specs |
| SQLite database for entity memory |
Viewing Stored Entities
# Query all entities
sqlite3 ~/.local/share/onboarded-mcp/state.db "SELECT * FROM entities;"
# Interactive mode
sqlite3 ~/.local/share/onboarded-mcp/state.dbSecurity
Tokens are stored in macOS Keychain, never in files
Tokens never appear in MCP tool arguments or responses
Authorization headers are redacted in dry-run output
Shares credentials with
onboarded-cli— authenticate once, use everywhere
Development
npm run build # Compile TypeScript
npm run dev # Watch mode
npm run typecheck # Type checking onlyLatest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/OnboardedInc/onboarded-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server