arimair-mcp
OfficialClick on "Install 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., "@arimair-mcpShow me today's PM2.5 and PM10 averages."
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.
ARIM MCP Server
An MCP (stdio) server that lets Claude directly query measurement data, statistics, corrections, and reports from the Arim Air monitoring system.
Query-only. It does not include features that change server state (report publishing, applying corrections, device commands, backfill, alarm registration/deletion).
Installation
Node.js 18 or higher is required.
macOS / Linux
cd /Users/amdmania/Project/arimair-mcp
npm install
npm run build
./setup-arim-mcp.sh # Claude Code + Claude Desktop 자동 등록Windows
Place the repository in a location of your choice (e.g., C:\Users\<user>\arimair-mcp) and run it from that folder.
The installation script resolves paths relative to its own location, so it works no matter where you put it.
In PowerShell:
cd C:\Users\<사용자>\arimair-mcp
npm install
npm run build
powershell -ExecutionPolicy Bypass -File .\setup-arim-mcp.ps1-ExecutionPolicy Bypass is an option that allows running an unsigned script just this once.
It does not change system policy.
What the installation script does (common)
The server address is fixed to the production server (https://monitor.arimair.com), so it is not prompted for.
Both scripts only ask for the ID, password, and account type, then register in the two places below.
Claude Code CLI (
claude mcp add arim -s user) — skipped if theclaudecommand is not availableClaude Desktop configuration file — the existing file is backed up as
.bak.<timestamp>, and other MCP servers already registered are preserved
OS | Claude Desktop configuration path |
macOS |
|
Windows |
|
After registration, you must fully quit and reopen Claude Desktop for the tools to appear.
Manual registration
# macOS / Linux
claude mcp add arim -s user -t stdio \
-e ARIM_API_BASE_URL=https://monitor.arimair.com \
-e ARIM_MCP_USER=<아이디> \
-e ARIM_MCP_PASS=<비밀번호> \
-- node /Users/amdmania/Project/arimair-mcp/build/index.js# Windows (PowerShell) — 경로는 실제 설치 위치로
claude mcp add arim -s user -t stdio `
-e "ARIM_API_BASE_URL=https://monitor.arimair.com" `
-e "ARIM_MCP_USER=<아이디>" `
-e "ARIM_MCP_PASS=<비밀번호>" `
-- node C:\Users\<사용자>\arimair-mcp\build\index.jsIf you did not register a password, you can log in with the arim_login tool after connecting.
Environment variables
Variable | Default value | Description |
|
| Target server address. The installation script registers it fixed to this value, so you normally do not need to touch it; only change it to |
| — | Auto-login ID |
| — | Auto-login password |
|
|
|
|
| Request timeout (ms) |
If credentials are set as environment variables, the server auto-logs in on the first tool call, and if the session expires, it re-logs in once and retries.
Authentication method
The ARIM server does not issue JWTs; it authenticates via HttpSession + session cookie (Spring Session's SESSION).
The MCP stores the cookie received from the /account/login call and sends it with subsequent requests.
All requests include the X-Mcp-Client: 1 header. When this header is present, the server's AuthorizeInterceptor returns a 401 JSON instead of a 302 redirect to the login page, and the MCP treats this as session expiry and re-logs in.
Sites
Device, measurement data, statistics, and report queries are all based on the currently selected site.
Internally, the server uses the session's monitorId (the monitoring target administrator account), but the tools treat it as a "site."
This is the same as the site selection combo at the top of the web screen.
site_list → 선택 가능한 사이트와 현재 사이트
site_select { site: "울산 환경보건센터" } → 사이트 변경site_select accepts even a partial site name. Even if the words are in a different order than the registered name (e.g., the registered name is [환경보건센터] 울산 울산대), it will find it as long as all the words are present. It searches the display name (company), the contact person's name (name), and the siteId.
If there are multiple candidates, it does not pick one arbitrarily; it returns the candidate list (e.g., "환경보건센터" → 9 locations)
An exact name match takes precedence over partial matches (e.g., "도로교통연구원" →
arimsc_ex)
General user accounts see only approved providers; admin accounts see the full list (same rule as the web screen).
Tool list
Authentication
Tool | Description |
| Log in (can use environment variable credentials) |
| Query login status / monitorId / system settings |
| End session |
Sites
Tool | Description |
| List selectable sites and the current site |
| Change the query target site |
Devices
Tool | Description |
| Device list |
| Device details |
| Latest values for all devices (raw) |
| Latest values for all devices (corrected) |
| Nearby Air Korea stations |
Measurement data
Tool | Description |
| Period query (auto-switches between raw/hourly average/daily average by period) |
| Always queries minute-level raw data |
| Most recently collected data |
Statistics & weather
Tool | Description |
| Query average data |
| Collection rate (missing rate) by device × date |
| KMA station list |
| KMA observation history (hourly/daily) |
| Sensor metadata (unit, decimal places) |
Corrections
Tool | Description |
| Devices subject to correction and application status |
| Correction factor trend (last 12 months) |
| Time series comparison before/after correction |
| Correction factors for a specific application month |
| Correction model version history |
Reports
Tool | Description |
| Publication history |
| History details |
| List of target months for publication |
| New report (V2) HTML body |
Alarms
Tool | Description |
| Alarm occurrence history |
| Sensor threshold SMS notification settings |
Monitoring aggregation
Tool | Description |
| Operation/communication status aggregation |
| Normal operation rate |
| Collection count aggregation |
| Faulty/abnormal devices |
| Monitoring period query |
| Pollution rose |
Large response handling
Time series query tools accept maxRows (default 500). The server has no row limit, so even a single day of minute-level queries can produce over 1,400 rows; when exceeded, the server performs uniform interval sampling and returns totalRows / returnedRows / sampled in the response. The last (most recent) row is always preserved.
Server-side dependencies
This MCP assumes the following server changes.
Location | Change |
| Return 401 JSON when |
| Add |
| Add |
If /account/me and /setting/sensorlist are missing, only arim_whoami, sensor_list, and alarm_config_list (when adminId is omitted) will not work; the other tools will work normally. site_list also works, but without /account/me it cannot ask the server for the current site, so it displays the value selected via site_select in this session as the current site.
The site feature itself uses only existing APIs (/site/update/{id}, /admin/list, /datarequest/providerlist) without any server modification.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Read-only MCP server for ClassQuill, a tutoring-business-management platform.
MCP server for AI access to Swagger by SmartBear.
Autopilot MCP server for GEO analyses, reports, content, audits, memories and agents.
Latest 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/arim-science/arimair-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server