JSON RPC Server with FastAPI and Python
This project implements a simple JSON-RPC server using FastAPI, Uvicorn, and jsonrpcserver in Python. It exposes add and multiply methods.
Setup
-
Clone the repository:
git clone <your-repo-url> cd json-rpc-server -
Create a virtual environment and install dependencies using
uv:uv venv .\.venv\Scripts\activate # On Windows # source .venv/bin/activate # On Linux/macOS uv pip install fastapi uvicorn jsonrpcserver
Running the Server
To start the development server with auto-reloading:
.\.venv\Scripts\activate # On Windows
# source .venv/bin/activate # On Linux/macOS
uv run python -m uvicorn main:app --reload
The server will run at http://127.0.0.1:8000/.
API Endpoints
GET /
A simple test endpoint to confirm the server is running.
Request:
# Using curl (Linux/macOS/Git Bash)
curl http://127.0.0.1:8000/
# Using Invoke-RestMethod (PowerShell)
Invoke-RestMethod -Uri "http://127.0.0.1:8000/" -Method Get
Response:
{
"message": "FastAPI is running!"
}
POST / (JSON-RPC 2.0)
This is the main JSON-RPC endpoint for add and multiply methods.
Add Method
Request:
# Using curl
curl -X POST -H "Content-Type: application/json" -d '{"jsonrpc": "2.0", "method": "add", "params": [2, 3], "id": 1}' http://127.0.0.1:8000/
# Using Invoke-RestMethod (PowerShell)
Invoke-RestMethod -Uri "http://127.0.0.1:8000/" -Method Post -Headers @{ "Content-Type" = "application/json" } -Body '{"jsonrpc":"2.0","method":"add","params":[2,3],"id":1}'
Response (Example):
{"jsonrpc": "2.0", "result": 5, "id": 1}
Multiply Method
Request:
# Using curl
curl -X POST -H "Content-Type: application/json" -d '{"jsonrpc": "2.0", "method": "multiply", "params": [4, 5], "id": 1}' http://127.0.0.1:8000/
# Using Invoke-RestMethod (PowerShell)
Invoke-RestMethod -Uri "http://127.0.0.1:8000/" -Method Post -Headers @{ "Content-Type" = "application/json" } -Body '{"jsonrpc":"2.0","method":"multiply","params":[4,5],"id":1}'
Response (Example):
{"jsonrpc": "2.0", "result": 20, "id": 1}
Multipl Methods in a sigal call
curl -X POST -H "Content-Type: application/json" -d '[{"jsonrpc": "2.0", "method": "add", "params": [2, 3], "id": 1},{"jsonrpc": "2.0", "method": "multiply", "params": [2, 30], "id": 2}]' http://127.0.0.1:8000/
Invoke-RestMethod -Uri "http://127.0.0.1:8000/" -Method Post -Headers @{ "Content-Type" = "application/json" } -Body '[{"jsonrpc":"2.0","method":"add","params":[2,3],"id":1},{"jsonrpc":"2.0","method":"multiply","params":[2,30],"id":2}]'
Install fastmcp
uv add fastmcp
Run MCP inspector
uv run fastmcp dev inspector TestMPCserver.py
Run MCP server
uv run fastmcp run TestMPCserver.py
Connect to cluade-desktop
uv run fastmcp install claude-desktop TestMPCserver.py
Run MCP server
uv run fastmcp run DataprovidersMCPServer.py
Connect to cluade-desktop
uv run fastmcp install claude-desktop DataprovidersMCPServer.py
uv add langchain langchain-openai langchain-mcp-adapters python-dotenv streamlit logging pandas fastmcp python-dotenv jsonrpcserver uvicorn streamlit langchain-ollama fastapi
uvicorn serversendevent:app
uvicorn Streamable:app
VS Code Debugging
A launch.json file is provided in the .vscode directory to enable debugging with VS Code. You can set breakpoints in main.py and run the "Python: FastAPI" configuration.