JitAPI MCP server
Converts OpenAPI specifications into executable agent interfaces using semantic search and dependency graphs to automate API calls.
Also known as nk3750/jitapi
- Stars
- 7
- Tools
- 8
- Downloads, 30 days
- 75
- Latest version
- 0.1.1
- Last commit
- Jun 14, 2026
- License
- MIT
What is JitAPI MCP?
JitAPI converts OpenAPI specifications into executable agent interfaces using semantic search and dependency graphs to automate API calls. It exposes 8 tools, such as register_api, list_apis, search_endpoints.
Summary generated from the project's README
About JitAPI MCP server
Connecting Claude to complex APIs by providing an OpenAPI specification is what JitAPI enables. Instead of overwhelming an AI client with hundreds of endpoints that waste tokens, this server uses semantic search and dependency graphs to identify only the necessary tools for a specific task. It works locally via the command line or through Claude Desktop by registering an API URL and letting the agent plan and execute calls.
Developers can manage multiple APIs simultaneously to perform orchestration tasks that span different services. The system uses local embeddings by default, so no external API keys are required for basic operation, though users can opt into Voyage AI, OpenAI, or Cohere for higher search quality. Authentication is handled through bearer tokens, custom headers, or query parameters, with a focus on security by allowing the use of environment variables to keep credentials off the disk.
Key tools include register_api for adding new specifications, search_endpoints for natural language discovery, and call_api for executing the actual requests. The server builds a dependency graph to ensure that if one endpoint requires data from another, the agent understands the required sequence.
What you can do with it
- 1Automate multi-API workflowsAsk an AI to find information from one service and use it to query a second service.
- 2Reduce context window usageAvoid sending massive API documentation to the AI by only surfacing relevant endpoints.
- 3Handle complex API dependenciesEnsure the agent knows it must call a specific endpoint to retrieve an ID before calling a subsequent endpoint.
- 4Securely manage API credentialsConfigure authentication for various services using environment variables to prevent secrets from being stored on the filesystem.
Written from the project's README. Every use case is checked against a quote from it.
How to install JitAPI MCP
Formats verified 10 Nov 2026Install JitAPI MCP in Claude Code
$ claude mcp add --env OPENAI_API_KEY=<YOUR_OPENAI_API_KEY> jitapi -- uvx jitapiInstall JitAPI MCP in Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"jitapi": {
"command": "uvx",
"args": [
"jitapi"
],
"env": {
"OPENAI_API_KEY": "<YOUR_OPENAI_API_KEY>"
}
}
}
}Install JitAPI MCP in VS Code
.vscode/mcp.json
{
"servers": {
"jitapi": {
"type": "stdio",
"command": "uvx",
"args": [
"jitapi"
],
"env": {
"OPENAI_API_KEY": "<YOUR_OPENAI_API_KEY>"
}
}
}
}Install JitAPI MCP in Claude Desktop
claude_desktop_config.json
{
"mcpServers": {
"jitapi": {
"command": "uvx",
"args": [
"jitapi"
],
"env": {
"OPENAI_API_KEY": "<YOUR_OPENAI_API_KEY>"
}
}
}
}Install JitAPI MCP in Codex
~/.codex/config.toml
[mcp_servers.jitapi] command = "uvx" args = ["jitapi"] [mcp_servers.jitapi.env] OPENAI_API_KEY = "<YOUR_OPENAI_API_KEY>"
Install JitAPI MCP in Gemini CLI
~/.gemini/settings.json
{
"mcpServers": {
"jitapi": {
"command": "uvx",
"args": [
"jitapi"
],
"env": {
"OPENAI_API_KEY": "<YOUR_OPENAI_API_KEY>"
}
}
}
}JitAPI MCP tools 8
Detected from the READMEregister_apilist_apissearch_endpointsget_workflowget_endpoint_schemacall_apiset_api_authdelete_api
| register_api | — | |
| list_apis | — | |
| search_endpoints | — | |
| get_workflow | — | |
| get_endpoint_schema | — | |
| call_api | — | |
| set_api_auth | — | |
| delete_api | — |
Configuration
OPENAI_API_KEYRequiredSecretOpenAI API key for embeddings and workflow planning
GITHUB_TOKENOPENWEATHER_API_KEYVOYAGE_API_KEY
| Name | Description | |
|---|---|---|
| OPENAI_API_KEY | OpenAI API key for embeddings and workflow planning | RequiredSecret |
| GITHUB_TOKEN | — | |
| OPENWEATHER_API_KEY | — | |
| VOYAGE_API_KEY | — |
Automated checks
Ran Nov 14, 2026Full report →Not verified yet. A server needs a score of 80, no serious finding, and enough data for us to check. How checks work
- Source repository linked and reachablenk3750/jitapi is public and reachablegithub.com/nk3750/jitapi ↗Pass
- Package names this repository as its sourcejitapi names nk3750/jitapi as sourcepypi.org/project/jitapi/ ↗Pass
- Build provenance (Sigstore attestation)No build attestation published for this releaseNot checked
- Open source license (OSI)MITspdx.org/licenses/MIT.html ↗Pass
- Commit or release in the last yearLast commit or release 2026-06-14github.com/nk3750/jitapi ↗Pass
- OpenSSF ScorecardNot checked
- Package name not close to a popular packageNo popular package one edit away from jitapiPass
- No critical advisory in the package or its dependenciesCritical advisory: GHSA-36p7-vc44-83pf, GHSA-f4j7-r4q5-qw2cosv.dev/vulnerability/GHSA-36p7-vc44-83pf ↗Finding
- No hidden instructions to the model8 tool descriptions and the README read; no override phrases, credential paths or hidden charactersPass
- Destructive tools are labelledNot checked
- Remote endpoint answers the MCP handshakeNot checked
README
View on GitHubJitAPI
Point Claude at any API. JitAPI figures out which endpoints to call and in what order — automatically.
JitAPI is an MCP server that lets Claude interact with any API from its OpenAPI spec. Instead of dumping hundreds of endpoints into context, JitAPI uses semantic search and a dependency graph to surface only what's needed — then Claude plans and executes the calls.
https://github.com/user-attachments/assets/53f72f89-a41a-4a9c-a688-ec876ea05fbd
The Problem
Stripe has 300+ endpoints. GitHub has 800+. Loading the full spec into Claude's context wastes tokens and causes hallucinations. Writing a custom MCP server for every API you use doesn't scale.
JitAPI solves this: register any OpenAPI spec once, then ask for what you need in plain English. It finds the right endpoints, resolves dependencies between them, and lets Claude execute the calls.
Quick Start
pip install jitapi
Add to your Claude Code config (.mcp.json):
{
"mcpServers": {
"jitapi": {
"command": "uvx",
"args": ["jitapi"]
}
}
}
That's it. No API keys required — JitAPI uses local embeddings out of the box.
Then in Claude:
You: Register the GitHub API from https://raw.githubusercontent.com/github/rest-api-description/main/descriptions/api.github.com/api.github.com.json
Claude: ✓ Registered GitHub v3 REST API — 1,107 endpoints indexed
You: List my repos
Claude: [searches for "list repositories for authenticated user" → finds GET /user/repos → executes]
Here are your repositories: ...
Multi-API Orchestration
The killer feature: register multiple APIs and ask questions that span them. JitAPI searches across all registered APIs and Claude chains the calls.
You: Register the TMDB API and OpenWeatherMap API
Claude: ✓ Registered both APIs
You: Find the top popular movie on TMDB, then get the weather where it was filmed
Claude: [searches TMDB → GET /movie/popular → GET /movie/{id} for production locations
→ searches OpenWeather → GET /data/2.5/weather with the city]
The #1 popular movie is "Inception", filmed in Los Angeles.
Current weather in LA: 72°F, partly cloudy.
How It Works
Register API Ask a question
│ │
▼ ▼
Parse OpenAPI spec Embed query → vector search
│ │
▼ ▼
Build dependency graph Find relevant endpoints
│ │
▼ ▼
Embed all endpoints Expand with dependencies
│ │
▼ ▼
Store in vector DB Return schemas → Claude executes
- Register — Parse an OpenAPI spec, build a dependency graph (which endpoints need data from which other endpoints), and create searchable embeddings for all endpoints
- Search — When you ask a question, JitAPI embeds your query and finds the most relevant endpoints via cosine similarity
- Expand — The dependency graph adds any prerequisite endpoints (e.g., "you need to call GET /users first to get the user_id for POST /orders")
- Execute — Claude gets the endpoint schemas and makes the API calls, passing data between steps
MCP Tools
| Tool | Description |
|---|---|
register_api |
Register an API from an OpenAPI spec URL |
list_apis |
List all registered APIs and their endpoint counts |
search_endpoints |
Semantic search across endpoints using natural language |
get_workflow |
Find relevant endpoints with dependency resolution and full schemas |
get_endpoint_schema |
Get the complete schema for a specific endpoint |
call_api |
Execute a single API call with auth, path params, query params, and body |
set_api_auth |
Configure authentication (API key header, API key query param, or bearer token) |
delete_api |
Remove a registered API and all its data |
Setup
Claude Code
Create .mcp.json in your project directory (or ~/.claude.json for global access):
{
"mcpServers": {
"jitapi": {
"command": "uvx",
"args": ["jitapi"]
}
}
}
Claude Desktop
Add to your Claude Desktop config:
| OS | Config path |
|---|---|
| macOS | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Windows | %APPDATA%\Claude\claude_desktop_config.json |
| Linux | ~/.config/Claude/claude_desktop_config.json |
{
"mcpServers": {
"jitapi": {
"command": "uvx",
"args": ["jitapi"]
}
}
}
Embedding Providers
JitAPI works out of the box with local embeddings (fastembed) — no API keys needed. For better search quality on large APIs, you can add a cloud embedding provider:
| Provider | Quality | Setup |
|---|---|---|
| Local (default) | Good | Nothing — works immediately |
| Voyage AI (recommended) | Excellent | pip install jitapi[voyage] + set VOYAGE_API_KEY |
| OpenAI | Excellent | pip install jitapi[openai] + set OPENAI_API_KEY |
| Cohere | Very good | pip install jitapi[cohere] + set COHERE_API_KEY |
Set the API key in your MCP config's env block:
{
"mcpServers": {
"jitapi": {
"command": "uvx",
"args": ["jitapi"],
"env": {
"VOYAGE_API_KEY": "your-key-here"
}
}
}
}
Provider is auto-detected from available environment variables. Priority: Voyage AI > OpenAI > Cohere > local.
Authentication
Configure API authentication after registering. Supported auth types: bearer, api_key (custom header), and api_key_query (query parameter). The recommended approach uses environment variables so secrets are never written to disk:
{
"mcpServers": {
"jitapi": {
"command": "uvx",
"args": ["jitapi"],
"env": {
"GITHUB_TOKEN": "ghp_...",
"OPENWEATHER_API_KEY": "your-key-here"
}
}
}
}
Then tell Claude to use the env var:
You: Set bearer auth for GitHub using env var GITHUB_TOKEN
Claude: [calls set_api_auth with auth_type="bearer", env_var="GITHUB_TOKEN"]
✓ Auth configured for github (from env var $GITHUB_TOKEN)
With env_var, JitAPI reads the secret from the environment at request time — only the env var name is persisted, never the credential itself.
You can also pass credentials directly (they'll be stored in ~/.jitapi/auth.json with 0600 permissions):
You: Set API key auth for OpenWeather with param name "appid"
Claude: [calls set_api_auth with auth_type="api_key_query", credential="...", param_name="appid"]
✓ Auth configured for openweather
Supported auth types: bearer, api_key (custom header, default X-API-Key), api_key_query (query parameter).
Security note: When using
env_var, credentials are resolved at runtime and never touch the filesystem. When passingcredentialdirectly, secrets are stored as plaintext JSON at~/.jitapi/auth.json(file permissions0600, directory0700). For production use, prefer theenv_varapproach.
Environment Variables
| Variable | Required | Description |
|---|---|---|
VOYAGE_API_KEY |
No | Voyage AI API key (recommended cloud provider) |
OPENAI_API_KEY |
No | OpenAI API key (alternative cloud provider) |
COHERE_API_KEY |
No | Cohere API key (alternative cloud provider) |
JITAPI_STORAGE_DIR |
No | Data directory (default: ~/.jitapi) |
JITAPI_LOG_LEVEL |
No | DEBUG, INFO, WARNING, ERROR (default: INFO) |
Development
git clone https://github.com/nk3750/jitapi.git
cd jitapi
pip install -e ".[dev]"
pytest
ruff check src/
License
MIT
Built by Neelabh Kumar — AI engineer and builder.
JitAPI MCP questions
How do I add JitAPI MCP to Claude Code?
Run claude mcp add --env OPENAI_API_KEY=<YOUR_OPENAI_API_KEY> jitapi -- uvx jitapi in your terminal. Add --scope user to make it available in every project.
How do I add JitAPI MCP to Cursor?
Open ~/.cursor/mcp.json and add the server under mcpServers, using the Cursor config shown in the install section above.
What tools does JitAPI MCP provide?
It exposes 8 tools, including register_api, list_apis, search_endpoints, get_workflow, get_endpoint_schema.
Do I need an API key for embeddings?
No, JitAPI uses local embeddings out of the box, so no API keys are required for basic functionality.
How does JitAPI handle large API specifications?
Instead of loading the entire spec into context, it uses semantic search and a dependency graph to surface only the necessary endpoints.
Can I use multiple APIs at once?
Yes, you can register multiple APIs and ask questions that span across them, allowing Claude to chain calls between different services.
What authentication methods are supported?
It supports bearer tokens, custom API key headers, and API key query parameters.