Within your course repository, create a directory "final" and create initial versions of the files required for the project. Commit and push to your remote repository.

cd <path_to_repo>
touch final/screencast_url.txt
mkdir final/server
touch final/server/Dockerfile final/server/server.py
mkdir final/client
touch final/client/client.py
git add final
git commit -m "initial commit for final"
git push

In this project, you will develop an MCP server that provides access to multiple APIs for an LLM agent. You will then develop an LLM client agent that can take natural language queries from the user and automatically perform the operations via tools the MCP server implements. The server must be deployed within a container deployed on Cloud Run. Projects will be graded on the level of functionality from the APIs that can be successfully leveraged by the client agent.

API ideas

Project Ideas

Your development should be organized and incremental, with frequent commits into your git repository. You must also ensure any API keys do not show up in your source files. Configuring credentials for Cloud Run services can be done via environment variables either via Google Cloud's Secrets Manager or in the deployment step using the --set-env-vars flag.

gcloud run deploy final --image gcr.io/... --set-env-vars APP_ID=e5c9382,API_KEY=cae2635...343

Upon completing your project, via a narrated screencast of no longer than 15 minutes, you will show the following in the exact order specified.

To ensure you are the one completing the screencast, your screencast MUST initially include a video of you narrating the walkthrough. It is recommended for you to record your screencast as a recorded screen share on Zoom. Note that, when logged into Zoom, recordings are automatically captured and uploaded to PSU's Media Space and can be accessed after a short time by visiting "My Media" within Media Space.

Application

All client and server code as well as the Dockerfile used to build the container implementing your MCP server should be pushed to your repository in the final directory.

Screencast

Upload your completed screencast on MediaSpace. Ensure that it is published as "Unlisted". To do so, visit MediaSpace and click on "My Media".

Click on the screencast video that has been uploaded. Then, in the tabs below, select the "Publish" tab, click on "Unlisted", and then "Save".

Then, update the file final/screencast_url.txt in your repository to contain the URL that your unlisted screencast on MediaSpace is located. Push the changes to your repository before the due date.

We will be using your screencast and git repository to evaluate your project.

Video of yourself within screencast

Demo of the setup, building, and deployment of the server

Demo of the client application

APIs implemented, level of functionality, and the creativity of the application

Code quality (clean with no unused code or variables, readable, modular, documented with Docstrings and comments, no hard-coded keys within source code)

Walkthrough quality including Dockerfile, source code, and description of development history via git commits

Instructions followed properly including presentation order of screencast, code submission in the specified repository files, and the length of the screencast