First, create your new MVC project (or load your existing one!)
Then add the Ninject.MVC nuget package:

We’ll also want the Neo4jClient package

Now we have those two, we can hook it up, first off we need to tell Ninject how to bind to Neo4jClient, I use a Module for this, so add this class to your project (usually I have them in a sub-folder called ‘Modules’ in the App_Start folder – but it can be anywhere):
public class Neo4jModule : NinjectModule
{
/// <summary>Loads the module into the kernel.</summary>
public override void Load()
{
Bind<IGraphClient>().ToMethod(InitNeo4JClient).InSingletonScope();
}
private static IGraphClient InitNeo4JClient(IContext context)
{
var neo4JUri = new Uri(ConfigurationManager.ConnectionStrings["Neo4j"].ConnectionString);
var graphClient = new GraphClient(neo4JUri);
graphClient.Connect();
return graphClient;
}
}
Now we just need to tell Ninject to load the module, so in the NinjectWebCommon.cs file (in the App_Start folder) edit the ‘RegisterServices’ method (at the bottom of the file) so it looks like:
/// <summary>
/// Load your modules or register your services here!
/// </summary>
/// <param name="kernel">The kernel.</param>
private static void RegisterServices(IKernel kernel)
{
kernel.Load<Neo4jModule>();
}
Lastly, we just need to inject into our controller, which is a case of adding a constructor (or modifying an existing one) to take an ‘IGraphClient’ instance:
private readonly IGraphClient _graphClient;
public HomeController(IGraphClient graphClient)
{
_graphClient = graphClient;
}
Now the controller has an instance of the graphclient to use as and when it pleases:
public ActionResult Index()
{
ViewBag.NodeCount = _graphClient.Cypher.Match("n").Return(n => n.Count()).Results.Single();
return View();
}

Obviously extending this, you could add a base ‘Neo4jController’ which any controllers requiring Neo4j override.