Lets AI agents control an astrophotography setup (camera, mount, focuser and more) through the N.I.N.A Advanced API.
接入配置
选择客户端,复制配置,再按项目文档补齐环境变量。
claude mcp add n-i-n-a-advanced-api --env IMAGE_SAVE_DIR='<IMAGE_SAVE_DIR>' --env LOG_LEVEL='<LOG_LEVEL>' --env NINA_HOST='<NINA_HOST>' --env NINA_PORT='<NINA_PORT>' -- uv run --with fastmcp,fastapi,uvicorn,pydantic,aiohttp,requests,python-dotenv fastmcp run path/nina_advanced_mcp.py~/.codex/config.toml
[mcp_servers.n-i-n-a-advanced-api]
command = "uv"
args = ["run", "--with", "fastmcp,fastapi,uvicorn,pydantic,aiohttp,requests,python-dotenv", "fastmcp", "run", "path/nina_advanced_mcp.py"]
env = { IMAGE_SAVE_DIR = "<IMAGE_SAVE_DIR>", LOG_LEVEL = "<LOG_LEVEL>", NINA_HOST = "<NINA_HOST>", NINA_PORT = "<NINA_PORT>" }
# codex mcp add n-i-n-a-advanced-api --env IMAGE_SAVE_DIR='<IMAGE_SAVE_DIR>' --env LOG_LEVEL='<LOG_LEVEL>' --env NINA_HOST='<NINA_HOST>' --env NINA_PORT='<NINA_PORT>' -- uv run --with fastmcp,fastapi,uvicorn,pydantic,aiohttp,requests,python-dotenv fastmcp run path/nina_advanced_mcp.py~/.cursor/mcp.json
{
"mcpServers": {
"n-i-n-a-advanced-api": {
"command": "uv",
"args": [
"run",
"--with",
"fastmcp,fastapi,uvicorn,pydantic,aiohttp,requests,python-dotenv",
"fastmcp",
"run",
"path/nina_advanced_mcp.py"
],
"env": {
"IMAGE_SAVE_DIR": "<IMAGE_SAVE_DIR>",
"LOG_LEVEL": "<LOG_LEVEL>",
"NINA_HOST": "<NINA_HOST>",
"NINA_PORT": "<NINA_PORT>"
}
}
}
}.vscode/mcp.json
{
"servers": {
"n-i-n-a-advanced-api": {
"type": "stdio",
"command": "uv",
"args": [
"run",
"--with",
"fastmcp,fastapi,uvicorn,pydantic,aiohttp,requests,python-dotenv",
"fastmcp",
"run",
"path/nina_advanced_mcp.py"
],
"env": {
"IMAGE_SAVE_DIR": "<IMAGE_SAVE_DIR>",
"LOG_LEVEL": "<LOG_LEVEL>",
"NINA_HOST": "<NINA_HOST>",
"NINA_PORT": "<NINA_PORT>"
}
}
}
}~/.gemini/settings.json
{
"mcpServers": {
"n-i-n-a-advanced-api": {
"command": "uv",
"args": [
"run",
"--with",
"fastmcp,fastapi,uvicorn,pydantic,aiohttp,requests,python-dotenv",
"fastmcp",
"run",
"path/nina_advanced_mcp.py"
],
"env": {
"IMAGE_SAVE_DIR": "<IMAGE_SAVE_DIR>",
"LOG_LEVEL": "<LOG_LEVEL>",
"NINA_HOST": "<NINA_HOST>",
"NINA_PORT": "<NINA_PORT>"
}
}
}
}claude_desktop_config.json
{
"mcpServers": {
"n-i-n-a-advanced-api": {
"command": "uv",
"args": [
"run",
"--with",
"fastmcp,fastapi,uvicorn,pydantic,aiohttp,requests,python-dotenv",
"fastmcp",
"run",
"path/nina_advanced_mcp.py"
],
"env": {
"IMAGE_SAVE_DIR": "<IMAGE_SAVE_DIR>",
"LOG_LEVEL": "<LOG_LEVEL>",
"NINA_HOST": "<NINA_HOST>",
"NINA_PORT": "<NINA_PORT>"
}
}
}
}.trae/mcp.json
{
"mcpServers": {
"n-i-n-a-advanced-api": {
"command": "uv",
"args": [
"run",
"--with",
"fastmcp,fastapi,uvicorn,pydantic,aiohttp,requests,python-dotenv",
"fastmcp",
"run",
"path/nina_advanced_mcp.py"
],
"env": {
"IMAGE_SAVE_DIR": "<IMAGE_SAVE_DIR>",
"LOG_LEVEL": "<LOG_LEVEL>",
"NINA_HOST": "<NINA_HOST>",
"NINA_PORT": "<NINA_PORT>"
}
}
}
}需要的环境变量
IMAGE_SAVE_DIRLOG_LEVELNINA_HOSTNINA_PORT
把占位值换成你自己的密钥;不要把密钥提交到代码仓库。