nango-mcp-server
The Nango MCP Server provides administrative and operational capabilities for managing Nango environments, integrations, connections, and making proxy API calls.
Environment Management
List all configured Nango environments without exposing secret keys
Verify a specific environment's secret can be resolved
Integration Management
List, retrieve, create, update, and delete integrations
Search Nango's provider templates before creating an integration
Connection Management
List, get details, view context, import, and delete connections (with optional tag/search filters)
Get a compact, redacted context summary of a connection
Tags & Metadata
Replace a connection's complete tag set
Set or patch metadata on a connection (for routing, attribution, and configuration)
Connect & Reconnect Sessions
Create hosted Nango Connect session tokens for new authorizations
Create standard Connect sessions with recommended/MCP convention tags
Create reconnect sessions for existing connections needing re-authorization
Provider API Proxy
Make calls to provider APIs through the Nango Proxy without exposing OAuth tokens to the agent
Connection Conventions (Optional Helpers)
Describe, build, apply, and audit optional tag and metadata conventions for cleaner multi-client operations
Security & Configuration
Supports single or multi-environment setups, resolving secret keys from environment variables,
.envfiles, or InfisicalCan enforce read-only mode or require confirmation for mutating actions
Redacts credential-like information from responses
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@nango-mcp-server list all integrations in the dev environment"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Nango MCP Server
A public, self-hostable MCP server for Nango management and provider API access.
Created by Lev Jampolsky at ValStratis.
This independent project is not affiliated with or endorsed by Nango. See Nango, the Nango repository, and Nango documentation.
Version 2.0 provides:
stdio by default and optional Streamable HTTP at
/mcpdirect environment secrets or optional Infisical resolution
static bearer policies or OAuth protected-resource authorization for HTTP
28 tools with strict camelCase inputs and documented connection filters
native MCP approval flows, including conservative trusted-host review for exact-target provider deletes
redacted Nango management responses
safe native connection end-user updates with preflight and read-back verification
provider requests through Nango Proxy with safe 429 retry behavior
immutable staging for large outbound mutation bodies
bounded structured results and contract-v2 response artifacts with a query-only JSON boundary
streamed provider downloads exposed as protected MCP resources
Install
Run directly with uvx:
uvx --from git+https://github.com/LevSky22/nango-mcp-server.git@v2.0.0 nango-mcpOr install persistently:
pipx install git+https://github.com/LevSky22/nango-mcp-server.git@v2.0.0For development:
git clone https://github.com/LevSky22/nango-mcp-server.git
cd nango-mcp-server
python3 -m venv .venv
.venv/bin/pip install -e ".[test]"
.venv/bin/python -m pytest -qRelated MCP server: Apideck MCP
Basic stdio configuration
Create a private .env file:
NANGO_BASE_URL=https://api.nango.dev
NANGO_ENVIRONMENT=default
NANGO_SECRET_KEY=replace_with_your_nango_environment_secret_keyNANGO_SECRET_KEY is the Nango environment secret key, not a provider credential. Keep it server-side and never commit it.
For several environments:
NANGO_MCP_ENVIRONMENTS=development,production
NANGO_SECRET_KEY_DEVELOPMENT=replace_with_development_secret
NANGO_SECRET_KEY_PRODUCTION=replace_with_production_secret
NANGO_MCP_ENVIRONMENT_ALIASES_PRODUCTION=livePoint the process at the file when its working directory differs:
NANGO_MCP_ENV_FILE=/absolute/path/to/.env nango-mcpGeneric MCP client configuration:
{
"mcpServers": {
"nango": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/LevSky22/nango-mcp-server.git@v2.0.0",
"nango-mcp"
],
"env": {
"NANGO_MCP_ENV_FILE": "/absolute/path/to/.env"
}
}
}
}Stdio is the default. It uses a local implicit caller scope over the configured environments. Set NANGO_MCP_READ_ONLY=true to disable mutations entirely.
Streamable HTTP
HTTP mode binds to loopback by default and requires authentication plus rotating request-state keys:
NANGO_MCP_TRANSPORT=http
NANGO_MCP_HTTP_HOST=127.0.0.1
NANGO_MCP_HTTP_PORT=3000
NANGO_MCP_REQUEST_STATE_KEYS=replace_with_at_least_32_random_bytesGET /health is an unauthenticated shallow health check. MCP traffic uses /mcp.
Static bearer policy
Static mode is suited to local and private-network deployments. Tokens must start with nangomcp1_ and contain at least 43 URL-safe random characters. Store only their lowercase SHA-256 digests:
python -c 'import hashlib; print(hashlib.sha256(input().strip().encode()).hexdigest())'NANGO_MCP_AUTH_MODE=static
NANGO_MCP_TOKENS={"replace_with_sha256_digest":{"label":"local-automation","scopes":["development"],"allowed_proxy_methods":["GET","HEAD"],"mutation_approval":"server"}}Policy fields are:
label: non-secret audit identityscopes: environment names or['*']denied_tools: optional tool namesallowed_proxy_methods: methods or['*']denied_proxy_path_patterns: optional regular expressionsmutation_approval:serverorhostserver_approval_proxy_path_patterns: routes that remain server-approved
Use NANGO_MCP_TOKEN_REGISTRY_FILE instead of inline JSON for atomic hot reloads.
OAuth protected-resource mode
OAuth mode expects an external authorization server and validates opaque access tokens through RFC 7662 introspection:
NANGO_MCP_AUTH_MODE=oauth
NANGO_MCP_OAUTH_ISSUER_URL=https://identity.example.com
NANGO_MCP_OAUTH_RESOURCE_URL=https://mcp.example.com/mcp
NANGO_MCP_OAUTH_INTROSPECTION_URL=https://identity.example.com/oauth/introspect
NANGO_MCP_OAUTH_CLIENT_ID=nango-mcp-resource-server
NANGO_MCP_OAUTH_CLIENT_SECRET=replace_with_resource_server_secret
NANGO_MCP_OAUTH_REQUIRED_SCOPES=nango-mcpAccess tokens use these scopes:
nango-mcp: required base scopenango:env:<name>ornango:env:*: environment accessnango:read: read intentnango:write: mutation accessnango:proxy+nango:read: proxy GET/HEAD/OPTIONS and downloadsnango:proxy+nango:write: proxy mutations and request-body staging
Issuer, resource, and introspection URLs must use HTTPS except for loopback development. The server validates activity, expiry, required scopes, and audience/resource.
Approvals
Mutation tools use MCP-native approval flows. There are no confirmation-string arguments.
mutation_approval=serverasks for server-bound approval on every mutation.mutation_approval=hostdelegates routine writes to host policy.exact-target provider DELETE routes may be delegated to a trusted host; alphabetic collection routes, bulk/wildcard/template paths, query/body deletes, and ambiguous targets remain server-approved.
matching proxy routes can be forced back to server approval.
Approval state is time-limited and bound to the caller policy, environment, tool, arguments, effect, and current target snapshot. Modern MCP clients receive input_required; compatible older sessions use elicitation.
Large responses and MCP resources
proxy_request never emits an unbounded model-facing result. Small JSON responses remain inline. Large responses are stored privately and returned as:
a bounded preview in
structuredContentresponseMetawith completeness, pagination, and artifact metadataan optional descriptor
resource_linkusingnango-mcp://artifact/<id>
resources/read returns bounded metadata only and never the stored provider payload. Models use query_response_artifact as the sole JSON value reader for bounded selection, projection, filtering, shape description, pagination, keyed-object entries, or literal text search. Binary links returned by download_provider_file remain directly readable resources.
This hybrid follows MCP's separation of concerns: tools initiate computation, resources carry application-controlled context, and resource links let hosts decide whether full content enters model context. See the MCP guidance for resources and tools.
Defaults:
inline target: 32 KiB
stored-result preview: 8 KiB
hard emitted result limit: 128 KiB
artifact limit: 50 MiB
artifact TTL: 24 hours
artifact quota: 1 GiB
artifact directory/file modes:
0700/0600
Override storage with NANGO_MCP_ARTIFACT_ROOT, NANGO_MCP_ARTIFACT_MAX_BYTES, and NANGO_MCP_ARTIFACT_TTL_SECONDS.
download_provider_file streams a provider GET with Accept: */*, enforces the size limit, computes SHA-256, and returns nango-mcp://download/<id> as a protected resource link. Results never expose a server filesystem path.
Proxy v2 contract
Every tool uses strict camelCase wire names. Unknown arguments and legacy snake_case spellings are rejected.
proxy_request accepts:
environment, providerConfigKey, connectionId, method, path,
query, headers, baseUrlOverride, body, bodyArtifactId, responseMode,
responsePath, fields, filters, pageSize, cursorMCP-owned response fields include contentType, responseHeaders, rateLimit, and responseMeta. Provider JSON under response is preserved exactly.
For mutation requests, inline bodies are limited to 4 KiB, 40 total collection entries, and JSON depth 8. If a body exceeds any limit, call stage_proxy_request_body with the same environment and body, then retry proxy_request with the returned bodyArtifactId and omit body. Staged bodies are immutable, expiring, digest-verified immediately before transmission, and have no raw-read or query interface.
query_response_artifact accepts:
environment, artifactId, responsePath, fields, filters,
pageSize, cursor, describe, objectMode, textSearchPaths use RFC 6901 JSON Pointer. Exact document pointers win; when an absolute pointer is absent, the server tries it once beneath the advertised /response root and reports the canonical path. pageSize defaults to 20 and is capped at 100. Contract-v2 cursors are signed and bound to the caller, environment, artifact, and query view.
Rate-limit handling distinguishes Nango gateway throttles from forwarded provider throttles by Nango's response body. Gateway rejections are safe to retry for any method because they were not forwarded. Provider rejections are replayed only for GET, HEAD, and OPTIONS.
Tools
The server exposes 28 tools, grouped by workflow:
Area | Tools | Access |
Environments |
| Read |
Provider discovery |
| Read |
Integrations |
| Read/write |
Connections |
| Read/write |
Tags and metadata |
| Write |
Connect sessions |
| Write |
Provider API and large responses |
| Read/write |
Optional connection conventions |
| Read/write |
See the complete tool reference for each tool's purpose, important inputs, result behavior, and safety notes. The MCP tools/list schema remains authoritative for exact input types and required fields.
Management responses redact credential-like fields. refresh_connection_credentials returns only a non-secret summary. Proxy methods other than GET/HEAD/OPTIONS and all other mutations follow the approval policy described above.
The connection convention helpers are optional. They generate generic Nango tags and metadata; they are not profiles and do not discover organizations or impose deployment-specific policy. update_connection_end_user is deliberately separate: it changes Nango's native end_user identity, preserves both tag layers, blocks organization-linked identities, and verifies the result by read-back.
Optional Infisical resolver
NANGO_MCP_SECRET_RESOLVER=infisical
NANGO_MCP_ENVIRONMENTS=development,production
INFISICAL_URL=https://infisical.example.com
INFISICAL_UNIVERSAL_AUTH_CLIENT_ID=replace_with_machine_identity_id
INFISICAL_UNIVERSAL_AUTH_CLIENT_SECRET=replace_with_machine_identity_secret
NANGO_MCP_INFISICAL_PROJECT_ID=replace_with_project_id
NANGO_MCP_INFISICAL_ENVIRONMENT=production
NANGO_MCP_INFISICAL_SECRET_PATH_TEMPLATE=/nango/{environment}
NANGO_MCP_INFISICAL_SECRET_NAME=NANGO_SECRET_KEYDocker
Build locally:
docker build -t nango-mcp:2.0.0 .HTTP containers must receive the Nango secret configuration, authentication policy, and request-state keys at runtime. Do not bake secrets into an image.
Development and security
python -m pytest -q
python -m build
python -m twine check dist/*CI tests Python 3.11 through 3.13, builds the distribution, checks package metadata, scans Git history for secrets, and scans the filesystem for high/critical vulnerabilities.
Do not put Nango keys, OAuth tokens, Infisical credentials, provider payloads, or customer data in issues, tests, fixtures, logs, or commits. Audit logs contain identities, tool names, outcomes, timing, and bounded operational metadata—not tokens, headers, arguments, or payloads.
See MIGRATION.md when upgrading from 1.x or 0.x.
License
MIT. Attribution is appreciated and preserved in the license.
Available Tools
28 toolsapply_connection_conventionC
Apply suggested tags and metadata, deriving display identity from native end_user.
Inputs: purpose (required), ownerKind (required), principal (required), environment (required), +4 more. Returns: object
audit_connection_conventionsC
Audit Nango connections for suggested MCP tag/metadata conventions.
Inputs: environment (required), limit. Returns: object
build_connection_conventionC
Build a suggested connection_id, tags, and metadata object for a managed connection.
Inputs: purpose (required), ownerKind (required), principal (required), environment (required), +2 more. Returns: object
check_environmentC
Resolve one configured Nango environment without returning its secret key.
Inputs: environment (required), refresh. Returns: object
create_connect_sessionC
Create a Nango Connect session token.
Inputs: environment (required), allowedIntegrations (required), tags, integrationsConfigDefaults.
create_integrationB
Create a Nango integration using the Nango API payload shape.
Inputs: payload (required), environment (required).
create_reconnect_sessionC
Create a Nango reconnect session for an existing connection.
Inputs: environment (required), connectionId (required), providerConfigKey (required).
create_standard_connect_sessionC
Create a Connect session and return its post-auth finalization contract.
Inputs: purpose (required), ownerKind (required), principal (required), environment (required), +6 more.
delete_connectionC
Delete one Nango connection.
Inputs: environment (required), connectionId (required), providerConfigKey (required).
delete_integrationC
Delete a Nango integration.
Inputs: environment (required), integrationId (required).
describe_connection_conventionC
Explain the optional Nango MCP connection convention helpers.
Inputs: no named parameters. Returns: object
download_provider_fileC
Stream a provider GET response into a protected MCP binary resource.
Inputs: path (required), environment (required), connectionId (required), providerConfigKey (required), +4 more.
get_connectionB
Get a Nango connection. Credential-like response fields are redacted.
Inputs: environment (required), connectionId (required), providerConfigKey (required), includeCredentials.
get_connection_contextC
Return a compact, redacted context view for one connection.
Inputs: environment (required), connectionId (required), providerConfigKey (required), includeRawProviderTemplate. Returns: object
get_integrationB
Get one Nango integration. Credential-like response fields are redacted.
Inputs: environment (required), integrationId (required), includeCredentials.
import_connectionC
Import/create a connection using the Nango API payload shape.
Inputs: payload (required), environment (required).
list_connectionsC
List Nango connections using Nango's documented query filters.
Inputs: environment (required), limit, search, endUserId, +3 more.
list_environmentsB
List configured Nango environments without returning secret material.
Inputs: refresh. Returns: object
list_integrationsB
List integrations configured in one Nango environment.
Inputs: environment (required), refreshSecret.
proxy_requestC
Call a provider API through the Nango Proxy without exposing provider tokens.
Inputs: path (required), method (required), environment (required), connectionId (required), +12 more. Returns: ok, status, response, rateLimit, +3 more
query_response_artifactC
Query a stored provider response with bounded, strict camelCase controls.
Inputs: artifactId (required), environment (required), cursor, fields, +6 more. Returns: shape, response, artifactId, responseMeta, +1 more
refresh_connection_credentialsB
Force an OAuth refresh and return only a non-secret credential summary.
Inputs: environment (required), connectionId (required), providerConfigKey (required). Returns: object
replace_connection_tagsA
Replace a connection's complete tag set. Fetch and merge first when changing one tag.
Inputs: tags (required), environment (required), connectionId (required), providerConfigKey (required).
search_provider_templatesB
Search Nango provider templates before creating an integration.
Inputs: query (required), environment (required), limit, includeRawTemplates. Returns: object
stage_proxy_request_bodyB
Stage an immutable outbound JSON body and return only its bounded descriptor.
Inputs: body (required), environment (required). Returns: id, usage, sha256, rootType, +12 more
update_connection_end_userB
Safely update native Nango end-user identity and verify it by read-back.
Inputs: environment (required), connectionId (required), providerConfigKey (required), id, +2 more. Returns: endUser, verified, environment, connectionId, +4 more
update_connection_metadataA
Merge or replace structured connection metadata. Do not store credentials here.
Inputs: metadata (required), environment (required), connectionId (required), providerConfigKey (required), +1 more.
update_integrationC
Patch a Nango integration.
Inputs: fields (required), environment (required), integrationId (required), reconnectConnectionIds, +1 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 28 tools
Most tools target a distinct resource and action, but there are clusters that could confuse an agent: create_connect_session vs create_standard_connect_session, get_connection vs get_connection_context, and the four connection-convention helpers all have overlapping boundaries. The descriptions are precise enough to disambiguate with careful reading, but the set is not immediately self-evident.
Tool names consistently use snake_case with an imperative verb prefix like list_, get_, create_, update_, delete_, and refresh_. Minor deviations like check_environment, stage_proxy_request_body, and describe_connection_convention break the dominant verb-noun pattern slightly, but the overall style is predictable and readable.
With 28 tools, the server exceeds the 25-tool threshold that starts to feel too heavy. The broad Nango domain (environments, integrations, connections, Connect sessions, proxy, and conventions) partially justifies the count, but many helper and convention tools add surface area that could likely be consolidated.
Core lifecycle coverage is strong: integrations have full CRUD, connections support listing, reading, importing, deleting, and targeted updates, and Connect session creation is covered. Gaps include no environment create/update/delete and no generic connection update endpoint, but these are minor given the server's apparent scope.
Maintenance
Related MCP Connectors
Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server
MCP server for interacting with the Supabase platform
The official MCP Server from Mia-Platform to interact with Mia-Platform Console
MCP server for Codat — companies, connections, invoices, bills and financial statements.
Related MCP Servers
- AlicenseAqualityBmaintenancePortkey Admin API control-plane MCP server with Prisma AIRS interoperability guidance.194301 npm6MIT

Apideck MCPofficial
AlicenseAqualityAmaintenanceModel Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server4414 npm21MIT- AlicenseNot gradedqualityDmaintenanceMCP server that provides tools to interact with the LiteLLM proxy API, enabling LLM completions, embeddings, image generation, and admin operations.70 npmMIT
- FlicenseNot gradedqualityDmaintenanceA modular MCP server exposing tools for integrating with services like GitHub, Redash, Jenkins, Figma, Jira, Confluence, Teams, Datadog, PagerDuty, Slack, and Presto, enabling users to manage these platforms through natural language via an MCP client.-