Individual Application Mesh, MCP Server
Project description
IAM MCP SERVER ... kind of ๐ค
The Individual Applicant Mesh (IAM) MCP Server is designed to process and manage applicant resumes, as well as facilitate job searches. It offers specialized tools and prompts for job searching, resume aggregation, generating job-specific resumes, and creating tailored cover letters.
Note: This server does not fully handle system integrations. Instead, it provides focused functionality specifically for an MCP hostโhence the "kind of ๐ค".
๐ก Community & Support
If you found this project helpful, please consider giving it a star โญ๏ธ. Found a bug or have suggestions? Open an issueโyour feedback is welcome!
๐ Quickstart
1. Use Claude Desktop as MCP host
The IAM MCP Server is designed to work with Claude Desktop, which provides the necessary MCP host environment. For more details on setting up Claude Desktop with MCP, see the official MCP quickstart guide.
2. Add filesystem MCP server
Add the filesystem MCP server to Claude Desktop to enable file system access (see Requirements section below for configuration example).
3. Get JSearch API token
Create a free account at JSearch to get your API token (200 free requests/month).
โ ๏ธ Note: This step is optional. You can let the MCP host or another MCP server handle job searches instead.
4. Configure IAM MCP Server
Add the following to your Claude Desktop configuration to run the server directly from PyPI using uvx:
{
"mcpServers": {
"iam": {
"command": "uvx",
"args": [
"--from",
"iam-mcp-server@latest",
"mcp-server-iam"
],
"env": {
"LOG_LEVEL": "INFO",
"RAPIDAPI_KEY": "<YOUR_API_KEY>",
"RAPIDAPI_HOST": "jsearch.p.rapidapi.com",
"MCP_TRANSPORT": "stdio"
}
}
}
}
๐ Ready to start using IAM MCP Server?
Check out the Features section to learn how to use the available tools and prompts.
๐ Requirements
-
๐๏ธ The MCP host must have read and write access to the local file system where it is running. For example, you can run the
IAM MCP ServerwithinClaude Desktop, alongside thefilesystemMCP Server, which provides this capability. This file access requirement applies to version1.0and is necessary for proper operation.1.1. Add the
filesystemMCP server{ "mcpServers": { "filesystem": { "command": "npx", "args": [ "-y", "@modelcontextprotocol/server-filesystem", "<add directory for filesystem server>" ] } } }
-
๐ The
search jobMCP tool requires access to JSearch. You can create an account and get 200 requests per month for free.
โจ Features
Prompts
๐ Analyze Job Market
Directs the LLM step-by-step to perform tasks such as conducting a job search, then summarizes and analyzes the resulting job listings. Refer to the full prompt for detailed instructions and context.
๐ Resume Mesh
Easily combine multiple targeted resumes into a single, comprehensive Markdown document.
What is Resume Mesh?
If youโve applied to similar jobs, youโve likely created several versions of your resume to match different job descriptions. Resume Mesh brings all those versions together into one unified Markdown file. This gives the MCP host a complete view of your experience and makes it easy to generate new, tailored resumes for future applications.
๐ฏ Job-Specific Resume Generation
Generate customized resumes for individual job postings.
To use this feature, make sure the MCP host already has access to the resume mesh. Each tailored resume is generated using both the resume mesh and the specific job description. You need to attach the resume mesh to the MCP host conversation in advance, because the resume generation prompt does not instruct the LLM to load the resume mesh from the file system.
Cover-Letter Generation
Easily generate a customized cover letter tailored to a specific job description, using the corresponding generated resume.
How to use:
Before generating a cover letter, ensure the MCP host has access to the relevant generated resume for the target job. You must manually attach this resume to the MCP host conversation, as the cover letter prompt does not automatically retrieve it from the file system.
๐พ Save Job
Directs the LLM step-by-step to save jobs.
How to use:
Start by searching for jobs using the search jobs MCP tool. After obtaining the results, you can then instruct the LLM to save those job listings.
Tools
๐ Search Jobs
Performs a job search using the following parameters:
- role: The job title or position to search for
- city: (optional) Target city for the job search
- country: (optional) Target country for the job search
- platform: (optional) Specific job platform to use
- number of jobs: (default 5) Number of job listings to retrieve
- slice job description: (optional) Option to include only a portion of the job description
๐ ๏ธ Installation & Setup
The IAM MCP Server can be installed in multiple ways:
๐ฆ Desktop Extension (DXT) - Recommended
One-click installation for MCP hosts! DXT (Desktop Extension) format provides the easiest way to install and use the IAM MCP Server.
Why DXT?
Desktop Extensions eliminate the complexity of manual MCP server setup by bundling everything into a single installable package:
- No Python installation required - All dependencies included
- One-click installation - Just like browser extensions
- Automatic updates - MCP hosts can manage updates
- Cross-platform - Works on macOS, Windows, and Linux
- Self-contained - No environment conflicts
Download Latest DXT
Get the latest pre-built DXT file from our GitHub releases:
Look for iam_mcp_server-[version].dxt in the release assets.
Installation in Claude Desktop
- Download the latest
.dxtfile from releases - Open Claude Desktop โ Settings โ Extensions
- Install the downloaded
.dxtfile - Configure during installation with these settings:
jsearch_api_key: Your RapidAPI key from JSearch (optional - 200 free requests/month)path_to_uvx: Path to your uvx executable (usually~/.local/binon macOS/Linux,%USERPROFILE%\.local\binon Windows)
Build DXT Locally
Want to build your own DXT file?
make dxt
The built DXT file will be available in the dxt/ directory as iam_mcp_server-[version].dxt.
๐ Python Package from PyPI
You can also install this project as a Python package from PyPI: iam-mcp-server.
๐ฅ๏ธ Alternative: Manual MCP Configuration
For manual installation or other MCP hosts:
- Locate your
claude_desktop_config.jsonfile:- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
- macOS:
Option 1: Using uvx with PyPI package
{
"mcpServers": {
"iam": {
"command": "uvx",
"args": [
"--from",
"iam-mcp-server@latest",
"mcp-server-iam"
],
"env": {
"LOG_LEVEL": "INFO",
"RAPIDAPI_KEY": "<API KEY>",
"RAPIDAPI_HOST": "jsearch.p.rapidapi.com",
"MCP_TRANSPORT": "stdio"
}
}
}
Option 2: Using source code
{
"mcpServers": {
"iam": {
"command": "<path to>/uv",
"args": [
"--directory",
"<path to>/iam-mcp-server/src/mcp_server_iam",
"run",
"__main__.py"
],
"env": {
"LOG_LEVEL": "INFO",
"RAPIDAPI_KEY": "<API KEY>",
"RAPIDAPI_HOST": "jsearch.p.rapidapi.com",
"MCP_TRANSPORT": "stdio"
}
}
}
}
Restart your MCP host
- Completely quit and restart your MCP host
- The server will automatically initialize when the host starts
Verify the connection
In your MCP host, ask: "What MCP tools are available?" or "List the available MCP servers"
๐ MCP Inspector
In terminal, run PYTHONPATH=src mcp dev src/mcp_server_iam/__main__.py and accept installing the MCP Inspector.
In the web inspector UI, click connect and interact with the MCP server.
โ ๏ธ Important, this is for dev purposes only.
โ๏ธ Environment Variables
IAM supports configuration through environment variables. Create a .env file in the project root or set these variables in your system:
| Variable | Default | Description |
|---|---|---|
APP_NAME |
iam |
Application name for logging and identification |
LOG_LEVEL |
INFO |
Logging level: DEBUG, INFO, WARNING, ERROR, CRITICAL |
MCP_TRANSPORT |
stdio |
Application transport version |
RESUME_MESH_FILENAME |
resume_mesh |
Default filename for resume mesh |
RAPIDAPI_KEY |
"" |
RapidAPI key for external API access (optional) |
RAPIDAPI_HOST |
jsearch.p.rapidapi.com |
RapidAPI host endpoint |
๐ Repository Structure
iam-mcp-server/
โโโ src/ # Source code
โ โโโ mcp_server_iam/ # Main MCP server package
โ โโโ __init__.py # Package initialization
โ โโโ __main__.py # Entry point for running the server
โ โโโ config.py # Configuration management
โ โโโ prompt.py # LLM prompts and instructions
โ โโโ server.py # MCP server implementation
โ โโโ tool.py # MCP tools implementation
โ โโโ utils.py # Utility functions
โโโ tests/ # Test suite
โ โโโ __init__.py
โ โโโ test_mcp_tools.py # MCP tools tests
โโโ .env_example # Environment variables template
โโโ LICENSE # MIT License
โโโ makefile # Build and development tasks
โโโ pyproject.toml # Project configuration and dependencies
โโโ pytest.ini # Pytest configuration
โโโ README.md # This file
โโโ ruff.toml # Ruff linter configuration
โโโ uv.lock # UV dependency lock file
๐ Key Components
-
src/mcp_server_iam/: Core MCP server implementationserver.py: Main MCP server class and protocol handlingtool.py: Implementation of MCP tools (job search, etc.)prompt.py: LLM prompts for resume generation and job analysisconfig.py: Configuration management and environment variablesutils.py: Helper functions and utilities
-
tests/: Comprehensive test suite for MCP tools and functionality -
Configuration files: Project setup, linting, and dependency management
๐ License
MIT License - see LICENSE file for details
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file iam_mcp_server-2.2.3.tar.gz.
File metadata
- Download URL: iam_mcp_server-2.2.3.tar.gz
- Upload date:
- Size: 872.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a7442151b74f6b516bb1855d42dc860f9f328f9c09a7f643dd79b0cb03bfa8df
|
|
| MD5 |
7b00942f31a96af1284f412718b7be3f
|
|
| BLAKE2b-256 |
c22d7b1cb849b8dde9c7c5f50540ccd4390493be2255727a50efbdbc0de1619d
|
Provenance
The following attestation bundles were made for iam_mcp_server-2.2.3.tar.gz:
Publisher:
release.yml on alejandrogarcia-hub/iam-mcp-server
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
iam_mcp_server-2.2.3.tar.gz -
Subject digest:
a7442151b74f6b516bb1855d42dc860f9f328f9c09a7f643dd79b0cb03bfa8df - Sigstore transparency entry: 454204928
- Sigstore integration time:
-
Permalink:
alejandrogarcia-hub/iam-mcp-server@bdf510ecf19db7fb94ca138cf3f876257720edae -
Branch / Tag:
refs/heads/main - Owner: https://github.com/alejandrogarcia-hub
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@bdf510ecf19db7fb94ca138cf3f876257720edae -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file iam_mcp_server-2.2.3-py3-none-any.whl.
File metadata
- Download URL: iam_mcp_server-2.2.3-py3-none-any.whl
- Upload date:
- Size: 25.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5050e75e7ddabec89bd02817d32aa71f6d0a21cf9f2c9ce990eb4f92fe6debac
|
|
| MD5 |
a6e9f9e0b36ff44e4e85be665eceb242
|
|
| BLAKE2b-256 |
3e53f9e333c6ca032ff42d1ca548150a932f3a58d9cec0613856d747388aa5b3
|
Provenance
The following attestation bundles were made for iam_mcp_server-2.2.3-py3-none-any.whl:
Publisher:
release.yml on alejandrogarcia-hub/iam-mcp-server
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
iam_mcp_server-2.2.3-py3-none-any.whl -
Subject digest:
5050e75e7ddabec89bd02817d32aa71f6d0a21cf9f2c9ce990eb4f92fe6debac - Sigstore transparency entry: 454204941
- Sigstore integration time:
-
Permalink:
alejandrogarcia-hub/iam-mcp-server@bdf510ecf19db7fb94ca138cf3f876257720edae -
Branch / Tag:
refs/heads/main - Owner: https://github.com/alejandrogarcia-hub
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@bdf510ecf19db7fb94ca138cf3f876257720edae -
Trigger Event:
workflow_dispatch
-
Statement type: