IEEE MCP Server
README.md
# IEEE MCP Server (Python)
A single [Model Context Protocol](https://modelcontextprotocol.io) server that
exposes **both Neo4j and Box** to an AI agent over HTTP. It's designed to run as
**one Azure App Service**, so the Databricks Supervisor needs only one MCP
connection to reach every tool.
> This is a standalone project. The existing Node `neo4j-mcp-server` and the
> original Box script are **not** affected — this combines their capabilities in
> one Python app for a single deployment.
## Tools
| Tool | Purpose |
|------|---------|
| `read_neo4j` | Run a read-only Cypher query (`MATCH` / `RETURN`). Write keywords are rejected. |
| `write_neo4j` | Run a write Cypher query (`CREATE` / `MERGE` / `SET` / `DELETE`). |
| `get_neo4j_schema` | Return the graph schema — labels, relationships, properties, connections. Call first so queries use the right structure. |
| `query_box` | Ask a natural-language question about documents stored in Box (Box AI, via a Strands + Bedrock agent). |
## Requirements
- Python 3.10+
- A Neo4j database (e.g. Neo4j Aura)
- A Box developer app + token (developer.box.com)
- AWS Bedrock access (the `query_box` model runs on Bedrock)
## Setup
```bash
cd ieee-mcp-server
python -m venv .venv
# Windows: .venv\Scripts\activate macOS/Linux: source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env # then fill in your real values
python server.py # serves on http://localhost:8000
```
Endpoints:
- `GET /health` — liveness check
- `POST /mcp` — the MCP endpoint (requires `Authorization: Bearer <MCP_SECRET_TOKEN>`)
## Environment
See `.env.example`. Key values:
| Variable | Description |
|----------|-------------|
| `NEO4J_URI` / `NEO4J_USERNAME` / `NEO4J_PASSWORD` | Neo4j connection |
| `BOX_DEVELOPER_TOKEN` | Box token (expires ~60 min; use Client Credentials Grant for production) |
| `BEDROCK_MODEL_ID` | Bedrock model for `query_box` (default `us.anthropic.claude-sonnet-4-5`) |
| `AWS_ACCESS_KEY_ID` / `AWS_SECRET_ACCESS_KEY` / `AWS_REGION` | AWS creds for Bedrock (or use an IAM role on Azure) |
| `MCP_SECRET_TOKEN` | Bearer token clients must present on `/mcp` |
| `HOST` / `PORT` | Listen address (default `0.0.0.0:8000`) |
> `.env` is git-ignored. Never commit real credentials.
## Expose to Databricks (dev)
```bash
ngrok http 8000
```
Register the public URL (`.../mcp`) as a UC/MCP connection in Databricks with
`Authorization: Bearer <MCP_SECRET_TOKEN>`.
## Deploy to Azure App Service (one app for all tools)
1. Push this folder to a repo.
2. Create a **Python** App Service.
3. Set the env vars from `.env.example` as **Application settings** (leave `PORT`
to Azure; provide AWS creds or attach a managed identity with Bedrock access).
4. Startup command:
```
python -m uvicorn server:build_app --factory --host 0.0.0.0 --port 8000
```
5. Point the Databricks MCP connection at `https://<app>.azurewebsites.net/mcp`.
## Project layout
```
ieee-mcp-server/
├── server.py # FastMCP app: Neo4j tools + Box tool
├── requirements.txt
├── .env.example
├── .gitignore
└── README.md
```
This server cannot be deployed
Maintenance
ActivitySlowing
ResponsivenessNo issues